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)
轉載于:https://www.cnblogs.com/jjzd/p/6840445.html
總結
以上是生活随笔為你收集整理的Linux命令之stty的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: MFC程序打开文件对话框出错的问题解决
- 下一篇: 一切靠自己的霸气句子115个
