Linux进阶
一、Linux进阶补充
1.wc命令
语法:wc [选项] 文件…
说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。
wc -l file 统计行数
wc -w file 统计单词数
cat file | wc -c 统计字符数
wc file 分别打印出文件的行数、单词数和字符数
find test/ -name "*.js" |wc -l 统计test目录下,js文件数量
2.输入/输出重定向
命令 | 说明 |
---|---|
> file | 将输出重定向到另一个文件file |
>> file | 将输出以追加的方式重定向到file |
< file | 将输入重定向到file |
3.文件描述符
文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,当某个程序打开文件时,操作系统返回相应的文件描述符,程序为了处理该文件必须引用此描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。
标准文件描述符号如下:
文件描述符 | 用途 | POSIX名称 | stdio流 |
---|---|---|---|
0 | 标准输入(数据输入到程序中) | STDIN_FILENO | stdin |
1 | 标准输出(程序打印的数据,默认为终端) | STDOUT_FILENO | stdout |
2 | 标准出错(对于错误消息,也默认为终端) | STDERR_FILENO | stderr |
举例:
(1)把当前的标准输出重定向到test文件中
[root@localhost ~]# echo 'test01' 1> test
[root@localhost ~]# cat test
test01
(2)把当前的标准输入重定向到test文件中
#接上面操作
[root@localhost ~]# read user 0< test
[root@localhost ~]# echo $user
test01 #user变量输入为test里的文本内容
(3)把当前标准出错输入到重定向test文件
[root@localhost ~]# ls -l test111
ls: 无法访问test111: 没有那个文件或目录
[root@localhost ~]# ls -l test111 2> error.txt #STDERR是流号2,使用该种数字来标识流。如果在>运算符之前放置一个数字,则它将重定向该流(如果不使用那样使用数字,则默认为流1)。
[root@localhost ~]# cat error.txt
ls: 无法访问test111: 没有那个文件或目录
(4)分配其他的文件描述符
[root@localhost ~]# exec 6>test #文件描述符6指向test文件
[root@localhost ~]# echo 'test 6' 1>&6 #不像描述符1,所有的输出都会自然找它,所以像找描述符6的时候要用&来引用它。
#这条命令就将输出指向到了描述符6,然后描述符6又将内容重定向到test文件。
[root@localhost ~]# cat test
test 6
详细可参考: