採集終端信息
編寫命令行shell腳本時,總是免不了處理當前終端的相關信息,比如行數、列數、光標位置、遮蓋的密碼字段等。tput和stty是兩款終端處理工具。
下面是一些tput命令的功能演示。
- 獲取終端的行數和列數:
tput cols
tput lines
- 打印出當前的終端名:
tput longname
- 將光標移動到座標(100,100)處:
tput cup 100 100
- 設置終端背景色:
tput setb n
其中,n可以在0到7之間取值。
- 設置終端前景色:
tput setf n
其中,n可以在0到7之間取值
6.設置文本樣式爲粗體:
tput bold
7.設置下劃線的起止:
tput smul
tput rmul
8.刪除從當前光標位置到行尾的所有內容:
tput ed
9.輸入密碼時,腳本不應該顯示輸入內容。在下面的例子中,我們將看到如何使用stty來 實現這一需求:
#!/bin/sh
#Filename: password.sh echo -e "Enter password: " # 在讀取密碼前禁止回顯
stty -echo
read password
# 重新允許回顯
stty echo
echo
echo Password read.
stty命令的選項-echo禁止將輸出發送到終端,而選項echo則允許發送輸出。
別名
別名就是一種便捷方式,可以爲用戶省去輸入一長串命令序列的麻煩。下面我們會看到如何
使用alias命令創建別名。
(1) 創建別名。
$ alias new_command='command sequence'
下面的命令爲apt-get install創建了一個別名:
$ alias install='sudo apt-get install'
定義好別名之後,我們就可以用install
來代替sudo apt-get install
了。
(2) alias命令的效果只是暫時的。一旦關閉當前終端,所有設置過的別名就失效了。爲了 使別名在所有的shell中都可用,可以將其定義放入~/.bashrc
文件中。每當一個新的交互式 shell進程生成時,都會執行 ~/.bashrc
中的命令。
$ echo 'alias cmd="command seq"' >> ~/.bashrc
(3) 如果需要刪除別名,只需將其對應的定義(如果有的話)從~/.bashrc
中刪除,或者使用 unalias
命令。也可以使用alias example=
,這會取消別名example。
(4) 我們可以創建一個別名rm,它能夠刪除原始文件,同時在backup目錄中保留副本。
alias rm='cp $@ ~/backup && rm $@'
(5)忽略當前定義的別名
$ \command
(6)列舉別名
alias命令可以列出當前定義的所有別名:
$ aliasalias lc='ls -color=auto'
alias ll=‘ls -l’
alias vi=‘vim’