命令歷史、別名、通配符
Shell腳本與Windows/Dos下的批處理相似,也就是用各類命令預先放入到一個文件中,方便一次性執行的一個程序文件,主要是方便管理員進行設置或者管理用的。但是它比Windows下的批處理更強大,比用其他編程程序編輯的程序效率更高,它使用了Linux/Unix下的命令。
Shell 編程跟 java、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了。
Linux 的 Shell 種類眾多,常見的有:
①Bourne Shell(/usr/bin/sh或/bin/sh)
②Bourne Again Shell(/bin/bash)
③C Shell(/usr/bin/csh)
④K Shell(/usr/bin/ksh)
2.命令歷史
在命令行模式下輸入的命令會保存在內存中,在用戶退出終端的時候,將命令歷史保存進/用戶家目錄/.bash_history這一文件中。
可以通過history命令來查看。history -c 可以青春清除內存中的命令歷史,但是不會影響文件中的內容。
[root@test_01 ~]# history 1 cat /root/.bash_history 2 history
也可以查看文件內容查看命令歷史
[root@test_01 ~]# cat /root/.bash_history ls cd / ls dhclient ip add
但是此處保存的命令歷史數量是有限的,¥HISTZIZE的值則是命令數量的值
[root@test_01 ~]# echo $HISTSIZE 1000
這一環境變量可以在配置文件/etc/profile中更改
HISTSIZE=1000
在使用history命令的時候,一般只會顯示命令歷史遺跡默認的編號。
如果需要記錄命令執行的時間等信息,可以修改HISTTIMEFORMAT變量
[root@test_01 ~]# history 1 cat /root/.bash_history 2 history 3 echo $HISTZIZE 4 echo $HISTSIZE 5 cat /root/.bash_history 6 vi /etc/profile 7 history [root@test_01 ~]# vi /etc/profile [root@test_01 ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " [root@test_01 ~]# history 1 2017/11/26 20:58:48 cat /root/.bash_history 2 2017/11/26 21:04:48 history 3 2017/11/26 21:08:10 echo $HISTZIZE 4 2017/11/26 21:08:12 echo $HISTSIZE 5 2017/11/26 21:12:43 cat /root/.bash_history 6 2017/11/26 21:16:18 vi /etc/profile 7 2017/11/26 21:19:27 history 8 2017/11/26 21:19:31 vi /etc/profile 9 2017/11/26 21:20:31 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 10 2017/11/26 21:20:35 history
但是需要註意的是,這種修改只是臨時更改,正在重新登陸終端後則不再有同樣效果。
如果需要永久生效,同樣編輯/etc/profile文件並將
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "加入
HISTSIZE=1000 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
完成後,需要執行source以生效
[root@test_01 ~]# source /etc/profile [root@test_01 ~]# echo $HISTTIMEFORMAT %Y/%m/%d %H:%M:%S
※使用技巧
①執行上一條命令:!!
[root@test_01 ~]# echo $HISTTIMEFORMAT %Y/%m/%d %H:%M:%S [root@test_01 ~]# !! echo $HISTTIMEFORMAT %Y/%m/%d %H:%M:%S
②執行第n條命令:!n
③執行上一個ls命令:!ls
3.別名
查看系統中的別名可以使用alias命令
[root@test_01 ~]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
這些別名分別被定義在~/.bashrc文件以及/etc/profile.d下的各個文件中
[root@test_01 ~]# ls /etc/profile.d 256term.csh colorgrep.sh lang.sh vim.sh 256term.sh colorls.csh less.csh which2.csh bash_completion.sh colorls.sh less.sh which2.sh colorgrep.csh lang.csh vim.csh
4.通配符
* - 通配符,代表任意字符(0到多個)
? - 通配符,代表一個字符
# - 註釋
/ - 跳轉符號,將特殊字符或通配符還原成一般符號
| - 分隔兩個管線命令的界定
; - 連續性命令的界定
~ - 用戶的根目錄
$ - 變量前需要加的變量值
! - 邏輯運算中的"非"(not)
/ - 路徑分隔符號
> 重定向
>> 追加重定向
2> 錯誤重定向
2>>錯誤追加重定向
&> 錯誤&正確信息都進行重定向操作
' - 單引號,不具有變量置換功能
" - 雙引號,具有變量置換功能
` - quote符號,兩個``中間為可以先執行的指令
() - 中間為子shell的起始與結束
[] - 中間為字符組合
{} - 中間為命令區塊組合
Ctrl+C - 終止當前命令
Ctrl+D - 輸入結束(EOF),例如郵件結束的時候
Ctrl+M - 就是Enter
Ctrl+S - 暫停屏幕的輸出
Ctrl+Q - 恢復屏幕的輸出
Ctrl+U - 在提示符下,將整行命令刪除
Ctrl+Z - 暫停當前命令
&& - 當前一個指令執行成功時,執行後一個指令
|| - 當前一個指令執行失敗時,執行後一個指令
命令歷史、別名、通配符