linux shell基礎知識

2021-08-10 07:12:40 字數 3858 閱讀 9542

單引號、雙引號和反引號

單引號不會去檢視改變引用的東西,但是雙引號會,反引號主要是命令方面的問題

舉個例子: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 ...