Linux stty
在linux/unix 平臺(tái)上的sqlplus中,如果輸錯(cuò)了字符,要想刪除,習(xí)慣性的按下backspace鍵后,發(fā)現(xiàn)非但沒(méi)有刪除想要?jiǎng)h掉的字符,還多出了兩個(gè)字符^H。當(dāng) 然,我們可以同時(shí)按下ctrl+backspace鍵來(lái)刪除,但對(duì)于習(xí)慣了用backspace來(lái)刪除的用戶,這樣很不爽。這可以通過(guò)修改tty終端的設(shè) 置來(lái)實(shí)現(xiàn)backspace刪除功能。通過(guò)使用stty命令,就可以查看或者修改終端的按鍵設(shè)置。
例如,設(shè)置backspace為刪除鍵:
[oracle10g@linux]$ stty erase ^h
如果要改回使用ctrl+backspace為刪除鍵
[oracle10g@linux]$ stty erase ^?
如果需要重啟后自動(dòng)設(shè)置終端,可以將上述命令加入到profile中。
可以通過(guò)stty -a命令來(lái)查看所有的終端設(shè)置。下面是在linux下執(zhí)行的輸出:
[oracle10g@linux]$ stty -a
speed 38400 baud; rows 66; columns 132; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>; eol2 = <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
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel
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
其中:
eof : 輸入結(jié)束
erase : 向后刪除字符,
intr : 中斷當(dāng)前程序
kill : 刪除整條命令
quit :退出當(dāng)前程序
start : 啟動(dòng)屏幕輸出
stop :停止屏幕輸出;
susp : terminal stop當(dāng)前程序。
也可以在 /etc/bashrc 加入如下SHELL
 if [ -x /usr/bin/tput ]; then
 ????? if [ "x`tput kbs`" != "x" ]; then # We can't do this with "dumb" terminal
 ??????? stty erase `tput kbs`
 ????? elif [ -x /usr/bin/wc ]; then
 ??????? if [ "`tput kbs|wc -c `" -gt 0 ]; then # We can't do this with "dumb" te
 ????????? stty erase `tput kbs`
 ??????? fi
 ????? fi
 ??? fi
 最后,附上stty的中文幫助
 stty - 改變并打印終端行設(shè)置??
總覽
 stty?[-F device] [--file=device] [SETTING]...?
 stty?[-F device] [--file=device] [-a|--all]?
 stty?[-F device] [--file=device] [-g|--save]??
描述
?
打印或改變終端屬性.
-a,?--all選項(xiàng)-在SETTING之前使用這些選項(xiàng)將被視為無(wú)效 星號(hào)*表明是非POSIX設(shè)置. 以下是一些系統(tǒng)定義了的可用設(shè)置:
特殊字符
* dsusp CHAR CHAR表示輸入滿時(shí),發(fā)一個(gè)停止信號(hào)給終端
eof CHAR* eol2 CHAR CHAR是另一個(gè)表示結(jié)束當(dāng)前行的字符
erase CHAR* lnext CHAR CHAR表示輸入下一個(gè)字符
quit CHAR* rprnt CHAR CHAR表示刷新當(dāng)前行
start CHAR* swtch CHAR CHAR表示切換到不同的外殼層
* werase CHAR CHAR表示擦除已經(jīng)輸入的最后一個(gè)單詞??
特殊設(shè)置
N* cols N 通知內(nèi)核終端有N列
* columns N 與cols N 相同
ispeed N* line N 用行約束規(guī)則N
min N* rows N 通知內(nèi)核終端有N行
* size 根據(jù)內(nèi)核打印出終端的行數(shù)和列數(shù)
speed?
控制設(shè)置
[-]clocal* [-]crtscts 允許 RTS/CTS 的握手
csN?
輸入設(shè)置:
[-]brkint* [-]imaxbel 對(duì)一個(gè)字符產(chǎn)生嘟叫,但不刷新已滿的輸入緩沖區(qū)
[-]inlcr* [-]iuclc 將大寫字符轉(zhuǎn)換成小寫字符
* [-]ixany 使任何字符都重新開(kāi)始輸出(而 不僅僅是重新輸出字符能實(shí)現(xiàn)此功能)
[-]ixoff輸出設(shè)置:
* bsN 回退延遲, N 為 [0..1]
* crN 回車延遲, N 為 [0..3]
* ffN 換頁(yè)延遲, N 為 [0..1]
* nlN 換行延遲, N 為 [0..1]
* [-]ocrnl 將回車解釋為換行
* [-]ofdel 使用刪除字符來(lái)填充,而不是用空字符填充
* [-]ofill 使用填充字符,不使用定時(shí)延遲
* [-]olcuc 將小寫字符轉(zhuǎn)換成大寫
* [-]onlcr 將換行解釋為回車-換行
* [-]onlret 換行執(zhí)行一次回車
* [-]onocr 不在第一列打印回車
[-]opost* tabN 水平tab鍵延遲, N 為 [0..3]
* tabs 同tab0
*?-tabs?同tab3
* vtN 垂直方向tab鍵延遲。。。, N 為 [0..1]??
本地設(shè)置:
[-]crterase* crtkill 根據(jù)echoprt和echoe的設(shè)置去除所有行
*?-crtkill?根據(jù)echoctl和echok設(shè)置去除所有行
* [-]ctlecho 在頭部符號(hào)中顯示控制字符'^c')
[-]echo* [-]echoctl 同 [-]ctlecho
[-]echoe* [-]echoke 同 [-]crtkill
[-]echonl* [-]echoprt 向后顯示在 '' 和 '/'之間的擦除字符
[-]icanon* [-]prterase 同 [-]echoprt
* [-]tostop 停止試圖寫終端的后臺(tái)作業(yè)
* [-]xcase 與icanon同時(shí)使用, 表示用`'退出大寫狀態(tài)
綜合設(shè)置:
* [-]LCASE 同 [-]lcase
cbreak* [-]decctlq 同 [-]ixany
ek* [-]lcase 同 xcase iuclc olcuc
litout本命令處理連接到標(biāo)準(zhǔn)輸入的終端行.如不帶參數(shù),則輸出波特率, 行的約束規(guī)則,以及與健全的stty相背離的設(shè)置.在設(shè)置中, CHAR 是逐字讀取的, 或是象 ^c, 0x37, 0177 或127這樣的編碼; 特殊值 ^- 或未定義被用來(lái)禁止特殊字符.??
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Linux stty的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: GoldenGate for win安装
- 下一篇: 基于系统级触发器的审计功能
