文章目录

  • 文件读取
  • cat和tac命令
  • head和tail命令
  • more和less命令
  • wc和du命令


文件读取

linux 读取指定服务器指定文件夹下的文件 是否存在 java_linux

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

catecho命令在重定向输入时,如果该文件不存在,那么系统会自动生成该普通文件。

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命令可以随意浏览,并且可以使用小键盘上下移动。

使用moreless命令的使用技巧:

  • 空格——翻篇
  • 回车——下一行
  • 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/