文章目录
- 文件读取
- cat和tac命令
- head和tail命令
- more和less命令
- wc和du命令
文件读取
cat和tac命令
cat
命令将文件中全部内容都打印到屏幕上,适合较小文件的读取,不适合大文件。
tac
命令是从最后一行开始反向打印,这一点与cat
命令正好相反。
语法:cat/tac [-参数] [文件名]
cat命令参数:
符号 | 说明 |
---|---|
-n | 显示行号 |
-b | 显示行号,但不显示空行 行号 |
-E | 显示$ 结尾符 |
-s | 如何正好有连续的两行或以上 的空行,则显示为1 行空行 |
-T | 把Tab 键^I 显示出来 |
-v | 显示特殊字符,除了 LFD 和 TAB 之外 |
-A | 显示全部内容,列出所有隐藏符号,等价于-vET |
-e | 等价于-vE |
-t | 等价于-vt |
例如:
[wjj@learning study]$ cat study.txt
这是第一行
好好学习
天天向上
[wjj@learning study]$ tac study.txt
天天向上
好好学习
这是第一行
1)使用-n
显示行号
[wjj@learning study]$ cat -n study.txt
1 这是第一行
2 好好学习
3 天天向上
2)显示多个文件
[wjj@learning study]$ echo "这是第一个文件" > study1.txt
[wjj@learning study]$ echo "这是第二个文件" > study2.txt
[wjj@learning study]$ echo "这是第三个文件" > study3.txt
[wjj@learning study]$ cat study1.txt study2.txt study3.txt
这是第一个文件
这是第二个文件
这是第三个文件
[wjj@learning study]$ cat -n study1.txt study2.txt study3.txt
1 这是第一个文件
2 这是第二个文件
3 这是第三个文件
3)结合重定向符号向文件中输入
符号 | 说明 |
---|---|
< | 将数据输入到左侧,覆盖原来的数据 |
<< | 将数据输入到左侧,追加数据 |
> | 将数据输入到右侧,覆盖原来的数据 |
>> | 将数据输入到右侧,追加数据 |
结合重定向符号,进行多行输入:
[wjj@learning study]$ cat > study.txt << "EOF"
> 这是第一行
> 好好学习
> 天天向上
> EOF
如果只进行单行输入,利用echo
命令即可
[wjj@learning study]$ echo "hello wolrd" >> hello.txt
[wjj@learning study]$ cat hello.txt
hello wolrd
cat
和echo
命令在重定向输入时,如果该文件不存在,那么系统会自动生成该普通文件。
4)清空文件全部内容
/dev/null
称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF。配合重定向操作符,可以实现清空某个文件的目的。
例如:
[wjj@learning study]$ echo "hello world" > hello.txt
[wjj@learning study]$ cat hello.txt
hello world
[wjj@learning study]$ cat /dev/null > hello.txt
[wjj@learning study]$ cat hello.txt
[wjj@learning study]$ #文件已经空了,因此不显示
head和tail命令
head
从头开始打印文件,不加参数默认打印前十行。
tail
从尾开始打印文件,不加参数默认打印后十行。
语法:head/tail [-参数] [文件名]
例如:
[wjj@learning study]$ for i in {1..100};do echo "${i}" >> number.txt;done #输入1~100至文件中
[wjj@learning study]$ head number.txt
1
2
3
4
5
6
7
8
9
10
[wjj@learning study]$ tail number.txt
91
92
93
94
95
96
97
98
99
100
cat可选择参数:
符号 | 说明 |
---|---|
-c | 显示前n个字符 |
-n | 显示前n行 |
-q | 不显示文件名 |
-v | 显示文件名 |
参数示例:
[wjj@learning study]$ head -c 10 number.txt #因为每行结尾有换行符`$`,因此10个字节只打印了五个数字
1
2
3
4
5
[wjj@learning study]$ head -n 5 number.txt
1
2
3
4
5
[wjj@learning study]$ head -5 number.txt # 单独使用-n选项时,也可以这么写
1
2
3
4
5
[wjj@learning study]$ head -q -n 5 number.txt #head默认不打印文件的名
1
2
3
4
5
[wjj@learning study]$ head -v -n 5 number.txt
==> number.txt <==
1
2
3
4
5
tail命令可选参数:
符号 | 说明 |
---|---|
-c | 显示前n个字符 |
-n | 显示前n行 |
-q | 不显示文件名 |
-v | 显示文件名 |
-f | 检测文件,写入后检测 |
-F | 检测文件,保存后即可读取 |
-s | 与-f搭配使用,表示休眠间隔 |
通过-f和-F选项会进入到检测界面,按
ctrl C
退出。
-f
选项只有在文件写入后才能检测到。(例如:vim编辑文件,必须完全退出vim环境才能检测到最新信息)
-F
选项支持一边写入,一遍读取,在vim中只要w
保存,即可检测到。
more和less命令
语法:more/less [-参数] [文件名]
more
命令可以分屏打印文件,其工作原理与cat
一样,都是将文件中全部信息提取出来,占用内存不利于大文件读取。
less
命令是打印多少提取多少,不占用内存。
more
命令只能向后翻,不能向前翻。
less
命令可以随意浏览,并且可以使用小键盘上下移动。
使用more和less命令的使用技巧:
- 空格——翻篇
- 回车——下一行
- q——退出
wc和du命令
语法:wc/du [-参数] [文件名]
wc命令如果不加任何参数,那么它会返回一个文件的
[行数] [单词数] [字节数]
。其中单词数是以空格进行区分。
wc命令可选参数:
符号 | 说明 |
---|---|
-l | 只显示行数 |
-w | 只显示单词数数 |
-c | 只显示字节数 |
du命令可选参数:
符号 | 说明 |
---|---|
-a | 显示目录中个别文件的大小 |
-b | 显示目录或文件大小时,以字节为单位 |
-c | 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和 |
-D | 显示指定符号连接的源文件大小 |
-h | 以K,M,G为单位,提高信息的可读性 |
-H | 与-h参数相同,但是K,M,G是以1000为换算单位 |
-k | 以1024 bytes为单位 |
-l | 重复计算硬件连接的文件 |
-L<符号连接> | 显示选项中所指定符号连接的源文件大小 |
-m | 以1MB为单位 |
-s | 仅显示总计 |
-S | 显示个别目录的大小时,并不含其子目录的大小 |
-x | 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过 |
wu命令示例:
[wjj@learning study]$ wc number.txt learning.txt
130 130 412 number.txt
3 4 28 learning.txt
133 134 440 total #总计
du命令示例:
[wjj@learning ~]$ du -a study/
4 study/pos_param.sh
4 study/learning1.txt
4 study/RunShell.sh
4 study/study2.txt
4 study/learning.txt
12 study/.number.txt.swp
4 study/study3.txt
4 study/study.txt
4 study/study1.txt
4 study/number.txt
4 study/makeuser.sh
56 study/ #总计
[wjj@learning ~]$ du -s study/
56 study/