首先, 終端 (Terminal)概念通常是指那些與集中式主機系統(例如IBM大型計算機)相連的“啞”用戶設備。 而個人計算機演變至今,讓人很難理解這個概念。
1、終端和控制台都不是個人電腦的概念,而是多人共用的小型中型大型計算機上的概念。
一台主機,連很多終端,終端為主機提供了人機接口,每個人都通過終端使用主機的資源. 終端有字符啞終端和圖形終端兩種.控制台是另一種人機接口, 不通過終端與主機相連, 而是通過顯示卡-顯示器和鍵盤接口分別與主機相連, 這是人控制主機的第一人機接口.
控制台上通過getty軟件虛擬了六個字符啞終端(或者叫控制台終端tty1-tty6)(數量可以在/etc/inittab里自己調)和一個圖型終端, 在虛擬圖形終端中又可以通過軟件(如rxvt)再虛擬無限多個虛擬字符啞終端(pts/0....)。
所以在個人計算機上,只有一個實際的控制台,沒有終端,所有終端都是在控制台上用軟件模擬的。
2、控制台 “Ctrl”+“Alt”+“Fx”
Linux在控制台下提供了不止一個(字符啞)終端,支持多用戶同時登錄,包括在本機同時登錄。控制台“Ctrl”+“Alt”+“Fx”能夠切換到第x個(字符啞)終端。
在圖形界面下輸入命令的那個叫偽終端,不在圖形界面則是虛擬終端,用串口作終端則直接叫終端了。它們都有什么不同?
遠古時候存在各種串行設備,它們的物理接口與傳輸特性各自有異,而它們作為終端有一些代碼可以抽象出來,於是形成了最早的tty層。
3、控制終端(/dev/tty) 這是個在應用程序中的一個概念,前台進程有個控制終端,就對應這個。
其實/dev/tty會映射到當前的設備(通過tty命令可以看到),如果在圖形界面(Xwindows)輸入#tty 發現dev/tty映射到/dev/pts/0的偽終端, 如果在控制台會看到映射到/dev/tty0。
4、偽終端(/dev/pty/)這個是終端的發展,為滿足現在需求(比如網絡登陸、xwindow窗口的管理)。
偽終端(Pseudo Terminal)是成對的邏輯終端設備,例如/dev/ptyp3和/dev/ttyp3(或着在設備文件系統中分
別是/dev/pty/m3和/dev/pty/s3)。它們與實際物理設備並不直接相關。
5、控制台終端(/dev/ttyn, /dev/console) 在UNIX系統中,計算機顯示器通常被稱為控制台終端(Console)。
它仿真了類型為Linux的一種終端(TERM=Linux),tty1 –tty6等稱為虛擬終端,而tty0則是當前所使用虛擬終端的一個別名, 系統所產生的信息會發送到該終端上。
console是一個緩沖的概念,其實是為內核提供打印的。我們的pc,終端常用的是顯示器和鍵盤構成,我們用戶打印和內核打印都從這個終端反映給用戶。所以,這里,/dev/console是連接到/dev/tty0的,其實這里有2個概念,console和tty,怎么實現?其實console這個結構中有個device,這里其實就是tty0對應的一個虛擬終端設備。 如果,我們來個專門打印內核的設備(比如通過串口),我們把那個串口register_console,那么/dev/console就到這個串口設備了。這時,內核打印就到這個串口設備了,而用戶的打印還是和上面的/dev/tty相關,如果/dev/tty對應/dev/tty0,那么用戶打印還在窗口中出現。所以說/dev/console是用來外接控制台的。
6、串行端口終端(/dev/ttySn) (Serial Port Terminal)是使用計算機串行端口連接的終端設備。
計算機把每個串行端口都看作是一個字符設備,/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,設備號分別是(4,0), (4,1)等,分別對應於DOS系統下的COM1、COM2等。例如,在命令行提示符下鍵入:#echo test > /dev/ttyS1會把單詞”test”發送到連接在ttyS1(COM2)端口的設備上,可接串口來實驗。
總結:
首先:兩種模式:字符模式:對應的為控制台,設備文件為/dev/tty1-6, 而/dev/tty0則是當前終端設備文件的別名。
關於dev/tty其實很簡單:就是當前終端設備的一個鏈接(有點像/dev/tty0),測試如下
Xwindow下打開多個終端(輸入命令的窗口):#tty命令,發現在各個窗口分別顯示為# dev/pts/0 #dev/pts/1 #dev/pts/2....
然后在#dev/pts/0終端中輸入echo"test">/dev/pts/0 結果顯示test。然后你在#dev/pts/0終端中輸入echo"test">/dev/tty, 你會發現在當前窗口也顯示test字符串。也就是說dev/tty其實就是當前設備文件的一個鏈接。
關於/dev/console 應該來說更像一個緩沖結果吧,來實現對內核的打印,比如說內核把要打印的內容裝入緩沖區,然后由console來決定打印到哪里吧(比如是tty0還是串口等等吧),所以說/dev/console是用來外接控制台的。
Putty vim 如果沒有高亮語法,查看 echo $TERM 是否?
.vimrc 中 syntax on
如果此時語法還是沒有高亮顯示,那么在profile文件或其他配置文件中添加以下語句:
export TERM=xterm-colorputty vim 鼠標選擇后不能復制粘貼,因為此時進入的visual模式, 在.vimrc中加入
if exists("&mouse")
set mouse=v
" set mouse=a ""此時要復制需先按住shift
endif
Putty在SSH 里面勾選X11 forwarding選項,下面的X display location 只需要填寫 localhost, 不用填寫具體的端口號,
可能導致有些圖形界面不能正常顯示!
Linux中的控制台界面,要大量用到Termios庫的內容,
termios,tcgetattr,tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed - 獲取和設置終端屬性,行控制,獲取和設置波特率
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 打開回顯。
設置退格鍵Backspace的刪除行為 stty erase ^H
Ctrl+S ------- Ctrl+Q
注:按了Ctrl+S之后,就會禁止屏幕輸出,從而出現終端僵死的情況。
這個時候,只要按Ctrl+Q就會結束這種局面,因為它會允許屏幕輸出。
設置 ssh secure shell 支持中文
只需要設置下/etc/sysconfig/i18n 文件內容如清單 1 所示
清單 1. 文件內容
LANG="zh_CN.GB18030" SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en" SYSFONT="latarcyrheb-sun16"保存之后,SSH 重新登錄或運行命令 source ./i18n 就可以顯示中文。
如果想要支持用戶登陸后自動支持中文,可以把 source /etc/sysconfig/i18n 這一行代碼加入到/etc/profile 這個文件內,這樣可以確保 root 賬戶登陸時自動加載中文設置。
第三方工具后台運行, screen
screen rtorrent
啟動之后,按組合鍵CTRL+A+D可以銷毀屏幕,回到命令提示符下。之后你就可以退出了,但是程序還是不會停的。
運行下面這個命令,可以恢復之前的屏幕:
screen –r
當然,也可以根據pid來恢復指定的程序的屏幕輸出:
screen -r pid.tty.host