linux shell環境減號”-”的用途

轉自:http://www.wallcopper.com/linux/588.html

在shell環境下常常用到  “-” 符號,有些用途大家都耳熟能詳,可有些乍一看可能還反應不過來。這篇文章寫的算是比較全的了,拿過來分享下。

連字符:年輕人稱之爲dash,年長者稱之爲minus,英文名稱hyphen(連字符),minus sign(減號),或虛線

減號”-”就是代表標準輸出/標準輸入, 視命令而定. “-”代替stdin和stdout的用法,stdin就是標準輸入,stdout就是標準。

1,爲應用程序指定參數。
如ps -aux,tar -zxf test.tar

2.一個減號和兩個減號

一個減號後面跟的參數必須是單字符參數,可以多個參數寫在同一個減號後面。
例如:tar -xvf ×××

兩個減號後面跟的參數必須是多字符參數,一個“–”只能跟一個參數。
例如:tar –version

3 表示上一級工作目錄。如cd -
cd -

4 普通用戶切換到root
su -相當於su – root

5、通過ssh傳送文本
cat id_rsa.pub |ssh -p322 [email protected] ‘cat – >> ~/.ssh/authorized_keys’

6、表示標準輸出流。如tar -cvf – /home | tar -xvf -
tar -cvf – /home 把/home壓縮後,打印在stdout上
| 管道,即前一命令的輸出爲後一命令輸入
tar -xvf - 從stdin讀取內容,並在當前目錄解壓

複製的例子
tar cf – access.log |tar xf – -C /opt

7、純粹是演示 ‘-’
grep -xvf a b 可以寫成
cat a | grep -xvf – b

8、
腳本中可以這樣在crontab裏添加一個任務
{ crontab -l; echo “* * * * * /bin/date >> /tmp/log” ; } | crontab -

9、在文件頭添加一行,也可以這樣玩
cat – file <<<“line num 1″

10、只取一列並與另一文件做diff
awk ‘{ print $1 }’ a | diff – b

11、例子, 在當前我要打包1個文件夾 /var/log/ 到當前目錄下,並用zip壓縮,
那麼我們可以分步執行
#tar -cvf log.tar /var/log/
#zip -r log.tar.zip log.tar
#rm -rf log.tar

寫成一條語句就是
tar -cvf log.tar /var/log/ && zip -r log.tar.zip log.tar && rm -rf log.tar
那麼我們可以發現第一條語句的輸出(log.tar) 就是第二條語句的輸入
這種情況下我們可以用 “-” 來取代這個輸出輸入
直接執行如下語句就ok了
tar -cvf – /var/log | zip -r log.zip -
意思就是 第一條語句不再輸入到1個具體文件,而輸出到stdout中, 而作爲第二條件的標準輸入(stdin), 而stdin 和 stdout都可以用“-”來取代。
這樣的話就不會有中間文件生成了~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章