單引號、雙引號和反引號
單引號不會去檢視改變引用的東西,但是雙引號會,反引號主要是命令方面的問題
舉個例子:var=123 給變數賦值為123
var2=''123
echo $var2
var2=123 單引號不會改變引號裡面的值
假設換成了雙引號
var=123
var2=""123
echo $var2
var2=123123 雙引號會把那個變數裡面的東西裝進去。
反引號假設有乙個命令ls
var=`ls`
echo $var//這樣就相當於執行了ls命令
$() === $``,可以用小括號來代替單引號
var=$(ls)和var=`ls`效果一樣,都是將ls執行的值賦給var變數
echo $(var),這裡會顯示出來
cut命令切割,cut -d' ' -f2:-d表示用什麼來作為分隔符,-f2表示顯示第二列。類似awk命令,列編輯,awk '',顯示第二列,awk預設以空格作為分隔符。
sort命令會按照ascii碼來排列,比如雜亂排序打頭的a z k 之類,通過sort就會a k z這樣排序。
uniq:是去重複的意思,就是去掉重複的行。
統計用的最多十個命令:
history |awk '' |sort|uniq -c|sort -nr|head
sort -nr:表示從大到小來排列。
sort -n:表示從小到大來排列
head表示取出前面十個。
別名:alias
unalias:取消別名
alias 『ls -l』:這裡只能用單引號,如果用雙引號的話,會解析引號裡面的內容。
任何情況下,輸入cd都會回到家目錄,想要讓alias別名永久生效,可以到家目錄下面的/etc/profile這個檔案裡面加一行laias ...
首先在你的當前目錄下面輸入cd命令,然後回車,然後在/etc/profile檔案裡加入alias 'll=ls -l'這樣就永久生效了。但是一般不寫在這個檔案裡面,而是寫到
.bashrc檔案。初始化本地的時候,就會載入.bashrc檔案。
改完以後要source一下,source .bashrc。
halt:關機命令
script -a action.log -t 2>time.log
script -a記錄當前錄製的命令,-t表示記錄的時間點
2:表示這個命令從標準錯誤輸出重定向到time.log
按ctrl+d退出錄製。
錄製出來的存放在action.log 和time.log
expr 1+2
a=1b=2
expr $a + $b
expr $a \* $b
expr $a / $b
a=1let a=a+1讓a=a+1
echo $[1+2]
c=$[1+2]
echo $c
echo $((1+2))(())速度是最快的,內建命令
echo $((1*2))
echo 1+2+3|bc//bc是乙個計算器,只能接受從管道裡流出來的
雙括號計算是最常用的:echo $(($a+$b))和echo $[$a+$b]
shell產生隨機數:
echo $random
迴圈10000次,列印偽隨機數,將輸出結果重定位到1.txt檔案當中
for i in `seq 10000` ; do echo $random >> 1.txt;done
列印1.txt檔案當中長度小於等於3的數,wc -l統計多少行
cat 1.txt | awk '' | wc -l
隨機生成0-9的隨機數,模10,取出來肯定是0-9
echo $((random%10)) echo $[random%10]
隨機生成數字和字母組合的隨機數,並且取出隨機數前面六位
echo $random|md5sum|cut -c 1-6
檢視字串的長度:echo $,這樣檢視字串a的長度
ctrl+z:暫停指令碼執行
ctrl+c:終止命令
fg:暫停的任務恢復到前台來執行
bg:暫停的任務到後來的執行
jobs:檢視當前有幾個任務暫停了,有幾個任務在工作
fg %1:第乙個指令碼前台執行。
a.sh指令碼
#!/bin/sh -
for i in `seq 100`
doecho "script is running"
sleep 1
done
假設在編輯乙個檔案,要去檢視一些man手冊,可以使用ctrl+z來暫停這個程序,就會回到桌面,然後輸入fg又會回到編輯模式。
小括號問題:
a=123 變數a的值是123
(echo $a) 子shell中a的值也是123
(a=abc) 子shell中的a的值是abc
雙小括號:可以求值,比如 echo $((1+2)),將列印3
花括號:不存在子shell的問題,比如要建立九個檔案。可以用花括號:touch test。相當於乙個序列
使用花括號快速備份:cp smb.conf
中括號:假設檢視檔案test1 test2 test3,可以使用中括號選擇範圍:ls test[1-3] -l
shell的內建變數都是大寫的。
$random $path $lang
$?:上乙個命令執行成功了,$?為0,否則為非0
ping -c 4 "www.baidu.com"執行4次
$? 為0,表示執行成功了
現在的標準輸出是/dev/null這個空洞檔案,2>&1,就是表示標準錯誤輸出重定向到/dev/nul裡面
which ls找到ls命令在**
利用cat寫入檔案命令:
ca t >> pwb.txt << eof
>eof讀到與上面那個標記符一樣的就退出
tr命令:
tr ' ' '\n'tr是將空格轉換成換行
tr '2' '0',把2換成0
統計檔案中有多少個1111
^1111$,以1111打頭的
cat abc.txt|tr ' ' '\n' |grep ^1111$|wc -l
cat abc.txt | grep -o "1111" -o表示輸出的意思,只匹配1111
cut -d' '按照空格來切割,-f2列印第二列。
cat temp | cut -d' ' -f2
tac命令和cat命令類似,輸出的結果會反過來。
比如cat 輸出的結果是:
1223
1234
1121
而tac的結果是:
1121
1234
1223
^$分別是什麼開頭,什麼結尾,中間什麼都不加表示空格
grep -v ^$,反向選擇,就是過濾掉空行。
cat -n 顯示行號。
取出ip位址
ip=$(ifconfig ens33|grep "inet addr"|cut -d':' -f2|cut -d' ' -f1)
使用awk來過濾,awk -f指定冒號或者空格為分隔符,[ :]+後面那個加號表示多個,就是多個空格也是分隔符,在後面就是列印第四列
ip=`ifconfig ens33|grep "inet addr"|awk -f'[ :]+' ''`
linux shell 指令碼基礎知識學習
shell指令碼 1 指定指令碼執行的shell 2 注釋 3 命令或語法結構 echo 輸入內容 echo 輸出空行 執行 1 shell 指令碼 sh example 2 給shell指令碼執行許可權 chmod u x example 案例 example sysinfo.sh 3abc x ...
linux shell指令碼基礎知識筆記
shell指令碼一般是用來幫助管理員來管理自己的伺服器的 所以一般shell指令碼是放在自己的家目錄序下面的,供自己來呼叫管理 1.首先 在自己家目錄下面建立目錄 mkdir shell 2.編寫shell指令碼的時候 首行都是以 bin bash開頭的 在讀取的時候 會按照shell的語法來解析該...
linux shell基礎知識整理 二
bash支援一維陣列 不支援多維陣列 並且沒有限定陣列的大小。類似於 c 語言,陣列元素的下標由 0 開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於 0。在 shell 中,用括號來表示陣列,陣列元素用 空格 符號分割開。定義陣列的一般形式為 陣列名 值1 值2 ...