Linux Shell (7)-输入输出-read、exec、lsof、mktemp、tee
- read 读取用户输入
-n1 限定输入长度为1
-p 提示语
-t 等待输入的秒数
-s 将输入隐藏(密码输入等需求,这是个黑科技!!!)
若后面不加变量var的话,默认将输入存储在REPLY中
- 标准文件描述符,一个shell最多可以打开9个文件描述符
0 STDIN 标准输入(默认键盘)
1 STDOUT 标准输出(默认终端显示器)
2 STDERR 标准错误
3)
错误输出到文件:ls -al aaa 2>error.txt
正常输出到文件:ls -al aaa 1>out.txt
所有输出到文件:ls -al aaa &>all.txt
4)重定向输出
临时重定向:>&2或者 >&1
永久重定向:exec 1>out.txt
- 重定向输入
exec 3<&0
exec 0< file
.........
exec 0<&3
6)
exec 3<> file 创建读取写入文件描述符。注:读取、写入时的指针在同一位置
exec 3>&- 关闭文件描述符
- lsof
-a 连接两个选项的输出结果
-p 进程ID,当前进程用$$表示
-d 指定要显示的文件描述符编号
输出属性
COMMAND 进程命令行名称前9个字符
PID 进程ID
USER 进程所属用户名
FD 文件描述符编号、类型(r读、w写、u读写)
TYPE 文件类型(CHR字符、BLK块、DIR目录、REG常规)
DEVICE 设备编号
SIZE 可用情况下的大小
NODE 本地文件的节点编号
NAME 文件名称
- 禁止shell输出
1>/dev/null或者2>/dev/null
- mktemp 创建临时文件
mktemp file.XXX
XXX为3个随机字符,长度按需指定,创建成功返回文件名
-t 强制在系统临时目录中创建临时文件并返回文件全路径,默认在当前目录
-d 创建临时目录
- tee T型管道输出,不仅将管道输出到STDOUT还可以输出到另外的地方
-a 输出时追加