學(xué)習(xí)筆記 | 常用Linux Shell命令

本文是最常用惋增、最基礎(chǔ)的Linux Shell命令紀(jì)錄阀蒂,可用于查閱

注意

  • 定義變量時(shí)"="兩邊不能有空格
  • 條件測(cè)試語(yǔ)句"["符號(hào)兩邊都要留空格
  • 條件測(cè)試的內(nèi)容,如果是字符串比較的話猜旬,比較符號(hào)兩邊都要有空格

示例

  1. 第一行#! /bin/bash转捕,表示該腳本采用的bash語(yǔ)法。如果不設(shè)置改行則腳本可能不會(huì)被執(zhí)行耗式。

     #! /bin/bash
     echo "ts" >> /home/cdh/yangjunqiang/weibo/error.log 2>&1
    
  2. 將sh腳本添加執(zhí)行權(quán)限胁住,就可以直接./filename執(zhí)行腳本

     chomd a+x filename
    
  3. 查看腳本的執(zhí)行過(guò)程,便于腳本的調(diào)試

     sh -x filename
    

常用命令

  1. date 打印當(dāng)前系統(tǒng)時(shí)間

     date "+%Y%m%d %H:%M:%S"
     date "+%y%m%d"
    
     #-d 可以實(shí)現(xiàn)對(duì)時(shí)間的加減
     date -d "-1 day" "+%Y%m%d"
     date -d "-1 month" "+%Y%m%d"
    
     #星期幾
     date +%w
     
     #獲取昨天的日期
     date_=$(date -d "-1 day" "+%Y-%m-%d")
     #獲取十二小時(shí)之前的時(shí)間
     time_=$(date -d "12 hour ago" "+%H:%M:%S")
    
  2. awk

    類似Java split分隔文本刊咳,默認(rèn)是以空格分隔彪见,$1...$n是指分隔之后的域,從1開始娱挨,$0表示所有的域
    print $0 表示輸出所有的域

     //-F指定分隔符余指,不指定的話默認(rèn)是空格
     awk -F":" '{print $1}' 
    
  3. grep

    grep -v 反向選擇,顯示出沒有指定字符的結(jié)果
    grep -v grep //排除帶grep的命令

     #! /bin/bash
     #獲取運(yùn)行的Java process pid跷坝,排除grep自身的pid
     #先篩選包含java的結(jié)果酵镜,再篩選結(jié)果里里包含 "java -jar"的process
     pid=$(ps -ef | grep "java" | grep 'java -jar' | grep -v grep | awk '{print $2}')
     echo $pid
    
  4. 重定向:將結(jié)果輸出到文件,而不是標(biāo)準(zhǔn)輸出到屏幕

    >:寫入文件并覆蓋原有內(nèi)容
    >>:在原文件的末尾繼續(xù)寫入柴钻,不會(huì)覆蓋原有內(nèi)容

  5. 管道(|):將一個(gè)命令的輸出作為另一個(gè)命令的輸入

     //在hello.txt文件里搜索包含hello的行并計(jì)數(shù)
     grep "hello" hello.txt | wc -l
    

變量

  • 變量的引用需要加上"$"淮韭,最好都跟上{}

  • read x 手動(dòng)輸入,從終端獲取輸入的值

  • 1,n 腳本的預(yù)設(shè)變量贴届,可以在腳本運(yùn)行時(shí)跟上作為參數(shù)

      sh test.sh 1 2
      //1就是$1的值 2是$2的值
    
  • $# 傳遞給腳本的參數(shù)個(gè)數(shù)

  • $0 腳本本身的名字

  • $@ 傳遞給腳本的所有參數(shù)的列表

  • $* 以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù)

  • $$ 腳本運(yùn)行的當(dāng)前進(jìn)程ID

  • $! shell最后運(yùn)行的后臺(tái)process的PID

  • $? 顯示最后命令的退出狀態(tài)靠粪,0表示沒有錯(cuò)誤蜡吧,其他表示有錯(cuò)誤

      #! /bin/bash
      #測(cè)試變量sh
      echo "number:$#"
      echo "scname:$0"
      echo "first :$1"
      echo "second:$2"
      echo "argume:$@"
      echo "show parm list:$*"
      echo "show process id:$$"
      echo "show precomm stat: $?"
    

