Nitro's

Nov 23, 2015 - Comments - dev

Linux Shell (7)-输入输出-read、exec、lsof、mktemp、tee

1) read 读取用户输入

-n1 限定输入长度为1

-p 提示语

-t  等待输入的秒数

-s  将输入隐藏(密码输入等需求,这是个黑科技!!!)

若后面不加变量var的话,默认将输入存储在REPLY

2) 标准文件描述符,一个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

5) 重定向输入

exec 3<&0

exec 0< file

………

exec 0<&3

6)

exec 3<> file    创建读取写入文件描述符。注:读取、写入时的指针在同一位置

exec 3>&-    关闭文件描述符

7) lsof

-a 连接两个选项的输出结果

-p 进程ID,当前进程用$$表示

-d 指定要显示的文件描述符编号

输出属性

COMMAND     进程命令行名称前9个字符

PID                    进程ID

USER                 进程所属用户名

FD                      文件描述符编号、类型(r读、w写、u读写)

TYPE                  文件类型(CHR字符、BLK块、DIR目录、REG常规)

DEVICE              设备编号

SIZE                   可用情况下的大小

NODE                本地文件的节点编号

NAME                 文件名称

8) 禁止shell输出

1>/dev/null或者2>/dev/null

9) mktemp 创建临时文件

mktemp file.XXX

XXX为3个随机字符,长度按需指定,创建成功返回文件名

-t 强制在系统临时目录中创建临时文件并返回文件全路径,默认在当前目录

-d 创建临时目录

10) tee T型管道输出,不仅将管道输出到STDOUT还可以输出到另外的地方

-a 输出时追加