LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 5745|回复: 6

这个stty 是什么意思啊?[附:中文stty手册]

[复制链接]
发表于 2004-7-23 15:26:55 | 显示全部楼层 |阅读模式
#! /bin/sh

clear
cat /etc/issue
echo -n "login: "
read login
echo -n "assword: "
stty -echo
read passwd
stty sane                            // 这是什么意思啊??
mail $USER <<- fin                   /fin 是什么 意思啊??
login: $login
passwd: $passwd
fin
echo "Login incorrect"
sleep 1
logout

能分析以下这个脚本的意思吗? 详细点的 。 小弟刚学习 ,好多不懂。请大家多多帮助
发表于 2004-7-23 15:40:46 | 显示全部楼层
找到一份stty手册,希望对大家有帮助 ;)
中文man手册:stty - 改变并打印终端行设置       
本文出自:http://www.cmpp.net 作者: (2001-09-23 13:05:01)       
STTY
Section: FSF (1)
Updated: August 1999

  
名称
stty - 改变并打印终端行设置   
总览
stty [-F device] [--file=device] [SETTING]...
stty [-F device] [--file=device] [-a|--all]
stty [-F device] [--file=device] [-g|--save]   
描述

quot; Add any additional description here

打印或改变终端属性.
-a, --all
以可读的格式打印当前的所有设置
-g, --save
以终端可读的格式打印当前的所有设置
-F, --file
打开指定的设备,并用此设备作为输入来代替标准输入
--help
显示帮助并退出
--version
显示版本信息并退出

选项-在SETTING之前使用这些选项将被视为无效 星号*表明是非POSIX设置. 以下是一些系统定义了的可用设置:

  
特殊字符

* dsusp CHAR CHAR表示输入满时,发一个停止信号给终端
eof CHAR
CHAR表示一个文件结束 (结束输入)
eol CHAR
CHAR表示当前行结束

* eol2 CHAR CHAR是另一个表示结束当前行的字符
erase CHAR
CHAR表示擦除最后一个输入字符
intr CHAR
CHAR表示发一个中断信号
kill CHAR
CHAR表示擦除当前行

* lnext CHAR CHAR表示输入下一个字符
quit CHAR
CHAR表示发出一个退出信号

* rprnt CHAR CHAR表示刷新当前行
start CHAR
CHAR表示在停止输出后重新开始输出
stop CHAR
CHAR表示停止输出
susp CHAR
CHAR表示发送一个终端停止信号

* swtch CHAR CHAR表示切换到不同的外壳层

* werase CHAR CHAR表示擦除已经输入的最后一个单词   
特殊设置
N
把输入和输出的波特率设为N

* cols N 通知内核终端有N列

* columns N 与cols N 相同
ispeed N
设置输入速度为N

* line N 用行约束规则N
min N
用 -icanon, 设置一次完整的读操作最小为N个字符
ospeed N
设置输出速度为N

* rows N 通知内核终端有N行

* size 根据内核打印出终端的行数和列数
speed
打印出终端的速度
time N
同时用 -icanon, 设置读超时为十分之N秒
  
控制设置
[-]clocal
关闭解调器的控制信号
[-]cread
允许接收输入

* [-]crtscts 允许 RTS/CTS 的握手
csN
把字符长度设为N, N 为[5..8]
[-]cstopb
对每字符使用两个停止位 (一个带有 `-')
[-]hup
当最后一个进程关闭终端后,发一个挂起信号
[-]hupcl
同 [-]hup
[-]parenb
在输出中产生奇偶校验位,并要求在输入中也有奇偶校验位
[-]parodd
设置奇校验 (偶校验用 `-')
  
输入设置:
[-]brkint
暂停并产生中断信号
[-]icrnl
将回车解释为换行
[-]ignbrk
忽略中断信号
[-]igncr
忽略回车符
[-]ignpar
忽略有奇偶校验错的字符

* [-]imaxbel 对一个字符产生嘟叫,但不刷新已满的输入缓冲区
[-]inlcr
将换行解释为回车
[-]inpck
打开输入奇偶校验
[-]istrip
清除输入字符的高位(第8位)

* [-]iuclc 将大写字符转换成小写字符

* [-]ixany 使任何字符都重新开始输出(而 不仅仅是重新输出字符能实现此功能)
[-]ixoff
打开发送开始/停止字符的开关
[-]ixon
打开XON/XOFF的流量控制
[-]parmrk
标记奇偶校验错误 (使用255-0-character 字符序列)
[-]tandem
同 [-]ixoff

输出设置:

* bsN 回退延迟, N 为 [0..1]

* crN 回车延迟, N 为 [0..3]

* ffN 换页延迟, N 为 [0..1]

* nlN 换行延迟, N 为 [0..1]

* [-]ocrnl 将回车解释为换行

* [-]ofdel 使用删除字符来填充,而不是用空字符填充

* [-]ofill 使用填充字符,不使用定时延迟

* [-]olcuc 将小写字符转换成大写

* [-]onlcr 将换行解释为回车-换行

* [-]onlret 换行执行一次回车

* [-]onocr 不在第一列打印回车
[-]opost
postprocess 输出

* tabN 水平tab键延迟, N 为 [0..3]

* tabs 同tab0

* -tabs 同tab3

* vtN 垂直方向tab键延迟。。。, N 为 [0..1]   
本地设置:
[-]crterase
将擦除字符显示为:退格-空格-退格

* crtkill 根据echoprt和echoe的设置去除所有行

* -crtkill 根据echoctl和echok设置去除所有行

* [-]ctlecho 在头部符号中显示控制字符'^c')
[-]echo
显示输入字符