判斷參數(shù)個(gè)數(shù)

   if [ $# -gt 0 ];then
        echo "參數(shù)個(gè)數(shù)為$#"
   fi

判斷語(yǔ)句

if ((a>10)) ; then
    echo "這里是代碼段"
elif ((a>2)) ; then
    echo "注意(()),這是一種格式"
else
    echo "else代碼段"
fi 
  • 整數(shù)比較:還可以使用[ ]。但是就不能使用>, < , =占键,要使用 -lt (小于)昔善,-gt (大于),-le (小于等于)畔乙,-ge (大于等于)君仆,-eq (等于),-ne (不等于)牲距。
  • 字符串比較: == 或者 =
  • 判斷字符串是否非空: if [ -n "${String}" ] 不為空為true 注意加雙引號(hào)

判斷檔案屬性

-e :判斷文件或目錄是否存在
-d :判斷是不是目錄返咱,并是否存在
-f :判斷是否是普通文件,并存在
-r :判斷文檔是否有讀權(quán)限
-w :判斷是否有寫權(quán)限
-x :判斷是否可執(zhí)行


if [ -e filename ] ; then 

case語(yǔ)句

case $a in
0)
    echo "a=0"
    ;;
1)
    echo "a=1"
    ;;

循環(huán)語(yǔ)句

for循環(huán)

for i in `seq 1 5`; do
    echo $i
done

while循環(huán)

#! /bin/bash
a=10
while [ $a -ge 1 ];do
    echo "$a"
    a=$[$a-1]
done

#循環(huán)條件可以忽略掉
while :; do
    ehco "沒有條件的while"
done

字符串操作

  • 字符換拼接

      back_name=${BACKTIME}"_"${db_name}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嗅虏,一起剝皮案震驚了整個(gè)濱河市洛姑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌皮服,老刑警劉巖楞艾,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異龄广,居然都是意外死亡硫眯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門择同,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)两入,“玉大人,你說(shuō)我怎么就攤上這事敲才」桑” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵紧武,是天一觀的道長(zhǎng)剃氧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)阻星,這世上最難降的妖魔是什么朋鞍? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮妥箕,結(jié)果婚禮上滥酥,老公的妹妹穿的比我還像新娘。我一直安慰自己畦幢,他們只是感情好坎吻,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宇葱,像睡著了一般禾怠。 火紅的嫁衣襯著肌膚如雪返奉。 梳的紋絲不亂的頭發(fā)上贝搁,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天吗氏,我揣著相機(jī)與錄音,去河邊找鬼雷逆。 笑死弦讽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膀哲。 我是一名探鬼主播往产,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼某宪!你這毒婦竟也來(lái)了仿村?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤兴喂,失蹤者是張志新(化名)和其女友劉穎蔼囊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衣迷,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡畏鼓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了壶谒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片云矫。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汗菜,靈堂內(nèi)的尸體忽然破棺而出让禀,到底是詐尸還是另有隱情,我是刑警寧澤陨界,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布巡揍,位于F島的核電站,受9級(jí)特大地震影響普碎,放射性物質(zhì)發(fā)生泄漏吼肥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一麻车、第九天 我趴在偏房一處隱蔽的房頂上張望缀皱。 院中可真熱鬧,春花似錦动猬、人聲如沸啤斗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)钮莲。三九已至免钻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間崔拥,已是汗流浹背极舔。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留链瓦,地道東北人拆魏。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像慈俯,于是被迫代替她去往敵國(guó)和親渤刃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容