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 打開回顯。
使用示例
示例一 打印終端行設置
[[email protected] ~]# stty
speed 38400 baud; line = 0;
-brkint -imaxbel
[[email protected] ~]# 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
[[email protected] ~]#
示例二 打印當前終端的大小(行數和列數)
[[email protected] ~]# stty size
41 132
示例三 設置退格鍵Backspace的刪除行為
在默認情況下,我們按退格鍵Backspace時,會在屏幕上回顯^H,而不是把前一個字符刪除。比如使用sftp/ftp/sqlplus/ij等命令時,就會碰到這種情況。我們可以使用stty命令把Backspace的行為變成刪除前一個字符。
[[email protected] ~]# sftp 192.168.6.12
Connecting to 192.168.6.12...
[email protected]
sftp> get abc^H^H^H^H
Couldn‘t stat remote file: No such file or directory
File "/root" not found.
sftp> quit
[[email protected] ~]#
[[email protected] ~]# stty erase ^H
[[email protected] ~]# sftp 192.168.6.12
Connecting to 192.168.6.12...
[email protected] password:
sftp> get abc
Couldn‘t stat remote file: No such file or directory
File "/root/abc" not found.
sftp> quit
[[email protected] ~]#
示例四 在vi編輯文件時按Ctrl+Q來結束終端僵死的局面
[[email protected] ~]# 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)
Linux命令之stty