01_Linux學習筆記(一)

帅的一塌糊涂呀發表於2024-03-29

1.Linux筆記一

#可以參考影片https://www.bilibili.com/video/BV1Jx411D7yV/?spm_id_from=333.1245.0.0&vd_source=5ea97e0bbcee855721ba8ddd95d6e26f
date #輸出當前時間
cal  #列印本月日曆
cal 2020  #列印2020年的日曆
cal 1 2020 #列印2020年1月份日曆
cal 5 1 2020 #列印2020年1月日曆,並選中1.5日
pwd #顯示當前所在資料夾
ls -l #執行後若最左邊有drwxr--xr-r,最左字母是d則是資料夾,最左邊是-則是檔案
clear #清楚當前螢幕(就是把有內容的一直往上劃了下)
mkdir 資料夾名稱  #在當前位置新建資料夾
rmdir 資料夾名稱  #刪除某非空資料夾
cp 檔案a 檔案b  #複製檔案a,並將新檔案命名為檔案b
cat 檔名 #檢視檔案內容
diff 檔案a 檔案2   #比較兩個檔案內容差異  返回空則代表檔案一模一樣 ,否則會提示在某個位置差異在哪
head 檔案a #檢視檔案頭內容
head 檔案a -n 5  #檢視檔案a的前5行
tail 檔案b #檢視檔案尾內容
tail 檔案b -n 6 #檢視檔案b後6行內容
wc 檔案a  #word count  檢視檔案中有幾個單詞 
-->數字a 數字b 數字c 檔名  【總共有a行,a行中有b個單詞,a行中或者b個單詞中共有c個字元】
#結果的第一個數字a表示檔案共有多少行
#結果的第二個數字b表示這些行中共有多少個單詞
#結果的第三個數字b表示這些行中共有多少個字元
wc -w 檔案a #檢視檔案a有多少個單詞
wc -l 檔案a #檢視檔案a有多少行【line】chmod
wc -c 檔案a #檢視檔案a中有多少個字元
rm 檔名 #刪除某檔案【這樣就完全被刪除了 找不回】
mv 檔案1 檔案2 #將檔案1命名為檔案2
mv 檔案1 資料夾1/  #將檔案1移動到資料夾1【注意大小寫是敏感的】
less 檔案a #檢視檔案內容 less命令類似於檔案瀏覽器,使用 less 檔名稱 能夠使用上下左右鍵檢視檔案中的內容,按 【q】 能夠返回命令列模式,退出檢視
#三段 u g o  分別為作者、小組成員、其他,其中分別有r、w、x,即#讀、寫、執行
chmod u-r 檔案1 #去掉作者對該檔案的讀許可權
chmod u+r 檔案1 #加上作者對該檔案的讀許可權
chmod go-r 檔案1 #只有作者有讀許可權,小組和其他沒有,go即g和o
chmod 444 檔案1 #為三者ugo都賦予讀的許可權  rwx作為2進位制,取001 010 011 100 101 110 111,然後換算成十進位制數,1 2 3 4 5 6 7 ………… 
grep 欄位1 檔案1 #檢視檔案1中是否有欄位1  有的話則返回該欄位以及包含該欄位的字串,且為紅色
grep ll* 檔案1  #在檔案1中查詢至少出現一次的帶l的字串【*代表很多次】
grep ^H 檔案1  #在檔案1中查詢以大寫字母H開頭的的所有字串  如Hello,【Ac Hello就不算】
grep ^Ho 檔案1  #在檔案1中查詢以字母Ho開頭的的所有字串  如Hello,【Ac Hello就不算】
grep H.ll 檔案1   #在檔案1中查詢H開頭,接下來是任意一個字母,然後是ll的字串
grep [Hh]ill 檔案1 #在檔案1找Hi或者hi開頭的然後是ll的字串。【Hh】代表可以是大H,也可是小h
grep [A-Za-z]ill 檔案1 #在檔案1找出任意含有[?ill]的字串
grep [A-Za-z]ill 檔案1 | wc #計數檔案1找出任意含有[?ill]的字串的數量
grep [A-Za-z]ill 檔案1 | wc -l #輸出件1找出任意含有[?ill]的字串的行數
>和<叫redirect(重定向符號)
ls > 1.txt #新建1.txt,並輸出【已含有1.txt】當前資料夾下所有的檔名和資料夾名到1.txt中
sh a.sh   #手動執行a.sh指令碼  檔案
#echo是shell的輸出,相當於c的printf,
#變數前邊需要加$,如a=10  echo $a  ,切記 賦值時不要使用$,使用變數要先加$,且不能有多餘的空格
#如a = 10 是錯誤的【賦值的地方不能有空格,運算子左右兩邊要有空格】
echo "字串"  #輸出字串,有沒有雙引號都行,但建議有
expr用來計算式子,
#如 a=10 b= 3 c=`expr $a + $b` echo $c 【式子用``括起來】【運算子左右要有空格】
#如 a=10 b= 3 c=`expr $a \* $b` echo $c 【式子用``括起來】【運算子左右要有空格】,乘法的時候加個\來轉義,否則*會被作為匹配所有的意思,加減乘除+-*/只有乘號*需要轉義,()也需要轉義,\(,\)
if語句語法,if開頭 fi結尾 
if[……]
then
……
else
……
fi
比較數字時符號是
不等號 -ne  即not equal 
等於號 -eq  即equal 
大於號 -gt  即greater than
小於號 -lt  即less than
大於等於號 -ge  即greater equal
小於等於號 -le  即less equal
而不是=  >=  <=  >  <  <> !=

