Shell指令碼基本命令

來源:互聯網
上載者:User

標籤:bash   shell   linux   

shell指令碼運行方式
$sh script.sh$sh /home/path/script.sh$chmod a+x script.sh ; $./script.sh

echo的三種使用方式echo hello world 不能包含一些特殊關鍵字,如分號;
echo "hello word" 不能包含一些特殊字元,比如!
echo ‘hello word" 包含‘$var‘變數不能被求值


echo預設會將一個分行符號追加到輸出後,如果想禁止,可以使用-n這個選項
如果想要使某些逸出字元生效,則可以使用-e這個選項,如 
echo "\ta\tb" 會輸出 \ta\tb
echo -e "\ta\tb" 則會輸出 a b


顯示某些進程的環境變數
[[email protected] ~]$ pgrep bash3182[[email protected] ~]$ cat /proc/3182/environ USER=hadoopLOGNAME=hadoopHOME=/home/hadoopPATH=/usr/local/bin:/bin:/usr/binMAIL=/var/mail/hadoopSHELL=/bin/bashSSH_CLIENT=192.168.1.1 5649 22SSH_CONNECTION=192.168.1.1 5649 192.168.1.10 22SSH_TTY=/dev/pts/0TERM=vt100SELINUX_ROLE_REQUESTED=SELINUX_LEVEL_REQUESTED=SELINUX_USE_CURRENT_RANGE=



算術運算

使用 let、(())、[]執行基本的算術運算。

如let a = b+c; let a++;let a--;
也可以使用[], a=$[b+c];  a=$[$b+5]
也可以使用(()),不過都需要在變數前加上$
刪除變數:unset


tee

tee命令:以stdin作為輸入,將其輸入到某個檔案中,並原樣輸出



顯示變數

set 顯示當前shell的變數,包括目前使用者環境變數和自己定義的變數

env 顯示目前使用者環境變數
export 顯示當前置出成使用者變數的shell變數


關聯陣列即 Map
[[email protected] ~]$ declare -A map_array[[email protected] ~]$ map_array[index1]=val1[[email protected] ~]$ map_array[index2]=val2[[email protected] ~]$ echo ${map_array[*]}val1 val2[[email protected] ~]$ echo ${!map_array[*]}index1 index2

cat 作用:讀取、顯示、拼接檔案內容。
將AB兩個檔案內容一塊輸出 [[email protected] ~]$ cat A B
將輸入文本與A一塊顯示 [[email protected] ~]$ echo "Hello" | cat - A
壓縮空白行 cat -s  A
將定位字元顯示為^|  cat -T A
顯示文本行號 cat -n A


find 作用:尋找路徑及子路徑下所有的檔案和檔案夾
尋找script目錄下所有的檔案
[[email protected] ~]$ find script/script/script/timing.logscript/output.session


根據檔案名稱或Regex匹配搜尋
[[email protected] ~]$ find script/ -name "t*" #必須用引號括起來[[email protected] ~]$ find script/ -iname "t*" #忽略檔案名稱的大小寫


可以用OR串連多個條件
[[email protected] ~]$ find script/ \( -name "t*" -o -name "out*" \)#注意空格script/timing.logscript/output.session


可以使用參數指定尋找深度
 -maxdepth 1 #指定尋找的最大深度

 -mindepth 1 #指定尋找的最小深度,即只列出1層以上的檔案清單


 根據檔案類型搜尋

 -type d #只列出檔案夾  -type f #只列出普通檔案


 此外還可以根據時間和檔案大小,還可以使用-delete刪除找到的檔案。
 -exec 可以對查出的每一個檔案分別進行處理,如將檔案所有者root改為hadoop:
 [[email protected] temp]$ sudo find . -type f -user root -exec chown hadoop {} \;

xargs 作用:將標準輸入轉換成命令列參數或者將單行或多行文本轉換成命令列參數
[[email protected] ~]$ cat A | xargs #將A檔案多行資料轉換成單行輸入,即將分行符號替換為空白格[[email protected] ~]$ cat A | xargs -n 3#將A檔案多行資料重新分割並按3個進行分組[[email protected] ~]$ cat A | xargs -d i #指定分隔字元為 i

 小提示:xargs 預設是以空白字元 (空格, TAB, 分行符號) 來分割記錄的, 因此檔案名稱 file 1.log 被解釋成了兩個記錄 file 和 1.log, 不幸的是 rm 找不到這兩個檔案.為瞭解決此類問題, 讓 find命令在列印出一個檔案名稱之後接著輸出一個 NULL 字元 (‘‘) 而不是分行符號, 然後再告訴 xargs 也用 NULL 字元來作為記錄的分隔字元. 這就是 find 的 -print0 和 xargs 的 -0 的來曆吧.


sort和uniq
[[email protected] ~]$sort A #對A檔案進行升序排序[[email protected] ~]$sort -r A #對A檔案進行逆序排序[[email protected] ~]$sort -n A #對A檔案按數字進行排序[[email protected] ~]$sort -k 2 A #根據第二列進行排序


uniq總是和sort一起使用,可以消除重複的行

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.