首頁  >  文章  >  運維  >  linux stty是什麼意思

linux stty是什麼意思

青灯夜游
青灯夜游原創
2023-04-06 16:23:462551瀏覽

在linux中,stty全名為“set tty”,意思是“設定tty”,是用於顯示和修改terminal(終端)相關設定的指令;語法“stty [選項] [設定]” ,stty指令不帶參數可以列印終端行設置,加上“-a”選項可以列印得更詳細些。

linux stty是什麼意思

本教學操作環境:linux7.3系統、Dell G3電腦。

裝置檔案處理與磁碟檔案的差別

  先說幾個比較直覺的感覺。首先,在你通過鍵盤(一般是標準的輸入的終端設備),輸入字符,直到你輸入的回車鍵(鍵盤上面的Enter 為回車鍵,不是換行鍵;換行的ACCII 為10,回車為13;換行在程式中的體現就是\n),你的程式才會有“反應”,給人一種好像就是回車後你的程式才接受到你輸入的資料;

  其次,你在程式中寫一個printf(“This is a demo\n”); 你會發現你的下一個輸出就是在下一行的最左邊開始輸出的,但是,回車與換行的本身功能是:

  \r 為return,回車,即使遊標回到目前行的頭;

  \n為newline,換行,即遊標移動到目前位置的下一行。

  所以,說明進程將你的 \n 轉換為了 \r\n。而在Linux下出現這些的原因,就是因為在終端設備與進程之間的中間,還有一個終端驅動器,裡面有終端驅動函數。這裡有兩張圖,方便大家理解。

linux stty是什麼意思

linux stty是什麼意思

  進程和終端間的資料傳輸和資料處理是由終端設備驅動程式來負責的,終端驅動程式是核心的一部分。可以透過tesetattr和tegetattr函數來改變終端驅動程式裡面的設定

  以上摘錄至這篇文章:https://blog.csdn.net/suliangkuanjiayou/article/details/86665901

Linux stty 指令

1、作用

  為了自己能夠寫出適合自己的終端驅動函數,也就是去修改終端驅動程式裡面的設定。在Linux中有這個指令,就是 stty(set tty,設定tty)。

  stty:用於顯示和修改終端命令列的相關設定(change and print terminal line settings)。

2、語法##

stty [选项] [设置]
stty [选项]

#常用選項

  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 開啟回顯。

#在命令行下,禁止输出大写的方法:
stty iuclc     #开启
stty -iuclc    #恢复

#在命令行下禁止输出小写:
stty olcuc    #开启
stty -olcuc   #恢复

#打印出终端的行数和列数:
stty size

#改变Ctrl+D的方法:
stty eof "string"
#系统默认是Ctrl+D来表示文件的结束,而通过这种方法,可以改变!

#屏蔽显示:
stty -echo   #禁止回显
stty echo    #打开回显
#测试方法:
stty -echo;read;stty echo;read

#忽略回车符:
stty igncr     #开启
stty -igncr    #恢复

3、使用示例

下面以xilinx的串口终端为例说明stty命令的使用方法。

在vivad0配置了两个串口分别是UART0和UART1,petalinx中设置UART1为调试串口,UART0和UART1分别对应分别对应/dev/ttyPS1和/dev/ttyPS0,可以用who命令看一下当前终端使用的是哪个串口:

可以看到当前终端使用的是ttyPS0

用 dmesg | grep ttyPS*可以查看当前终端对应哪个串口

可以看到ttyPS0对应串口的物理地址是0xff010000,从设备树中根据这个物理地址可以查到是哪个串口

1)查看当前终端信息:

stty -a

这个打印了当前终端的信息,一些参数解释如下:

speed 115200 baud:波特率是115200

cs8:数据是8位

ixon:流控打开,如果是-ixon则表示流控关闭

clocal:使能DTR/DTS

-parodd:失能奇校验

-parenb:失能奇偶校验

2)设置波特率115200,数据位8位:

  stty -F /dev/ttyPS1 115200 cs8

3)通过UART1发送数据:

  echo "qwert" > /dev/ttyPS1

4)查看UART1接受的数据

cat /dev/ttyPS1

通过串口工具向UART1发送数据,即可看到接受到的信息

  

相关推荐:《Linux视频教程

以上是linux stty是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:linux自帶ssh嗎下一篇:linux自帶ssh嗎