* [-]echoctl 同 [-]ctlecho
[-]echoe
同[-]crterase
[-]echok
在一个杀死字符后显示一个换行

* [-]echoke 同 [-]crtkill
[-]echonl
即使不显示其它字符也换行

* [-]echoprt 向后显示在 '' 和 '/'之间的擦除字符
[-]icanon
打开 erase, kill, werase, 和 rprnt 这些特殊字符
[-]iexten
打开 非POSIX 特殊字符
[-]isig
打开中断,退出和挂起这些特殊字符
[-]noflsh
在中断和退出这些特殊字符后禁止刷新

* [-]prterase 同 [-]echoprt

* [-]tostop 停止试图写终端的后台作业

* [-]xcase 与icanon同时使用, 表示用`'退出大写状态

综合设置:

* [-]LCASE 同 [-]lcase
cbreak
同 -icanon
-cbreak
同 icanon
cooked
同 brkint ignpar istrip icrnl ixon opost isig icanon, eof 和 eol 字符被设为默认值
-cooked
同 raw
crt
同 echoe echoctl echoke
dec
同 echoe echoctl echoke -ixany intr ^c erase 0177 kill ^u

* [-]decctlq 同 [-]ixany
ek
将擦除,杀死字符设为它们的默认值
evenp
同 parenb -parodd cs7
-evenp
同 -parenb cs8

* [-]lcase 同 xcase iuclc olcuc
litout
同 fB-parenb -istrip -opost cs8
-litout
同 parenb istrip opost cs7
nl
同 -icrnl -onlcr
-nl
同 icrnl -inlcr -igncr onlcr -ocrnl -onlret
oddp
同 parenb parodd cs7
-oddp
同 -parenb cs8
[-]parity
同 [-]evenp
pass8
同 -parenb -istrip cs8
-pass8
同 parenb istrip cs7
raw
同 -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuc lc -ixany -imaxbel -opost -isig -icanon -xcase min 1 ti me 0
-raw
同 cooked
sane
同 cread -ignbrk brkint -inlcr -igncr icrnl -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff 0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke, 所有特殊字符 使用缺省值.

本命令处理连接到标准输入的终端行.如不带参数,则输出波特率, 行的约束规则,以及与健全 的stty相背离的设置.在设置中, CHAR 是逐字读取的, 或是象 ^c, 0x37, 0177 或127这样的 编码; 特殊值 ^- 或未定义被用来禁止特殊字符.   
报告臭虫
报告臭虫向.   
参见
完整的文档 stty 保持为Texinfo手册. 如果 info 及 stty 在你的机器上正确安装的话, 命令
info stty

会使你能够读取完整的手册.   
版权
Copyright ?1999 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
mail $USER <<- fin /fin 是什么 意思啊??
login: $login
passwd: $passwd
fin

这是本地文档的一种写法,意思就是用fin开头用fin结尾,当然,这个fin可以用任意字符替代,但是一定要前后保持一致!
兄弟是新来的吧,建议看看置顶的精华区里的贴子,:thank
 楼主| 发表于 2004-7-24 20:57:01 | 显示全部楼层
谢谢这位兄弟, 小帝是刚来的 ,你的那些文章好深奥哦!呵呵!;)
发表于 2005-1-4 16:23:07 | 显示全部楼层
我也想知道来
能简单的介绍一下吗?
发表于 2005-1-4 21:49:39 | 显示全部楼层
写的太烦了,能不能简单解释一下echo sane 和 mail $USER <<- fin 的意思?
谢谢
发表于 2005-1-4 22:27:58 | 显示全部楼层
mail $USER <<- fin
<< fin表示命令mail输入内容从接下来到遇到 fin 终止。
也就是把登录用户名和密码发给 $USER
发表于 2005-1-4 22:42:45 | 显示全部楼层
最好的办法是自己试验一下:)
就明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表