cat 读取文件内容

cat 命令用于查看纯文本文件,一般都是内容较少的。

cat 功能

1. 查看文件内容
cat file.txt

2. 多个文件合并
cat file.txt file2.txt > file3.txt

3. 非交互式编辑或追加内容
cat >> file.txt << EOF
床前明月光
EOF

4. 清空文件内容
cat /dev/null > file.txt 

cat 参数

用法:cat [选项]... [文件]...
将文件或标准输入组合输出到哦标准输出

清空文件内容,慎用
> 文件名

  -A, --show-all           等价于 -vET
  -b, --number-nonblank    对非空行输出行编号
  -e                       等价于 -vE
  -E, --show-ends          在每行结尾处显示 $ 
  -n, --number             对输出所有的行编号
  -s, --squeeze-blank      不输出多行空行
  -t                       与-vT 等价
  -T, --show-tabs          将跳格字符显示为^I
  -u                       (被忽略)
  -v, --show-nonprinting   使用^ 和M- 引用,除了LFD和 TAB 之外
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出
  
  如果没有指定文件,或者文件为"-",则从标准输入读取。

cat 案例

cat 的功能参数用法

1. 查看文本内容,以及功能参数
cat file.txt

2. 对非空显示行号
cat -b file.txt

3. 多所有行显示行号
cat -n file.txt

4. 在每行结尾加上$
cat -n -E gushi.txt

5. 减少空行数量,多行空行仅为一个
cat  -s shuzi.txt

cat 命令合并多个文件

合并多个文件内容写入到新的文件中
cat shuzi.txt douyin.txt > ./aaa.txt

非交互式写入文件内容

cat >> new.txt << EOF
>nihao alex
>EOF

cat 清空文件

1. 直接清空文件, 会留下一个空行
echo > shuzi.txt 

2. 直接清空,不留下任何痕迹
> shuzi.txt

3. 使用系统默认的黑洞文件进行覆盖
cat /dev/null > file.txt 

其他读取文件内容命令

tac 命令

与 cat 命令查看文件结果相反

管道符

管道符用法

1. 对字符串进行二次过滤
查看 aaa.txt 文本内容,并对内容进行二次过滤,找出相关 “床” 的行
cat aaa.txt | grep 床

grep 命令

过滤字符串信息的命令

more命令 less 命令

分屏查看文本内容的命令

语法
more 文件名  	# 分屏显示文件内容

按下enter回车是下一行
空格是向下滚动一个屏大小
=显示当前行号
按下q 是退出more

head 和 tail 命令

查看文件开头的N行,默认是10行

语法
head -5 文件名

参数
-c 输出多少个字符

tail 默认从后向前看10行,也可以指定行

tail -5 文件名

参数
-f 实时刷新文件内容变化,主要检测日志的变化
tail -f log.txt

-F 不断的打开文件

cut 命令

cut 在文件的每一行中提取片段

在每个文件 FILE 的各行中,把提取的片段显示在标准输出

sort 命令

sort 命令将输入的文件内容按照规则排序,然后输出结果

用法:sort [选项]... [文件]...
 或:sort [选项]... --files0-from=F
 
 串联排序所有指定文件并将结果写到标准输出
  -b, --ignore-leading-blanks		 忽略前导的空白区域
 	 -n, --numeric-sort          		根据字符串数字比较
 	 -r, --reverse               		逆序输出排序结果
 	 -u, --unique										配合-c,严格校验排序;不配合-c,则只输出一次排序结果
 	 -t, --field-separator=分隔符		使用指定的分隔符代替非空格到空格的转换
 	 -k, --key=KEYDEF          			位置在1,开始一个key, 位置在2 终止(默认为行尾)
 	  

案例

1. 对文件第一个字符进行排序,默认从小到大
sort -n file.txt

2. 堆排序结果反转, 从大到小
sort -n -r file.txt

3. 对排序结果去重
sort -u file.txt

4. 指定分隔符号,指定区域,进行排序
sort -n -t "." -k 4 ip.txt

uniq 命令

uniq 命令可以输出或者忽略文件中的重复行,常与sort排序结合使用

用法:sort [选项]... [文件]...
从输入文件或者标准输入中筛选相邻匹配行并写入到输出文件或标准输出
不附加任何选项时匹配行将在首次出现出被合并

-c, --check, --check=diagnose-first	检查输入是否已排序,若已有序则不进行操作
-d, --dictionary-order	只考虑空白区域和字母字符
-u, --unique		配合-c,严格校验排序;不配合-c,则只输出一次排序结果
 

案例

1. 去掉连续重复的行
uniq file.txt

2. 结合sort使用,去重更精准
sort -n file.txt | uniq

3. 统计每一行重复次数
sort -n file.txt | uniq -c

4. 只找出文件中重复的行,且统计重复出现的次数
sort -n file.txt | uniq -c

5. 找出只出现过一次的行
sort -n file.txt | uniq -c -u

wc 命令

wc 命令用于统计文件的行数,单词,字节数

用法:wc [选项]... [文件]...
 或:wc [选项]... --files0-from=F
 
 -c, --bytes            打印字节数
  -m, --chars            打印字符数
  -l, --lines            打印行数
  -L, --max-line-length  打印最长行的长度
  -w, --words            单元单词数

案例

1. 统计文件的行数
 wc -l sort.txt 

2.统计单词数量
echo "alex haohao"  | wc -w

3. 统计字符数量
echo "hello" | wc -m

4. 输出最长行的字符数
cat sort.txt | wc -L

tr 命令

tr 命令从标准输入中替换,缩减或者删除字符,将结果写入到标准输出

用法:tr [选项]... SET1 [SET2]
从标准输入中替换,缩减和 删除字符,并将结果写入到标准输出

  -c, -C, --complement    取代所有不属于第一行字符集的字符
  -d, --delete            删除所有属于第一行字符集的字符
  -s, --squeeze-repeats   把连续重复的字符以单独一个字符表示
  -t, --truncate-set1     先删除第一个字符集较第二个字符集多出的字符

案例

1. 替换标准输入中的大小写
echo "my name is alex" | tr '[a-z]' '[A-Z]'

2. 使用 -d 删除参数
echo "my name is alex and i am 999 yers old" | tr -d '[a-z]'

3. 把文件中的内容进行替换
 tr 'b' 'B' < sort.txt 
 
4. 标准输入删除连续重复的字符
echo "dddfdasdf ddf " | tr -s 'd'

find 命令

find 命令用来在指定的目录下查找文件。任何未予参数之间的字符串都视为欲查找的目录名。

如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。

并且将查找到的子目录和文件全部进行显示。

语法

find 查找目录和文件
语法
find 路径 -命令参数 【输出形式】
路径:告诉find在哪去找你要的东西

案例

1. 根据名字,进行全盘搜索
find / -name "index.html"

2. 指定目录进行搜索
find /opt -name "index.html"

3. 指定最深的目录层次
find / -maxdepth 1 -name "index.html" 

查看文件路径

which ls
whereis ls

tar 命令

tar 命令在 Linux 系统里,可以实现对多个文件进行压缩,打包,解包

用法: tar [选项...] [FILE]...

案例

1. 对 tmp 下所有内容打包,生成 alltmp.tar 文件 
tar -cvf alltmp.tar  ./*

2. 解包操作
tar -xvf ../alltmp.tar  ./

3. 对 tmp 下的所有内容打包且压缩,节省磁盘空间
tar -czvf alltmp.tar.gz ./*

4. 解压解包操作
tar -xzvf ../alltmp.tar.gz  ./*

5. 拆开压缩包中的某一个文件
tar -ztvf alltmp.tar.gz 
tar -zxvf alltmp.tar.gz  ./aaa.txt

6. 指定目录解压缩
tar -zxvf alltmp.tar.gz -C ./alltmp

7. 排除文件解压缩
tar -ztvf alltmp.tar.gz 
tar -zxvf ./alltmp.tar.gz  --exclude aaa.txt -C alltmp

gzip 命令

1. 对当前所有的 txt 文件进行 gzip 压缩
gzip ./*.txt

2. 列出 gzip 压缩文件的内容
gzip -l aaa.txt.gz 


注意:gzip 无法压缩文件夹,必须先 tar 对文件夹打包后,才可以进行 gzip 压缩

zip 命令

zip 是一个应用广泛的跨平台压缩工具,压缩文件的后缀为zip文件,还可以压缩文件夹

1. 压缩 tmp 下所有内容
zip alltmp2.zip ./*

2. 对文件进行解压缩
unzip alltmp2.zip