Linux 的終端及設置
終端是一種字符型設備,有多種類型,通常使用tty 來簡稱各種類型的終端設備。終端特殊設備文件一般有以下幾種:
- /dev/ttySn 串行端口終端 (Serial Port Terminal),使用計算機串行端口連接的終端設備。設備號分別是(4,0),(4,1)等,分別對應於DOS 系統下的COM1,COM2等
- /dev/pty/ 偽終端 (Pseudo Terminal),是成對的邏輯終端設備.
- /dev/tty 控制終端 (Controlling Terminal),/dev/tty 有些類似於到實際所使用終端設備的一個聯接.可以使用命令”ps –ax ”來查看進程與哪個控制終端相連使用命令”tty ”可以查看它具體對應哪個實際終端設備。
- /dev/console 控制台終端/dev/ttyn (Console),計算機顯示器通常被稱為控制台終端.
stty(setting tty)來設置終端機的輸入按鍵,快捷鍵等。
$ stty size //打印出終端的行數和列數
stty -a 列出目前環境中所有按鍵列表。其中^表示[Ctrl]按鍵的意思。
$ stty -a
- intr = ^C; 發送interrupt中斷信號,多用於中斷某個程序(ctrl-c)
- quit = ^\; 發送quit退出信號(ctrl-\)
- erase = ^?; 向后刪除字符(delete)
- kill = ^U; 在命令終端下,刪除整行的字符(ctrl-u)
- eof = ^D; EOF(End Of File)輸入結束符(ctrl-d)
- eol = <undef>;
- eol2 = <undef>;
- swtch = <undef>;
- start = ^Q; 恢復屏幕輸出(ctrl-q)
- stop = ^S; 暫停屏幕輸出(ctrl-s)
- susp = ^Z; 發送終端terminal stop停止信號,暫停目前的命令(ctrl-z)
- rprnt = ^R; 輸入命令時提示使用過的歷史命令(ctrl-r)
- werase = ^W; 刪除命令行最后一個單詞(ctrl-w)
- lnext = ^V;
- discard = ^O;
- min = 1;
- time = 0;
-cmspar cs8 -hupcl
-istrip -iutf8
opost -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-xcase -tostop
控制字符: -clocal cread -crtscts -cstopb -parenb -parodd
- clocal: 忽略modem 狀態線
- cread: 使 接收器中 開啟
- crtscts: 使硬件流控制開啟
- cstopb: 發送兩個stop 位,其它情況發送一個
- parenb: 部分開啟
- parodd: 奇數,其它為偶數
-------------
輸入標志: -brkint icrnl -ignbrk -ignpar -imaxbel -inlcr -inpck -ixany -ixoff ixon -parmrk -igncr -iuclc
- brkint: 當BREAK 時產生SIGINT 信號
- icrnl: 在輸入時將CR 轉成 NL
- ignbrk : 忽略BREAK
- ignpar: 忽略字符
- imaxbel 當隊列滿時振玲
- inlcr 將NL 換成CR
- inpck
- ixany
- ixoff 開始或關閉輸入流控制
- ixon
- parmrk
忽略回車符 -igncr: 忽略CR
stty igncr #開啟
stty -igncr #恢復
在命令行下,禁止輸出大寫 IUCLC 大寫字符轉成小寫字符
stty -iuclc #禁止輸出
stty -iuclc #恢復
命令行下禁止輸出小寫
stty olcuc #開啟
stty -olcuc #恢復
--------------
本地標志: echoctl echoe echok echoke -echonl -echoprt -extproc -flusho icanon iexten isig -noflsh echo
- echoctl 回顯控制字符
- echoe 顯示擦除字符
- echok 顯示KILL
- echoke 為KILL 顯示擦除字符
- echonl 顯示NL
- echoprt 為硬拷貝顯示擦除字符
- extproc 擴展字符
- flusho
- icanon 規范輸入
- iexten
- isig 使終端產生信號開啟
- noflsh
屏蔽顯示 echo
stty -echo #禁止回顯
stty echo #打開回顯
測試方法:
stty -echo;read;stty echo;read
------------------
http://www.voidcn.com/article/p-ycpnvpkm-bm.html
http://www.voidcn.com/article/p-nnzcgajp-bge.html
https://en.wikipedia.org/wiki/Signal_(IPC)
https://en.wikipedia.org/wiki/Job_control_(Unix)
https://en.wikipedia.org/wiki/List_of_Unix_commands
https://www.howtogeek.com/howto/ubuntu/keyboard-shortcuts-for-bash-command-shell-for-ubuntu-debian-suse-redhat-linux-etc/
https://blog.csdn.net/mylizh/article/details/38385739
==========
終端下容易混淆的幾個快捷鍵:
- eof = ^D; EOF(End Of File)輸入結束符(ctrl-d)
- intr = ^C; 發送interrupt中斷信號,多用於中斷某個程序(ctrl-c)
- susp = ^Z; 發送終端terminal stop停止信號,暫停目前的命令(ctrl-z)
- quit = ^\; 發送quit退出信號(ctrl-\)
- ctrl-c: ( kill foreground process ) 發送 SIGINT 信號給前台進程組中的所有進程,強制終止程序的執行;
- ctrl-z: ( suspend foreground process ) 發送 SIGTSTP 信號給前台進程組中的所有進程,常用於掛起一個進程,而並非結束進程,用戶可以使用使用fg/bg操作恢復執行前台或后台的進程。fg命令在前台恢復執行被掛起的進程,此時可以使用ctrl-z再次掛起該進程,bg命令在后台恢復執行被掛起的進程,而此時將無法使用ctrl-z再次掛起該進程;一個比較常用的功能:正在使用vi編輯一個文件時,需要執行shell命令查詢一些需要的信息,可以使用ctrl-z掛起vi,等執行完shell命令后再使用fg恢復vi繼續編輯你的文件(當然,也可以在vi中使用!command方式執行shell命令,但是沒有該方法方便)。
- ctrl-d: ( Terminate input, or exit shell ) 一個特殊的二進制值,表示 EOF,作用相當於在終端中輸入exit后回車;