《Linux命令、編輯器與Shell編程》讀書筆記1-linux系統入門命令(跟風到底,一探究竟)

《Linux命令、編輯器與Shell編程》讀書筆記1-linux系統入門命令http://blog.csdn.net/victory_xing126/article/details/46287633


一、關閉、重啓系統

1. 1小時後關機

shutdown -h 1

2. 立即關機

shutdown -h now

poweroff

3. 在指定時間點關機

shutdown -h 15:30

4. 2分鐘後重啓

shutdown -r 2

或者立即重啓

reboot

shutdown -r now

5. 掛起(需要硬件支持,否則可能無法恢復)

halt

6. init命令

[plain] view plain copy
  1. 0:立即關機  
  2. 1:單用戶模式(相當於win裏面的安全模式),可以通過該模式修改root密碼  
  3. 2:維護模式,網絡相關的服務會停止  
  4. 3:完全多用戶模式,正常工作下用到的模式  
  5. 4:未分配使用,開發模式  
  6. 5:圖形模式  
  7. 6:重啓  


二、幫助命令

1. 同時執行多個命令,用;分開

2. 分割長命令:\

3. 查看某個命令的詳細功能:

help command

或者 command --help

4. man手冊:是一個文檔形式,操作同vi編輯器

(1)man command

(2)man number conmmand

[plain] view plain copy
  1. number代表的含義:  
  2. 1:用戶命令,所有用戶都可以查閱其中的內容  
  3. 2:系統調用,開發人員使用  
  4. 3:庫函數  
  5. 4:設備文件  
  6. 5:文件格式描述,通常指配置文件的文檔   
  7. 6:遊戲  
  8. 7:其他雜項  
  9. 8:只能給root用戶使用的管理命令和工具等  
  10. 9:其他  

(3)查找包含某個關鍵字的命令:

man -k keyword

5. info信息頁

info command|filename

文檔中的*號表示超鏈接,選中按回車可以跳轉


三、Linux的人機交互程序——Shell

1. Shell的種類:

可以通過cat /etc/shells查看目前OS上安裝了哪些Shell;通過shell_name --version查看該Shell的版本號

查看Shell程序相關的信息:(注意下面的命令裏是反單引號)

ls -l `cat  /etc/shells`

2. 更改用戶的默認shell

(1)臨時修改:

顯示當前用戶使用的Shell:echo $SHELL

直接輸入要使用的Shell名來臨時更改當前Shell,如:ksh,bash,csh

此時,再查看當前正在使用 的shell名,仍然是之前的名字,但實際上變更後的shell是運行在原shell下的一個子shell,現在已經是更改後的shell了

(2)永久修改:

方法一:用su - username切換到要被更改shell的用戶下,然後鍵入chsh命令,系統提示輸入新Shell的路徑,可以用上面說過的cat /etc/shells命令查看;

方法二:usermod -s shell_path user_name

當此用戶重新登錄後,就可以使用新的shell了 

方法三:創建用戶時指定默認shell:

useradd -s shell_path user_name

關於useradd命令更詳細的使用後面會講,或者自己通過man手冊學習

*除非特殊說明,本書後面都默認使用bash shell講解


四、Bash命令基本操作:

1. 指定默認編輯器:set -o vi|emacs

2. bind命令

(1)查看默認綁定的快捷鍵:bind -P

(2)命令格式:

[plain] view plain copy
  1. bind [option] [ [function name] [keyseq:shell-command] [file name] [ keyseq:readline-function or readline-command ] ]  
  2. keyseq:readline-function:指一組快捷鍵,如\C表示ctrl鍵,\C-x表示同時按ctrl+x;readline-function表示要綁定的函數名稱  
  3. option:  
  4.     l:列出所有可用的Read裏呢函數名   
  5.     P:列出所有快捷鍵  
  6.     p:列出當前Readline庫中的函數名稱及綁定  
  7.     f filename:從文件filename中讀取綁定  
  8.     r keyseq:取消由keyseq快捷鍵指定的所有綁定  
  9.     x keyseq:shell-command:爲keyseq指定的快捷鍵綁定由shell-command指定的shell命令;還可以使用x參數綁定一個程序  
  10.     m keymap:使用參數keymap指定的鍵盤映射  
*上面說的readline函數庫是指readline/readline.h中定義的函數,可以通過bind -l查看;這個函數庫完成了linux中的相當一部分操作,比如中斷(ctrl+c)、回刪、上翻/下翻命令等,絕大多數快捷鍵定義都是針對這個函數庫中的函數進行。

