Shell常用命令(md格式方便閱讀和復(fù)制粘貼)

Shell

Shell中的變量

系統(tǒng)變量

$HOME 表示進(jìn)入當(dāng)前賬號的/home/用戶名     
示例:cd $HOME    pwd查看之后會發(fā)現(xiàn)當(dāng)前目錄已經(jīng)進(jìn)入到:/home/maowu   (maowu是當(dāng)前用戶名稱够傍,自己定義的甩骏。)

自定義變量

定義變量:變量=值    (注意:沒有空格镐确,沒有類型) 
撤銷變量:unset 變量
聲明靜態(tài)變量:readonly 變量  (注意:不能unset)

自定義變量規(guī)則

1.變量名稱可以為字母烦粒、數(shù)字和下劃線組成供填,不能以數(shù)字開頭,環(huán)境變量建議大寫魄懂。
2.等號兩側(cè)不能有空格鸭叙。
3.變量類型默認(rèn)為字符串,不能進(jìn)行運算能犯。
4.變量對應(yīng)的值有空格鲫骗,需要使用""或者''括起來。

Shell特殊變量

$n
概念:n代表數(shù)字悲雳,$0代表該腳本名稱 $1-$9代表第一到第九個參數(shù)挎峦,10以上的參數(shù)需要用{}包含,如:${10}
用途:主要寫在腳本文件里面合瓢,用來接收執(zhí)行腳本命令時傳遞的參數(shù)。如: xsync /opt/moudle    (注:xsync為自定義命令透典,可以在腳本文件里面用變量 $1 接受參數(shù):/opt/moudle)
$#
概念:獲取所有輸入?yún)?shù)的個數(shù)
用途:xsync aa bb cc   ($#可以在腳本文件里面表示一共有多少個輸入?yún)?shù)晴楔,當(dāng)前結(jié)果為3)
$*
概念:這個變量代表命令行中的所有參數(shù),把所有參數(shù)看成一個整體峭咒。
$@
概念:這個變量代表命令行中的所有參數(shù)税弃,每個參數(shù)是一個單獨的個體。
$?
概念:返回最后一次執(zhí)行命令的返回狀態(tài)凑队,0表示上一個命令正確執(zhí)行则果,非0表示不正常

運算符

$((運算式)) 或  $[運算式] 如:echo $((2+3)) 或者 echo $[2+3]
expr + - \* / % 加 減 乘 除 取余數(shù) (expr運算符間有空格,如:expr 2 + 3)

條件判斷

基本語法

[ condition ]   
注意:condition前后要有空格,除了能正常判斷為true或者false漩氨。條件非空即為true西壮,[  ]返回false,可以用echo $? 判斷上一次命令的結(jié)果叫惊,0為true款青,非0為false。

常用判斷條件

整數(shù)之間的比較

= 字符串比較
-lt 小于      -le 小于等于
-eq 等于      -gt 大于
-ge 大于等于   -ne 不等于

示例:
[ 23 -ge 23 ]
文件權(quán)限進(jìn)行判斷
-r 有讀的權(quán)限     -w 有寫的權(quán)限
-x 有執(zhí)行的權(quán)限
[ -r /opt/module/aaa.txt ]
文件類型進(jìn)行判斷
-f 文件存在并且是一個常規(guī)的文件
-e 文件存在(文件和文件夾都認(rèn)為是文件)                 -d 文件存在并且是一個目錄
A && B 當(dāng) A 為 true 才執(zhí)行 B     A || B 當(dāng) A 為 false 才執(zhí)行 B

流程控制

注意:以下所有示例代碼需要寫到文件里面:
     touch xxxx.sh   創(chuàng)建文件
     vim xxxx.sh     編輯文件
     ./xxxx.sh.      運行文件()

If判斷

基本語法
if [ conditon ];then
   程序
fi

或者

if [ conditon ]
   then
     程序
fi

或者帶elif

if [ conditon ]
   then
     程序
elif [ condition ]
   then
     程序
fi
注意:condition的前后空格,if霍狰,elif后要有空格抡草。

示例:
#!/bin/bash
if [ $1 = "1" ]
   then
     echo "輸入的數(shù)字為1"
elif [ $1 = "2" ]
   then
     echo "輸出的數(shù)字為2"
fi 

case語句

基本語法
case $變量名 in
    "值1")
       如果變量值等于值1,則執(zhí)行這里蔗坯。
       ;;
    "值2")
       如果變量值等于值2康震,則執(zhí)行這里。
       ;;
        *)
       如果變量值都不是以上的值宾濒,則執(zhí)行這里
       ;;
esac

示例:
#!/bin/bash
case $1 in
  "java")
  echo $JAVA_HOME
  ;;
  "hadoop")
  echo $HADOOP_HOME
  ;;
  *)
  echo "i have no idea"
  ;;
esac

for循環(huán)

基本語法
for(( 初始值;循環(huán)控制條件;變量變化))
   do
     程序
   done


或者
for 變量 in 值1 值2 值3
   do
     程序
   done 
   
示例:
#!/bin/bash
for((i = 0;i <= 100;i++))
   do
     s=$(($s + $i))
done
echo $s


#!/bin/bash
for i in $1 $2 $3
  do
    echo "武哥已經(jīng)掌握的知識有$i"
  done

* 和@加上""的使用區(qū)別

for i in "$*" 會將所有參數(shù)作為一個整體傳遞腿短,相當(dāng)于只有一個參數(shù)。
for i in "$@" 會將參數(shù)分開,有幾個參數(shù)就輸出幾個參數(shù)

while循環(huán)

基本語法
while [ conditon ]
   do
     程序
   done  

示例:
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
  do
    s=$[$s+$i]
    i=$[$i+1]
  done
echo $s

read讀取控制臺輸入

基本語法

read(選項)(參數(shù))
選項:
-p 指定讀取時的提示文字
-t 指定讀取時等待的時間
參數(shù):
 也就是變量答姥,指定讀取值的變量名

示例:
#!/bin/bash
read -t 7 -p "請在7秒內(nèi)輸入?yún)?shù):" NAME
echo $NAME

函數(shù)

系統(tǒng)函數(shù)

basename [string / pathname][suffix]  保留文件的最后一級的名稱铣除,傳入的時文件就保留文件

示例:
basename /home/maowu/bin/batch.sh
batch.sh

basename /home/maowu/bin/
bin

basename batch.sh
batch.sh

basename /home/maowu/bin/batch.sh .sh
batch
dirname 文件絕對路徑,返回文件的目錄部分

示例:
dirname /home/maowu/bin/batch.sh
/home/maowu/bin

自定義函數(shù)

[ function ]functionname[()]
{
    程序;
    [return int;]
}
functionname

注意:必須要調(diào)用函數(shù)之前就要聲明函數(shù)

示例:
#!/bin/bash
function sum(){
   s=0
   s=$[$1+$2]
   echo $s
}
read -t 5 -p "input a:" a
read -t 5 -p "input b:" b
sum $a $b

Shell工具

cut

概念:
在文件中負(fù)責(zé)剪切數(shù)據(jù)鹦付,cut從文件的每一行進(jìn)行剪切字節(jié)尚粘、字符和字段。

基本用法:
cut [選項參數(shù)] filename    默認(rèn)分隔符是制表符 \t
選項參數(shù):
-f 列號敲长,提取第幾列
-d 分隔符郎嫁,按照指定分隔符分割列
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市祈噪,隨后出現(xiàn)的幾起案子泽铛,更是在濱河造成了極大的恐慌,老刑警劉巖辑鲤,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盔腔,死亡現(xiàn)場離奇詭異,居然都是意外死亡月褥,警方通過查閱死者的電腦和手機(jī)弛随,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宁赤,“玉大人舀透,你說我怎么就攤上這事【鲎螅” “怎么了愕够?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長佛猛。 經(jīng)常有香客問我惑芭,道長,這世上最難降的妖魔是什么挚躯? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任强衡,我火速辦了婚禮,結(jié)果婚禮上码荔,老公的妹妹穿的比我還像新娘漩勤。我一直安慰自己,他們只是感情好缩搅,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布越败。 她就那樣靜靜地躺著,像睡著了一般硼瓣。 火紅的嫁衣襯著肌膚如雪究飞。 梳的紋絲不亂的頭發(fā)上置谦,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機(jī)與錄音亿傅,去河邊找鬼媒峡。 笑死,一個胖子當(dāng)著我的面吹牛葵擎,可吹牛的內(nèi)容都是我干的谅阿。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼酬滤,長吁一口氣:“原來是場噩夢啊……” “哼签餐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盯串,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤氯檐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后体捏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冠摄,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年几缭,在試婚紗的時候發(fā)現(xiàn)自己被綠了耗拓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡奏司,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出樟插,到底是詐尸還是另有隱情韵洋,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布黄锤,位于F島的核電站搪缨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鸵熟。R本人自食惡果不足惜副编,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望流强。 院中可真熱鬧痹届,春花似錦、人聲如沸打月。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奏篙。三九已至柴淘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背为严。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工敛熬, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人第股。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓应民,卻偏偏與公主長得像,于是被迫代替她去往敵國和親炸茧。 傳聞我的和親對象是個殘疾皇子瑞妇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

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

  • 內(nèi)建命令 所謂內(nèi)建命令,就是bash自身提供的命令梭冠,不是外部可執(zhí)行程序文件辕狰,可以用type來確定一個命令是否內(nèi)建命...
    張國立_0695閱讀 323評論 0 0
  • 越來越多的人加入了編程的大門蔓倍,我們首先要做的就是熟悉linux系統(tǒng)的命令,這是我們最為基礎(chǔ)的知識盐捷,這次詳細(xì)總結(jié)了一...
    單細(xì)胞空間交響樂閱讀 823評論 0 5
  • shell簡介 shell 腳本的優(yōu)勢在于處理偏操作系統(tǒng)底層的業(yè)務(wù)偶翅,例如,linux內(nèi)容的很多應(yīng)用都是使用shel...
    張國立_0695閱讀 340評論 0 0
  • Linux export shell會提供一組環(huán)境變量碉渡。export可新增聚谁,修改或刪除環(huán)境變量,供后續(xù)執(zhí)行的程序使...
    滾石_c2a6閱讀 545評論 0 0
  • (還在更新跟進(jìn)哦滞诺,歡迎指點形导、收藏、引用喲~) 125.last 用于顯示用戶近登錄信息126....
    Amdur閱讀 1,727評論 1 75