linux之shell常用命令介紹

來源:互聯網
上載者:User

標籤:

一、cd    切換目錄

    cd /etc  切換到/etc目錄下              cd ~       切換到主目錄下

    cd  ..      返回上級目錄                     cd ../..  返回上兩級目錄

    cd  -       返回進入此目錄之前所在的目錄

 

二、echo    輸出

    echo "this is a test!"        顯示一般字元串:

    echo -e "\n"         輸出一行空行,-e 開啟轉義

    echo `date`          顯示命令執行結果

三、chmod    授予使用許可權

    chmod abc file    基本格式

    其中a,b,c各為一個數字,分別表示User、Group、及Other的許可權,許可權可分為:r=4 表示可讀取,w=2 表示可寫入,x=1 表示可執行。

    若要rwx屬性則4+2+1=7;

    若要rw-屬性則4+2=6;

    若要r--屬性則為4。

 

四、cat   查看檔案

1)列印檔案內容:

    cat cat1.txt    列印單個檔案內容

    cat cat1.txt cat2.txt    列印多個檔案內容,將檔案內容拼接在一起

    echo "Test" | cat - cat1.txt    將標準輸入和檔案內容拼接在一起

    在上面的代碼中 - 被作為stdin文本的檔案名稱

2)列印檔案內容時常用參數:

    cat -n cat3.txt    列印檔案內容及行號,會為空白行加上行號

    cat -b cat3.txt    列印檔案內容及行號,跳過空白行

    cat -s cat3.txt    壓縮相鄰的空白行

3)從鍵盤建立一個檔案:

    cat > cat4.txt    只能建立新檔案,不能編輯已有檔案

4)將幾個檔案合并為一個檔案:

    cat cat1.txt cat2.txt cat3.txt > cat5.txt

 

五、sed    文本編輯文本

1)本機覆寫:

    sed ‘s/world/sed/‘ sed1.txt?

    僅替換每行的第一個匹配者,不會修改源檔案

    sed ‘s/world/sed/2‘ sed1.txt??

    替換每行的第2個匹配者?

2)全域替換:

    sed ‘s/world/sed/g‘ sed1.txt

    替換檔案中的所有匹配者

3)替換的字串使用Regex:

    sed ‘s/^hello.*/sed/g‘ sed1.txt

4)分界符/可以替換成# ; *等字元

    sed ‘s*world*sed*g‘ sed1.txt

5)刪除字元:

    sed ‘/^$/d‘  sed1.txt    刪除sed1.txt中的空行

6)如果操作的字串中包含變數,要將變數再次用單引號引起來:

    b="sed"

    sed ‘s/world/‘$b‘‘ sed1.txt?

    否則變數名直接當做字串處理

7)直接操作源檔案:?

    sed -i ‘s/world/sed/‘ sed1.txt?

8)一次性替換多個:?

    sed -e ‘s/hello/this is/g‘ -e ‘s/sed/the sed/g‘ sed1.txt?

9)替換動作包含在檔案中:?

    vim ./test.sed

    s/hello/this is/g?

    s/sed/the sed/g?

    sed -f test.sed sed1.txt? > sed2.txt   --儲存在新的檔案中

    sed -i -f test.sed sed1.txt?   --直接作用在源檔案中

 

六、read    接受鍵盤資料和讀取檔案

1)read接受從鍵盤的輸入:

    read -p "Enter your name: " name

    echo "Hello $name"

    如果不指定變數,那麼read命令會將接收到的資料放置在環境變數REPLY中:

    read -p "How old are you? "

    echo "I‘m $REPLY"

2)接受多個資料:?

    ?read -p "Enter your name and age: " name age

    echo "My name is  $name, and I‘m $age."

3)計時輸入:?

 ?   read -t 3 -p "Enter your name: " name

4)默讀:

    read -s -p "Enter your password: " password

    echo "Your password is $ password "

    輸入的密碼不會顯示在螢幕上。

5)讀檔案:?

    vim ./test.txt

    first

    second

    third

    vim ./read4.sh

    cat -n test.txt | while read line

    do

        echo $line

    done

 