(3)修改或定義新的快捷操作,比如將回刪功能重新定義成ctrl+x:

bind "\C-x":backward-delete-char

綁定應用程序,比如把vi綁定給ctrl+alt+v:

bind -x '"\C-\M-v":vi'

綁定一個shell命令,如ctrl+a=ls -l:

bind -x '"\C-a":ls -l'

(4)保存修改的快捷鍵,否則重登陸或系統重啓,這些設置會丟失

按鍵映射默認保存在兩個文件中:/etc/inputrc和~/.inputrc,前者對所有登錄的用戶都生效,後者則只對家目錄對應的用戶生效

方法一:bind -P >~/.inputrc

方法二:echo 'export $INPUTRC=/etc/inputrc' >>~/.bash_profile

方法三:向.bash_profile或.bashrc文件中追加以下內容:

if [ -f ~/.inputrc ] then

bind -f ~/.inputrc

fi

方法四:上面三種方法只能保存readline庫的快捷鍵,自定義的程序和shell命令不會被保存

在用戶家目錄下新建.custom_bind文件,內容爲綁定命令 :

bind -x '"\C-\M-x":ls -l'

bind -x '"\C-\M-v":vi'

然後編輯用戶家目錄下的shell腳本文件(文件名根據用戶shell種類不同而不同),bash的爲.bash_profile(或.bashrc),在文件末尾 追加:

if [ -f ~/.custom_bind ] ; then

. ~/.custom_bind &>/dev/null

fi

*注:linux在新建用戶的時候,會將/etc/skel目錄裏的東西整體拷貝一份到新用戶的家目錄下(前提是建用戶時使用了-d參數、指定了用戶的家目錄);因此,如果想讓今後新建的用戶都綁定指定的快捷鍵,只需要通過root用戶在這個目錄下重做一次上面的操作即可。

3. 歷史命令

某用戶的操作命令會被記錄在家目錄的.bash_history文件中

(1)修改環境變量中關於記錄歷史命令的設置

set | grep HIST

HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000

可以通過修改這三個值:

·臨時修改:export 變量名=變量值

·永久修改(對所有用戶生效):在/etc/profile文件中添加(或者修改)

export HISTFILESIZE=900

·永久修改(針對某個用戶):在對應用戶家目錄下的.bash_profilez中添加(或修改)上述命令記錄

*注:後兩種修改若想立即生效,需要對相應的profile文件運行source命令

(2)清空歷史命令:history -c

4. 命令別名功能:可以把常用的命令定義成某個縮寫,提高工作效率

直接打開用戶家目錄下的.bash_profile文件(如.bashrc)追加如下格式的命令:

alias 自定義命令 = ’命令行

比如:alias zidingyi = 'tdx tailf /home/users/logs/debug.log > user.log'

保存退出後使用source命令。

也可以:

echo "alias vi = 'vim' ">>~/.bash_profile

*注:>表示將前面命令的執行結果覆蓋到後面的文件中;>>表示追加到後面的文件中。在操作系統文件時、注意儘量用>>,以免覆蓋系統配置。關於這兩種符號下面會詳細講

取消某個別名:unalias 自定義別名


五、管道線和輸入/輸出

1. 常用的管道線組合命令:

(1)搜索文件名相似的文本中的指定字符串:

find ./ -name "file_name" | xargs grep -i "strings"

-i 表示不區分大小寫

(2)搜索包含指定字符串的進程:

ps -ef | grep strings

(3)自定義本地網卡使用情況輸出:

netstat -i | sed '1d' | awk '{OFS="\t" } {print $1,$4,$8}'

sed ‘1d'  會屏蔽前面命令輸出的第一行;awd...表示先按照空格或製表符來分割每一行,然後輸出第1,4,8個字段、並用製表符(OFS="\t")對其進行分割

*注:使用管道符的命令,只能包含一條對文件進行讀寫的子命令

2. 重定向(< << > >>)

(1)將命令結果輸入到某個文件中:

netstat -tunlp >netstat.log

(2)將某個文件中的內容讀入到命令中(<):

mail -s 'Network status' user1 < netstat.txt

(3)錯誤重定向:比如要刪除一個不存在的文件

rm -rf asdf.fdsa > error

錯誤提示會存在error文件中,而不是顯示在屏幕上;這個功能可以避免使你編寫的腳本在工作時產生的輸出、錯誤信息干擾用戶正在進行的操作。

*注:對於不需要顯示、也不需要保存的輸出,可以直接輸出到linux垃圾池中:/dev/null

具體用法請參考:http://blog.csdn.net/kaiwii/article/details/7308729


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