迴圈語句
for 變數x in ……   #如 for x in 1 2 3 4 5 6 7 8 9 10代表x在1-10中迴圈,然後執行do裡的語句
do 
……
done
#也可以 for x in {1..10},但是看版本支援不支援了
while [ 條件 ]  #注意[右邊  和  ]左邊都有一個空格
do
……
done
#如
x=1
while [ $x -le 10 ]
do
echo $x
x=`expr $x + 1`
done
#linux字串的處理[加不加雙引號都行]
a="hello"
b=world 
echo $a $b  等價於echo "$a $b"

read a  #輸入a【猶如c語言的scanf】,此時不用加$
#如
echo "Please enter a"
read a 
比較字串相等是=
linux中if進行比較時括號裡是一個=,其他語言是兩個==
比較字串不相等!=
str3="$str1 $str2" #linux拼接字串,並以空格相隔,不加空格就連著了
if[ -z $str1 ]  #判斷str1是不是空字串【是不是0】  -z是zero,代表為空【差不多是布林型】
if[ -n $str1 ]  #判斷str1是不是非空字串【是不是非0】  -n是不為空,與-z相反

陣列
arr=(a b c d)
程式碼中有字串或者陣列,就別用sh *.sh了,使用bash *.sh才不報錯
下標也是從0開始,記得用{}括起來
輸出陣列arr中b的值,echo ${arr[1]}
打出全部的內容,需要用迴圈
如分別列印:
for i in ${arr[@]}  #此時i是元素本身的值,而不是相應的下標
do
echo $i
done
求和
sum=0
for i in ${arr[@]}  #此時i是元素本身的值,而不是相應的下標
do
echo sum=`expr $sum + $i`
done
echo $sum

找最大值
sum=${arr[0]}
for i in ${arr[@]}  #此時i是元素本身的值,而不是相應的下標
do
if[ $i -gt $max ]
then 
max=$i
fi
done
echo $max

vim example.c  #此時會新建example.c檔案,並進入編輯頁面,然後寫c指令碼
gcc example.c -o example  #進行編譯
./example    #執行

#指令碼中的程式碼可以拆出來在外邊一句一句執行

全域性變數【global virable】【大寫】
$USER   
echo $USER  #輸出當前使用者名稱稱
$HOME
echo $HOME 或者echo ~     #輸出使用者主目錄,$HOME等價於~
$PATH
echo $PATH  #輸出本機的環境變數,每個環境變數之間是以分號:隔開的,但windows是分號;

[root@iZ2ze02j36rdfvh1ip1indZ lds]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


環境變數

檢視demo.c當前所在目錄
比如在/usr/lds,想要在其他路徑下執行lds下的demo.c
那麼需要將其加入到環境變數中就可以了
PATH=$PATH:/usr/lds          #【linux是以分號:隔開的】
【原來的變數$PATH  拼上:  需要加的變數即/usr/lds】
環境變數要小心修改,要是PATH=/路徑   會把所有的環境變數清空掉

#常用linux命令
zip a.zip *  #將當前路徑下所有檔案打包壓縮到壓縮包a中【下邊會顯示壓縮率】
zip a.zip -r /usr/*  #將usr下所有檔案和資料夾進行壓縮, -r代表遞迴【包含子資料夾】
unzip a.zip #進入到a.zip所在資料夾後執行該命令,進行解壓
tar -zcvf a.tar.gz /usr/lds/    #進行壓縮
#z代表使用gzip進行壓縮,
#c是建立目標【壓縮】,
#v是顯示壓縮過程,
#f是重新命名,如a.tar.gz
tar -zxvf a.tar.gz /usr/lds/    #進行解壓縮
#注意:c變成x了,解壓,這幾個字母順序並不固定

wget url #下載檔案
wget url -O 新名字.tar.gz  #將下載的壓縮包命名成新名字的【大寫的O】 

less命令類似於檔案瀏覽器,使用 less 檔名稱 能夠使用上下左右鍵檢視檔案中的內容,按 【q】 能夠返回命令列模式,退出檢視

相關文章