學習shell有一段時間了, 一直懶於學習更多的用法, 趁着現在工作中有用到的機會, 打算好好掌握之. 這篇筆記是讀<unix shell 編程>的筆記, 進行了一些改動, 以實例爲主.
Chapter 1 複習基礎命令和知識
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
基礎命令和知識
常用命令: ls, echo, cp , mv , mkdir, rm , rmdir ,cd,ln,date, who/who am i,cat ,wc
概念和知識點:
2> 標準輸入和標準輸出的概念
3> 輸入重定向和輸出重定向的概念. > 和 >> 的區別.
4> 管道連接命令的概念
5> shell默認的有限字符匹配功能. ?: 匹配1個字符, *:匹配0-n個字符. 例如 ls *file*.txt
部分命令用法:
cat filename: 查看文件內容
ln fromfile tofile: 建立文件鏈接. 用windows的術語, 就是建立快捷方式. ln有兩種鏈接方式, 請用 man ln 查看更多細節.
wc filename: 統計文件的單詞個數. (注: wc表示 word count, 在K&R的<C Programming Language>裏能看到算法)
wc 和 sort 都可以在命令行輸入多行字符串, 用ctrl + d 結束輸入. 試試:
wc -l <敲回車>
This is text <敲回車>
is typed on the standard input device <敲回車, ctrl+d>
練習:
# 輸出重定向例子. 現在輸出並不是顯示在控制檯, 而是在文件中.
who > users.txt
who >> users.txt
#輸入重定向例子. wc的輸入是文件users.txt
wc -l < users.txt
#重定向錯誤. 並沒有asdf這個命令, 所以shell會報錯, 但錯誤信息重定向到了文件. 注意, 2和>之間不能有空格.
asdf 2> errors.txt
#管道連接. 某個命令的輸出可以作爲另一個命令的輸入, 中間用 | 連接
who | wc -l
#有趣技巧. 一行鍵入多條命令
date;pwd;who
實用技巧:
#往文件寫簡單的內容時, 不需要用文本編輯器打開文件再編輯, 直接用 >> 命令即可. 例如, 這條命令把某個源添加到debian的source文件:
echo "This is a source " >> /etc/apt/source.list