天天看點

《Linux指令、編輯器與Shell程式設計》讀書筆記2-linux常用指令

Linux基本指令

1. 路徑表示:

./ 目前目錄

../上一級目錄

/ 根目錄

~目前使用者的家目錄

2. ls檢視檔案清單,下面列出常用參數

-a 顯示隐藏檔案

-l 以長格式顯示檔案清單

-d 顯示目錄的詳細資訊

-k 以kB為機關顯示檔案大小

-S 按檔案大小進行排序

-h 以更直覺的方式檢視檔案清單,必須和-l配合使用才有效果

3. ln檔案連結指令,也就是建立快捷方式

ln [option] target link_name

使用-s參數、建立軟連結,不帶任何參數、建立硬連結

*軟硬連結的差別:軟連結就可以直接了解成是快捷方式;硬連結可以看成是源檔案的一個副本,隻不過這個副本會随着源檔案的改變而改變;同時要注意,軟連結可以跨分區建立,但硬連結不可以

4. 檔案名,最多允許有256個字元,不能包含/,同時也不推薦使用系統保留的、有特殊意義的符号(比如?$*等),如果确實需要使用這些特殊符号命名,需要在該特殊符号前面加\屏蔽。Linux中也允許同一目錄中同時出現同名的檔案夾和檔案。

5. mkdir -p /a/b/c:按路徑建立所有目錄

6. cp -R 複制目錄;cp -p 複制時保留權限;cp <file> file.iso 制作CD光牒鏡像

7. rmdir:删除空目錄

8. file:檢視檔案類型 file -L:檢視連結指向的源檔案的檔案類型

9. cat -v:檢視檔案内容并同時顯示其中的控制字元

10. tail -n:使用時,n要換成數字,檢視指定的後n行 tail -f:從行尾開始動态顯示變化的内容

11. head -n:使用時,n要換成數字,檢視指定的前n行

12. more和less:分頁顯示檔案内容,more可以和其他指令通過|合用

13. diff -C n file1 file2:文本内容比較指令,n表示上下文行數(也就是隔n行顯示一次差異,一般設為1即可)

14. 文本統計指令wc

統計某文本檔案的字數:wc -w filename

統計檔案行數:wc -l filename

15. 檢視某年某月的月曆:cal month year

如:cal 2 2015

16. 修改日期:

首先修改時區:tzselect

修改系統日期:date -s MM/DD/YY

修改系統時間:date -s HH:MM:SS

将系統時間同步到硬體時鐘:hwclock --systohc

(将硬體時鐘的時間同步到系統時間:hwclock --hctosys)

*關機時,SUSE會自動将作業系統時間同步給硬體始終

17. 檢視連線登入使用者的詳細資訊:finger

18. 檢視使用者占用資源的情況:w

19. 與連線使用者通信指令:

wall information 向所有使用者發送公告

write user_name 和某使用者進行即時通信

mesg n 拒絕其他使用者的消息

mesg y 接受其他使用者的消息

20. 以root身份運作高權限指令的sudo操作

首先要将指定的使用者放到/etc/sudoers檔案中,具體位置是

root ALL=(ALL) ALL的下面,再加一行與此相同的行,将root改成username即可,比如:username ALL=(ALL) ALL

以後,username就可以通過全路徑的方式執行root才有權限執行的指令,如/sbin/ifconfig指令 

*這裡說下上面三個ALL的意義,第一個ALL表示所有用戶端計算機,第二個表示所有使用者,第三個表示所有指令,和前面的使用者名加在 一起,就表示:允許此使用者通過任何終端連接配接,并運作所有使用者的所有檔案和指令。

如果不想給某使用者設定這麼大的權限,可以進行更詳細的設定,詳見:

http://m.blog.csdn.net/blog/u011648187/12995535

http://www.2cto.com/os/201203/122820.html

21. which

顯示某個指令的位置,以絕對路徑的方式 

*這裡說下$PATH,當一個使用者輸入一個指令後,系統會在該變量鎖包含的目錄中查找指令并執行對應的指令檔案

22. locate,需要slocate軟體支援;安裝後會在本地建一個索引資料庫,每天更新一次索引,是以,通過這個搜尋有可能搜不到最新變更的檔案。

23. whereis 更擅長搜尋一些特殊檔案,比如二進制檔案、源代碼等。

24. apropos 關鍵字搜尋;他會給出關鍵字都被包含在哪些指令的man手冊中,以供學習

25. echo 回顯指令

-n 輸出結束後不換行,不加的話則換行

-E 禁用轉義字元(預設)

-e 啟用轉義字元

*這裡的轉義字元即指C語言中的轉義字元

此指令使用比較靈活,可以嵌套變量是其輸出目前值,比如:

echo "Host $HOST_DOWN_NAME non-response,time is: `date +'%Y-%m-%d %T'`"

注意date前後的反引号(1左邊的鍵),$後面是一個變量名,如果不存在則輸出空。

配合重定向輸出錯誤資訊:

echo "Input error"1>&2

*注:!号在有些shell裡屬于保留字元

26. 接受使用者輸入指令read [ [option] [parameter] name

option:

a 将輸入的文本按字段放入數組,預設分隔符為空格(或tab),數組下标從0開始;比如:

例:read -a name;echo "your name: ${name[*]}"

也可以隻顯示數組中某幾個元素的内容:

例:read -a name;echo "your name: ${name[0]} ${name[1]}"

d 指定結束符,預設為換行,比如:

例:read -d "$" NAME; echo "Hello $NAME"!

當輸入$号時,預設輸入結束

e 從标準輸入讀取時、使用readline庫擷取輸入,此時可以使用倒退、方向鍵進行簡單行編輯

例:echo -n "Please enter your message:"; read -e MESS;echo "your message is: $MESS"

如果不加-e的話,試圖回退、插入字元會打出莫名其妙的符号;

n 接收指定長度的字元數n;

例:read -n 2 name;echo $name

p 将指定的字元創輸出到标準錯誤,并讀取輸入,比如:

例:read -p "Unexpected error, press y key to continue. " Flag;echo "Being restored, please wati..."

r 将讀取到的字元串按字段放到不同的變量中,bash shell中預設的分隔符為空格、tab,比如:

例:echo -n "Please enter the four strings: "; read -r v1 v2 v3 v4; echo -e "$v1\n$v2\n$v3\n$v4"

如果分隔符不想用空格,可以修改變量IFS來修改分隔符:

IFS="#";echo -n "Please enter the four strings: "; read -r v1 v2 v3 v4; echo -e "$v1\n$v2\n$v3\n$v4"

事後用IFS=" "改回原來的空格為分隔符

s 先鎖住螢幕,然後從标準輸入中讀取字元;一般在需要使用者輸入密碼等敏感資訊時使用,也就是輸入的字元不在螢幕上顯示(但其實已經錄入到對應的變量名中)

例:echo -n "Please enter your password:";read -s Pass; echo -e "\nYour password is: "$Pass

t 如果使用者在指定的時間内沒有輸入動作,則結束讀取狀态

例:DEF=y;echo -n "Please select yes or no[y|n]:"; read -t 3 DEF;echo -e "\nInput timeout, Use the default options[y]."

如果逾時沒有動作,則使用預設值(DEF=y)。

u 從指定的檔案描述符中讀取,如果沒有特别指定,則以換行符作為結束讀取标記,即按行讀取檔案内容

例:詳見29;

27. 郵件指令mail

mail -s 郵件主題 -c 密送位址 -b 抄送位址 username,[email protected] < file.txt

上面的意思是指将file.txt中的内容,以-s後面的主題,發送出去

檢視郵件時,直接輸入mail,會顯示目前的未讀郵件,使用f參數檢視已讀郵件,q為退出目前郵件并将其存入mbox中,x為直接退出

使用mail -f /var/spool/mail/user1檢視使用者user1的未讀郵件

28. 追加指令tee

......| tee -ia a.txt

-i: 忽略内容中的标準錯誤

-a: 以追加的形式将...加到檔案結尾;如果不加該參數則會以覆寫的方式寫入

29. 啟動新shell指令:exec

如下,使用 檔案描述符讀取某檔案前三行的例子:

ifconfig > ifconfig.txt;exec 3<ifconfig.txt ;read -u 3 LINE;read -u 3 LINE1;read -u 3 LINE2;echo -e "$LINE \n $LINE1 \n $LINE2";exec 3<&-

該指令長被用來處理檔案描述符,此時exec不會啟動新shell替代目前shell;在上面的例子中,現将3這個檔案描述符指向ifconfig.txt檔案,之後使用read -u從描述符3中讀取3次,并 用echo輸入讀取到的内容。最後的exec 3<&-表示關閉檔案描述符3。由于使用read指令連續3次讀取檔案的過程中沒有關閉檔案描述符3,是以讀取到的内容是檔案的前三行。

*檔案描述符0、1、2是系統保留的;使用和關閉時要指明,否則可能導緻目前shell關閉;關于檔案描述符更詳細的内容,見:

http://blog.csdn.net/cywosp/article/details/38965239

輸出檔案描述符的例子:

exec 4>name_list;echo -n "Please enter a string:";read NAME1;echo -n "Enter the 2nd string:";read NAME2; echo -e "the first string: "$NAME1"\nThe 2nd string:"$NAME2>&4;exec 4>&-;cat name_list

繼續閱讀