七、awk    進階文本處理

1)基本結構介紹:

    awk ‘BEGIN{ commands }  { commands }  END{commands }‘ file

    awk命令也可以從stdin中讀取:

    echo | awk ‘BEGIN{ commands }  { commands }  END{ commands }‘

    awk指令碼通常由3部分組成:BEGIN,語句塊,EDN,3部分都是可選項,在指令碼中可省略任意部分。

    其中BEGIN和END關鍵字必須大寫,awk的指令碼內容要包含在單引號或者雙引號內,awk指令碼使用print輸出。

    所有的commands之間用分號隔開。

2)awk工作原理:?

    (1)執行BEGIN{ commands }?語句

    (2)從檔案或者stdin中讀取一行,然後執行{ commands },重複這個過程,直到檔案全部讀取完畢

    (3)當讀至輸入資料流末尾時,執行END{ commands }中的語句

3)從檔案中讀取行:?

    awk ‘BEGIN{ print "start" } { print } END{ print "end" }‘ awk1.txt

    語句塊中使用不帶參數的print時,它會列印從stdin或者檔案中讀取到的當前行。

4)從標準輸入中讀取行:?

     echo -e "line1\nline2" | awk ‘BEGIN{ print "start" } { print } END{ print "end" }‘

5)省略BEGIN:

     awk ‘{ print } END{ print "end" }‘ awk1.txt

6)再省略END:

    awk ‘{ print }‘ awk1.txt

7)省略語句塊:

    awk ‘BEGIN{ print "start" } END{ print "end" }‘ awk1.txt

8)語句塊工作原理:

    從檔案或者標準輸入讀入有‘\n‘分行符號分割的一條記錄,然後將該條記錄  按指定的分隔字元劃分欄位,$0則表示該條記錄所有欄位,$1表示該條記錄第一個欄位,$n表示該條記錄第n個欄位。預設分隔符號是"空白鍵" 或 "[tab]鍵"。

9)其它一些特殊變數:

    NR:表示記錄數量,在執行過程中對應於當前行號。

    NF:表示欄位數量,在執行過程中對應於當前的欄位數。

    舉例:

    awk ‘{ print $0 }‘ awk2.txt   --列印全部的常值內容

    awk ‘{ print NR,NF,$3 }‘ awk2.txt  --列印每行第3列的常值內容

    awk ‘END{ print NR }‘ awk2.txt      --統計檔案中的行數

    awk ‘END{ print NF }‘ awk2.txt      --統計檔案中的列數

    awk -F ‘;‘ ‘{ print $2 }‘ awk3.txt      --輸出第二個欄位

 

八、ssh    linux之間遠程登入

    ssh [email protected]_ip     終端遠程登入到目標機器

    ssh [email protected]_ip  "command; command;…"

    遠程登入目標機器執行各種shell命令,命令之間用分號隔開

 

九、scp    Linux之間複製檔案和目錄

    1、從本地複製到遠程

    scp -r local_folder [email protected]_ip:remote_folder

    scp -r local_folder remote_ip:remote_folder

    2、從遠程複製到本地

    scp -r [email protected]_ip:remote_folder local_folder

 

十、重新導向

    command > filename      ">" 表示標準輸出到filename中,如果檔案不存在,則建立檔案,已存在,則覆蓋檔案中原有的內容

    command >> filename    ">>" 表示標準輸出到filename中,如果檔案不存在,則建立檔案,已存在,追加到原有檔案的後面

    command >> filename 2>&1     “2>&1”是將錯誤輸出重新導向到標準輸出,這裡的標準輸出已經重新導向到了filename ,即將錯誤輸出也重新導向到filename檔案中   

 

十一、rm    刪除檔案和目錄

1)刪除檔案:

    rm rm1.txt   刪除rm1.txt

    rm rm2.txt rm3.txt  依次刪除指定的兩個檔案

2)刪除目錄:

    rm -r dir1      通過-r參數刪除目錄

    注意:上面方法刪除檔案或目錄都會詢問使用者是否刪除,如果想直接刪除,通過指定參數-f

    rm -f rm4.txt   直接刪除檔案rm4.txt

    rm -rf dir2        直接刪除目錄dir2

