Linux命令之stty - 顯示和修改終端行設定
用途說明
stty命令用於顯示和修改終端行設定(change and print terminal line settings)。
常用引數
stty命令不帶引數可以列印終端行設定,加上-a引數可以列印得更詳細些。
stty size可以顯示終端的大小,即行數和列數。
stty命令還可以更改終端行的設定,格式如下:
stty SETTING CHAR
其中,SETTING可以是如下
eof : 輸入結束,檔案結束,預設為Ctrl+D。比如:用cat >file來建立檔案時,按Ctrl+D來結束輸入。
erase : 向後刪除字元,擦除最後一個輸入字元,預設為Ctrl+?。注意預設情況下退格鍵Backspace不是刪除字元。
intr : 中斷當前程式,預設為Ctrl+C。
kill : 刪除整條命令,刪除整行,預設為Ctrl+U。
quit :退出當前程式,預設為Ctrl+\或Ctrl+|。
start : 啟動螢幕輸出,預設為Ctrl+Q。
stop :停止螢幕輸出,預設為Ctrl+S。
susp : terminal stop當前程式,預設為Ctrl+Z。這樣當前程式就會變成後臺程式了。
werase:刪除最後一個單詞,預設為Ctrl+W。
stty命令還有一些其他用法,如:
stty -echo 關閉回顯。比如在指令碼中用於輸入密碼時。
stty echo 開啟回顯。
使用示例
示例一 列印終端行設定
[root@web ~]# stty
speed 38400 baud; line = 0;
-brkint -imaxbel
[root@web ~]# stty -a
speed 38400 baud; rows 41; columns 132; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
[root@web ~]#
示例二 列印當前終端的大小(行數和列數)
[root@web ~]# stty size
41 132
示例三 設定退格鍵Backspace的刪除行為
在預設情況下,我們按退格鍵Backspace時,會在螢幕上回顯^H,而不是把前一個字元刪除。比如使用sftp/ftp/sqlplus/ij等命令時,就會碰到這種情況。我們可以使用stty命令把Backspace的行為變成刪除前一個字元。
[root@web ~]# sftp 192.168.6.12
Connecting to 192.168.6.12...
root@192.168.6.12's password:
sftp> get abc^H^H^H^H
Couldn't stat remote file: No such file or directory
File "/root" not found.
sftp> quit
[root@web ~]#
[root@web ~]# stty erase ^H
[root@web ~]# sftp 192.168.6.12
Connecting to 192.168.6.12...
root@192.168.6.12's password:
sftp> get abc
Couldn't stat remote file: No such file or directory
File "/root/abc" not found.
sftp> quit
[root@web ~]#
示例四 在vi編輯檔案時按Ctrl+Q來結束終端僵死的局面
[root@web ~]# vi 1.txt
1
2
3
Ctrl+S
~
注:按了Ctrl+S之後,就會禁止螢幕輸出,從而出現終端僵死的情況。
這個時候,只要按Ctrl+Q就會結束這種局面,因為它會允許螢幕輸出。
Ctrl+Q
示例五 在bash指令碼中與tty命令配合使用
在下面的指令碼中,先取得終端檔名稱,以判斷指令碼是否執行在互動式方式還是在管道方式。
- #!/bin/sh
- CONSOLE_INPUT=$(tty)
- echo "CONSOLE_INPUT=$CONSOLE_INPUT"
- COMMAND_LINE="java -Xmx640m -classpath .:lib/hyjc.jar:lib/log4j-1.2.15.jar:lib/commons-logging-1.1.1.jar:lib/proxool-0.9.0RC3.jar:lib/mysql-connector-java-5.1.10-bin.jar:lib/poi-3.5-ZHY-20091107.jar:lib/jdom-1.1.jar hyjc.sql.DBCLI MhrDB.properties MhrDB"
- if [ "$CONSOLE_INPUT" == "not a tty" ]; then
- $COMMAND_LINE
- elif [ "$(whereis rlwrap)" == "rlwrap:" ]; then
- stty erase ^H
- $COMMAND_LINE
- else
- rlwrap -f jdb.rlwrap $COMMAND_LINE
- fi
轉自:http://codingstandards.iteye.com/blog/826924
附:Linux終端常用快捷鍵:
Ctrl + d 刪除一個字元,相當於通常的Delete鍵(命令列若無任何字元,則相當於exit;處理多行標準輸入時也表示EOF )
Ctrl + h 退格刪除一個字元,相當於通常的Backspace鍵
Ctrl + u 刪除游標之前到行首的字元
Ctrl + k 刪除游標之前到行尾的字元
Ctrl + c 取消當前行輸入的命令,相當於Ctrl + Break
Ctrl + a 游標移動到行首(Ahead of line),相當於通常的Home鍵
Ctrl + e 游標移動到行尾(End of line)
Ctrl + f 游標向前(Forward)移動一個字元位置
Ctrl + b 游標往回(Backward)移動一個字元位置
Ctrl + l 清屏,相當於執行clear命令
Ctrl + p 調出命令歷史中的前一條(Previous)命令,相當於通常的上箭頭
Ctrl + n 調出命令歷史中的下一條(Next)命令,相當於通常的上箭頭
Ctrl + r 顯示:號提示,根據使用者輸入查詢相關歷史命令(reverse-i-search)相關文章
- 使用stty修改終端設定
- linux ubuntu終端路徑顯示設定LinuxUbuntu
- Linux下設定終端文字的顯示屬性Linux
- 設定SAP後臺顯示和修改
- Linux設定歷史命令顯示執行時間Linux
- Linux下使用script命令記錄終端操作顯示Linux
- linux 終端顯示時間Linux
- Mac 終端命令列顏色高亮顯示Mac命令列
- Linux命令之date - 顯示、修改系統日期時間Linux
- 我使用過的Linux命令之hostname - 顯示或設定主機名Linux
- Linux 輸出或儲存終端顯示Linux
- 修改oracleasm的listdisks和querydisk命令顯示格式OracleASM
- 手動設定和修改X-Window的顯示模式(轉)模式
- Mac 使用終端命令設定系統代理Mac
- Neofetch:在終端中顯示 Linux 系統資訊Linux
- 如何自定義終端顯示配置
- 如何在 Linux 中顯示和設定主機名?Linux
- Qt之設定窗體居中顯示QT
- Linux中如何設定顯示檔案的前幾行?Linux
- Vs Code中執行vue命令顯示"系統禁止執行指令碼"無法在終端使用Vue指令碼
- LINUX修改SSH埠和禁止ROOT遠端登陸設定Linux
- TOAD和PLSQL 預設日期顯示、rowid顯示、TNSNAME的修改SQL
- 修改Kali Linux終端主題Linux
- 修改linux終端提示符Linux
- 顯示器設定
- vscode終端行數修改VSCode
- MacOS設定終端代理Mac
- 為終端設定代理
- linux系統終端命令提示符設定(PS1)記錄Linux
- Oracle sqlplus設定顯示格式命令詳解OracleSQL
- 啟明星Exchange/outlook預定會議室終端顯示解決方案
- MapSCII:在終端顯示世界地圖地圖
- 使用終端虛擬示波器顯示資料
- Mac終端給命令設定別名alias的辦法Mac
- EditText設定密碼隱藏和顯示密碼
- 如何在Linux終端同時執行多個Linux命令Linux
- 【Linux】命令終端美化優化Linux優化
- 巧用Linux字元終端命令(轉)Linux字元