3)顯示執行過程資訊:

    rm -vf  rm5.txt   直接刪除檔案rm5.txt ,並顯示執行過程資訊

    rm -vrf dir3         直接刪除dir3目錄,並顯示執行過程資訊

4)使用Regex:

    rm -vf *.log    刪除目前的目錄下的所有.log檔案

    rm -vrf *rm*  刪除所有名字中包含rm字元的檔案和目錄

 

十二、cp    複製檔案和目錄

1)複製檔案:

    cp cp1.txt cp2.txt        目前的目錄下複製檔案

    \cp cp1.txt cp2.txt      當目標檔案已存在,通過\cp強制複製

    cp cp1.txt /root/cp2.txt    跨目錄複寫檔案

2)複製檔案、目錄到新的目錄(新的目錄必須已經存在):

    cp cp1.txt dir1  複製一個檔案到目錄dir1中

    cp cp1.log cp2.txt dir1     複製多個檔案到目錄dir1下

    cp -r dir2 dir1   複製目錄dir2到目錄dir1中

3)使用Regex

    cp *.log dir3     把目前的目錄下所有的.log檔案複製到dir3目錄下

    cp -r dir1/ * dir3     複製dir1下的所有檔案以及目錄到dir3中

4)常用參數:

    cp -v cp1.txt cp3.txt    顯示執行過程資訊

    cp -i cp1.txt cp3.txt     如果目標檔案已存在,複製前先詢問使用者

 

十三、free    檢查記憶體的使用方式:

    -b 、 -k 、 -m     以Byte、 KB、 MB為單位顯示記憶體使用量情況

    -s<間隔秒數>  持續觀察記憶體使用量狀況

 

十四、mkdir    建立目錄

    mkdir dir   僅可建立普通的不含有子目錄的目錄

    mkdir -p dir /dir1    可建立含有子目錄的目錄

    注意:指定的目錄名不能是目前的目錄中已有的目錄

 

十五、let     對變數進行數值計算

    a=1       let "a+1"      echo &a       輸出結果為2

 

十六、ls    列出目標目錄中所有的子目錄和檔案

    ls /root  列出/root目錄下的內容

    也可以先cd命令進入到/root目錄下,然後執行ls:

    cd /root

    ls  -lh     #列出檔案詳細資料,檔案大小以KB為單位,每行只列出一個檔案資訊

 

十七、df    檢查檔案系統的磁碟空間佔用情況

    df -h    根據目前磁碟空間的使用方式 以更易讀的方式顯示

 

十八、mv    檔案和目錄重新命名、移動

1)檔案、目錄重新命名:

    mv mv.txt new_mv.txt    檔案重新命名

    mv dir new_dir       目錄重新命名

2)移動檔案到目錄中(目標目錄必須已經存在):

    mv new_mv.txt mv.log dir1    移動目前的目錄下多個檔案到dir1中

    mv dir1/new_mv.txt dir2     移動dir1目錄下的new_mv.txt到dir2中

3)移動目錄到新的目錄中(新目錄必須已存在):

    mv dir1 dir2   將dir1移動到dir2中

4)使用Regex

    mv dir2/*.txt dir3    把dir1裡的所有.txt檔案移動到dir3

5)常用參數 :

    mv -f  dir3/new_mv.txt dir    當dir下已存在該檔案時,直接強制覆蓋

    mv log1.txt -b log2.txt      先對log2.txt備份(名字為log2.txt~)再覆蓋

    mv -t dir2 log1.txt log2.txt   移動多個檔案到dir2中,目標目錄在前

 

十九、tr    字元操作(替換、刪除、壓縮等)

1)字元轉換(替換):

    echo "TEST" | tr ‘A-Z‘  ‘a-z‘

    echo  "abc adf" | tr ‘abc‘ ‘xyz‘

    這裡是將"a"替換成"x","b"替換成"y","c"替換成"z",而不是將整個字串"abc"替換成"xyz"

2)刪除字元:

    cat cat_tr.txt | tr -d  ‘0-9‘

3)壓縮字元

    echo "tesssssssst" | tr -s ‘s‘

4)摒除多餘的空行:

    cat cat_tr.txt | tr -s  ‘\n‘

    tr將多餘的"\n"字元合并為單一的"\n"

 

二十、find    尋找檔案

1)基本格式:

    find path -option [-print] [-exec -ok command] {} \;

    -print 將尋找到的檔案輸出到標準輸出
    -exec command {} \;  對查到的檔案執行command操作
    -ok 和-exec相同,只不過在操作前要詢使用者
2)常用的命令選項:?

    -name   按照檔案名稱尋找檔案
    -perm    按照檔案許可權來尋找檔案
    -user      按照檔案所屬使用者來尋找檔案
    -group   按照檔案所屬的組來尋找檔案

    -size       按照檔案大小來尋找檔案

    -type      尋找某一類型的檔案,諸如:b 塊裝置檔案;d 目錄;

                    c 字元裝置檔案;p 管道檔案;l 符號連結檔案;f 普通檔案

    -empty  尋找空白檔案、沒有子目錄的檔案夾

3)舉例:

    find /root/linux-shell/find -name ‘*.txt‘   --指定尋找路徑

    find ./ -name ‘*dir1‘     --尋找目前的目錄下名字為dir1的檔案或者目錄

    find ./ -name ‘*dir1‘ -type d    --尋找名字為dir1的目錄

    find ./ -name ‘*dir1‘ -type f     --尋找名字為dir1的普通檔案

    find ./ -perm 777        --按照檔案許可權尋找檔案或者目錄

    find . -user oscar         --尋找所屬使用者為oscar的檔案或者目錄

    find . -group oscar      --尋找所屬組為oscar的檔案或者目錄

    find . -size +50k           --尋找大於50k的檔案

    find . -size +50k -size -100k    --尋找大於50k小於100k的檔案

    find . -empty         --尋找空白檔案或者空檔案夾

    find . -name ‘*.log‘ -exec cat {} \;   --尋找檔案並查看檔案內容

    find . -name ‘*.log‘ -exec cp {} new_find.log \;  --尋找檔案並複製

 

二十一、sar    系統效能分析工具之一

    sar是一個Linux系統效能分析工具之一,基本格式:

    sar [options] [t] [n]

    t為採樣間隔,n為採樣次數,預設值是1

    常用options:

        -u:輸出CPU使用方式的統計資訊

        -r:輸出記憶體和交換空間的統計資訊

        -b:輸出I/O和傳輸速率的統計資訊

        -d:輸出每一個塊裝置的活動資訊

        -x:進程ID

    sar -u 2 3   每2秒採樣一次,連續採樣3次,監控CPU 的使用方式

    sar -r 2 3   每2秒採樣一次,連續採樣3次,監控記憶體和交換空間使用方式

    sar -b 2 3   每2秒採樣一次,連續採樣3次,監控緩衝區的使用方式

    sar -d 2 3   每2秒採樣一次,連續採樣3次,監控裝置使用方式

    sar -u 2 3 -x pid  每2秒採樣一次,連續採樣3次,監控pid的CPU 的使用方式

 

二十二、ps靜態結果輸出某個時間點的程式運作情況

    ps aux

    ps -ef  

    兩個命令均能查看目前所有正在記憶體當中的程式,不同點,第一個還包含程式的cpu、記憶體使用量率。

    ps -ef | grep oscar   查看含有oscar字串的進程的使用方式

 

二十三、top動態輸出程式的變化

1)top命令舉例:

    top -b -n 2 > /tmp/top.txt

    top 批次的方式更新2次,並將結果資訊存到 /tmp/top.txt檔案中

    top -d 3 -n 3   -p pid 

    每間隔三秒監控一次進程號為pid的進程使用方式,共更新3次

2)在 top 執行過程當中常用的按鍵指令:

    P :以 CPU 的使用資源排序顯示

    M:以 Memory 的使用資源排序顯示

    N :以 PID 來排序

linux之shell常用命令介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.