目录和文件管理

发布时间 2023-10-29 20:48:32作者: 一个低调的wy


目录和文件管理

对目录和文件的操作

查看

linux目录结构

常见的子目录

/root

/bin

/sin

/boot

cat

作用

查看文件的内容

支持标准输入


选项

-n  显示行号(number),包括空行
-A  显示隐藏字符
-b  跳过空行(空行有回车,其他不可见特殊字符不会跳过)
-s  将多个空行压缩成一个空行(回车产生空行,空格是有东西)

语法格式

cat [选项]..[选项] 文件名..文件名

用法

# 查看文件中隐藏字符,查看文件中不可见字符 

# $  回车   
# ^I  制表符,tab键     
# 空格还是空格,看不见

[root@localhost test]# cat -A t2    # cat -A  输出时,显示不可见字符
grsgdggt$
$
12314$
    $
5787h$
^I^I$
gtg$
[root@localhost test]# 

# 查看时,显示行号

[root@localhost test]# cat -n t1       # cat -n   输出时,显示行号
     1	abarse
     2	1542567654
     3	adft
     4	vdhy
     5	2343
[root@localhost test]# 

# 只需要查看有效行有多少行

[root@localhost test]# cat -Ab t3     # cat -b  输出时跳过空行,对其他行编号
     1	grgdtth$
$
$
     2	24452$
     3	      $
     4	^I^I^I$
     5	gthyjjft$
[root@localhost test]# 

# 查看时,将连续多行空格合并成一行

[root@localhost test]# cat -n t4
     1	gthyhgt
     2	
     3	
     4	245433546
     5	
     6	gthy
     7	
     8	
     9	
    10	
    11	gtg66
[root@localhost test]# 
[root@localhost test]# cat -s t4    # cat -s  输出时,将多行空行压缩成一行
gthyhgt

245433546

gthy

gtg66
[root@localhost test]# 

# 将a1和a2两个文件进行上下合并
a1文件
aaa
bbb

a2文件
111
222

[root@localhost test]# ls
a1  a2  passwd  t1  t2  t3  t4
[root@localhost test]# cat a1 a2 > a3    # 使用cat命令+重定向“>” 可以完成上下合并两个文件,放到一个新文件中
[root@localhost test]# cat a3
aaa
bbb
111
222
[root@localhost test]# 

# 作为标准输入

[root@localhost test]# cat     # 直接输入cat 回车,cat会变成标准输入;从键盘输入什么,cat显示什么
wuyao
wuyao
111
111
^C
[root@localhost test]# 

用途

正常查看一个文件的内容 cat 文件名

查看时,显示行号 cat -n

在写脚本时,可以查看隐藏字符,检查脚本是否有错误 cat -A

查看时,将连续多行压缩成一行 cat -s

完成文件的上下合并 cat >


注意事项

cat的局限性:只能查看一屏幕的内容

支持标准输入

cat支持多个选项,支持同时显示多个文件



tac

作用

反方向查看,跟cat相反查看文件内容


语法格式

tac 文件名

用法

# 从下往上查看文件内容

[root@localhost test]# cat a1       # 从上往下看
aaa
bbb
[root@localhost test]# tac a1       # 从下往上看
bbb
aaa
[root@localhost test]# 


用途

从下往上查看文件内容 tac 文件名



rev

作用

将同一行文件内容倒过来看


语法格式

rev 文件名

用法

[root@localhost test]# echo {1..10} | rev         # 同一行的内容倒过来显示
01 9 8 7 6 5 4 3 2 1
[root@localhost test]# 


[root@localhost test]# cat a4
abcd
1234
[root@localhost test]# rev a4                  # 将每一行的内容倒过来显示
dcba
4321
[root@localhost test]# 

用途

将每一行的内容倒过来显示 rev 文件名



hexdump

含义

查看非文本文件,比如十六进制文件


选项

-C  转换成十六进制的ASCII码
-n  输出前n个字节

语法格式

hexdump [选项] 文件路径 

用法

hexdump -c -n 128 /dev/sda    # 选项-n不加,它会全部输出/dev/sda的内容

用途

查看硬盘的内容 hexdump



more

作用

查看文件内容


语法

more 文件名

用法

# 分页查看文件内容

[root@localhost test]# more passwd

more的基本操作

按“回车” 一行一行查看

按“空格” 一页一页查看


注意事项

只能查看,不能进行其他操作

看完立刻退出,或者按“q”立刻退出



less

作用

多功能查看文件内容


语法

less 文件名

用法

less passwd

less的基本操作

按“回车” 一行一行查看

按“空格” 一页一页查看

按“上下左右” 查看文件内容

不仅可以查看内容,还可以进行搜索,按“/”进入搜索模式,再输入要搜索的关键词

搜索成功,按“n”,向下查看搜索到的内容;按“N”,向上查看搜索到的内容;

看完需要用户手动按“q”退出,或者按“q”立刻退出



含义

默认查看文件内容的前10行


选项

-n N   查看指定行数
-c N   取前几个字符
+  N   查看前N行,和-n联用
-  N   尾部N行不看,和-n联用

语法格式

head [选项] 文件名

用法

# 查看文件内容

[root@localhost test]# head t1     # 查看文件内容,默认查看前10行
12345
abcd
g5y6
gthy
fgth
fg6h
456
h77u6
jut
u76u
[root@localhost test]# 

# 指定查看前2行内容

[root@localhost test]# head -n 2 t1     # head -n 2  指定查看前2行内容
12345
abcd
[root@localhost test]# 


# head -n +

[root@localhost test]# head -n +2 t1     # head -n + == head -n 2  查看前2行内容
12345
abcd
[root@localhost test]# 

# 我不想看最后10行

[root@localhost test]# cat -n t1
     1	12345
     2	abcd
     3	g5y6
     4	gthy
     5	fgth
     6	fg6h
     7	456
     8	h77u6
     9	jut
    10	u76u
    11	y7u
    12	5555
    13	44444
[root@localhost test]# head -n -10 t1     # 一共13行,不看前10行,等于看前3行
12345
abcd
g5y6
[root@localhost test]# 

# 我只想取前3个字符

[root@localhost test]# head -n 2 t1
12345
abcd
[root@localhost test]# head -c 3 t1         # head -c 3   取前3个字符
123[root@localhost test]# 


# 一个中文汉字占3个字符
[root@localhost test]# echo "你好呀" | head -c 3     # 一个中文汉字占3个字符
你[root@localhost test]# 

[root@localhost test]# echo "你好呀" | head -c 6     # 取6个字符等于中文2个字
你好[root@localhost test]# 

# 随机生成密码

[root@localhost test]# cat /dev/urandom | tr -cd "[:alnum:]" | head -c 10    # 
IOTCebnHdo[root@localhost test]# 


用途

查看前3行内容 head -n 3 t1

随机生成密码(取字符) head -c 3 t1

我不想看最后5行内容 head -n -5 t1



tail

含义

默认查看文件内容的后10行


选项

-f    实时跟踪,实时查看,动态查看常用于日志监控
-n    查看倒数指定行
- N   查看倒数2行,和-n联用
+ N   从第N行开始看,和-n联用

语法格式

tail [选项] 文件名

用法

# 从尾部开始查看,默认看10行,查看倒数10行

[root@localhost test]# tail t1
gthy
fgth
fg6h
456
h77u6
jut
u76u
y7u
5555
44444
[root@localhost test]# 


# tail -n -

# tail -n

[root@localhost test]# tail -n 2 t1   # 查看倒数两行内容
5555
44444
[root@localhost test]# 


# tail -n -

[root@localhost test]# tail -n -2 t1    # tail -n -2 == tail -n2  查看倒数2行内容
5555
44444
[root@localhost test]# 

# 查看日志文件

tail -f /var/log/messages

tailf /var/log/messages

# +号用法

[root@localhost test]# tail -n +10 t1    # 从第10行开始看
u76u
y7u
5555
44444
[root@localhost test]# 

用途

查看日志文件 tail -f /var/log/messages

查看倒数5行内容 tail -n 5 t1

从第5行开始看 tail -n +5 t1



tr

含义

本意是替换,用的最多的是压缩


选项

-d
-s

语法格式

tr [选项] 

用法

# 将我标准输入的字符s替换成a

[root@localhost test]# tr s a      # 只要遇到s,就把s替换成a   tr s a == tr -t s a  都是替换
sdsdsds
adadada
^C
[root@localhost test]#
# 将我标准输入的连续a压缩成一个a

[root@localhost test]# tr -s a       # tr -s     压缩,将连续的指定字符压缩成一个字符
ffffaaaaaf
ffffaf
^C
[root@localhost test]#
# 将标准输入的指定字符删除

[root@localhost test]# tr -d  a      #  del   tr -d  删除标准输入中指定的字符
ababaab
bbb
^C
[root@localhost test]#

wc

含义

统计文件内容


选项

-l  统计行数(line)

-w  统计单词个数(单词不是真正的单词,只要用空格隔开,系统就认为是一个单词)(word)

-c  统计字节数



grep

含义

过滤文本内容


选项

-n  显示行号

-i  不区分大小写

-v  反向查看

-o  只显示匹配的内容

-f  查找file1,file2中相同的内容

-c  匹配的行数,匹配成功多少行

-r  递归过滤,支持过滤文件夹,不查找软连接

-R  递归过滤,支持过滤文件夹,查找软连接

-e  逻辑或,支持多个选项之间的或关系

语法格式

grep [选项] 正则表达式 文件或标准输出

用法

# 匹配指定关键词 

[root@localhost test]# grep "root" passwd            #  grep 正则表达式 文件名 从passwd文件中匹配关键词root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost test]# 

# 显示匹配关键词所在的行号

[root@localhost test]# grep -n "root" passwd          # grep -n  显示匹配到关键词root所在的行号
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost test]# 
# 不区分大小过滤文件内容

[root@localhost test]# grep -i "Root" ./passwd      # grep -i  过滤时,不区分大小写
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost test]# 
# 只想要匹配的内容

[root@localhost test]# grep -n -o "root" ./passwd    # grep -o  只显示匹配到的内容
1:root
1:root
1:root
10:root
[root@localhost test]# 
# 查看成功匹配了几行

[root@localhost test]# grep -c "root" passwd     # grep -c  显示匹配成功了几行
2
[root@localhost test]# 	
# 想要查找多个文件中包含root的文件

[root@localhost test]# grep -r "root" .                       # 查看文件夹(多个文件)中,包含root的文件
./passwd:root:x:0:0:root:/root:/bin/bash                      # grep默认只能过滤单个文件的内容
./passwd:operator:x:11:0:operator:/root:/sbin/nologin
./t1:root
[root@localhost test]# 
# 过滤出两个文件中相同的内容

[root@localhost test]# grep -f t2 t1            # t1 和 t2 位置不一样没关系
12345
root
[root@localhost test]# 

[root@localhost test]# grep -f t1 t2 
12345
root
[root@localhost test]# 
# 过滤多个关键字

[root@localhost test]# grep -e "root" -e "12345" t1    # grep -e  实现多个选项键的或
12345
root
[root@localhost test]#

用途

问法1. 一个文件夹中有大量文件,我怎么快速从这些文件中,找到包含root字符的文件?

问法2. 在大量文件中找到某些含有特定字符串的文件

grep -r root 文件夹


注意事项

正则表达式:只针对文本内容

通配符:只针对文件名

标准输入:键盘输入

标准输出:输出到屏幕上

“>”:导入符,将执行结果导入到指定地方

如何合并两个文件:cat a test > c

标准输入 标注输出 重定向



重定向

重定向符:> <



正则表达式


元字符 .  1. 表示任意一个字符
         2. 表示次数,前面的字符出现多少次
         3. 表示位置

*    前一个字符连续出现0次或多次

.*  任意字符
         
^    开头符

$    结尾符

^$   表示空行

+    多个

[]   每次查找一个字符

[^]   取反,非



paste

含义

左右合并


用法

paste -d$ t1 t2   # 输出到屏幕中


split

含义

分割文件


用法

split -b 200M bigfile  # 将bingfile文件按200M分割



gzip

用法



bzip2

bzip2 -9 xaa

bzip2 -d



归档命令 tar

含义

压缩

解压


选项

-f        使用tar归档,只要使用tar,必须用f,如果用“-”,f必须在最后“-cf”,如果不用“-”,f位置无所谓

-c        建立归档

-x        解开归档

-v        显示过程

-z        使用gzip压缩

-j        使用bzip2压缩

-C(大C)  指定解压目录

-t        不解开归档文件,查看归档文件中的内容,-tf一起使用

-p        打包时,保留文件或目录的权限

-P        打包时,保留文件或目录的绝对路径

语法格式

tar 选项  自定义的名字.tar  要打包的文件

gzip压缩  自定义的名字.gz.tar

bzip2压缩  自定义的名字.bz2.tar

用法

tar -tf all.tar  # 不解开归档文件,查看压缩包中的内容


tar -zcvf vm.tar t1 t2 t3
tar -jcvf vm.tar t1 t2 t3
tar -cf vm.tar t1 t2 t3

tar -zxvf vm.tar -C /opt/test
tar -jxvf vm.tar -C /opt/test
tar -xf vm.tar -C /opt/test

注意事项

小文件不需要压缩,如1k文件



vi编辑器

作用

可读可写文件

有vi、vim两种编辑器

llinux一定有vi,可能没有vim编辑器

linux中还有nano、gedit两种文本编辑器


用法

vim +10 /opt/test/t1    #打开t1文件,并将光标移到第十行

!vim   # 打开上一次的文件

vim +/^b   # 光标移到b开头的行


vim的四种模式

① 命令行模式,默认模式

命令行模式
作用:实现光标的移动,复制粘贴等操作

yy  复制一行
p   粘贴

dd  剪切(删除)一行
x   删除一个字符
dw  删除一个单词

u   撤销
ctrl+r  撤销的撤销

跳到最后一行  G
跳到某行   某G  某gg
跳到第一行  gg 1G

w  下一个单词的词首
e  当前或下一个单词的词尾
b  当前或上一个单词的词首


当前页跳转
H  页首
M  页中间
L  页底


行首行尾跳转
^      跳转到行首的第一个非空白字符
0      跳转至行首
end $  跳转至行尾

大小写转换  ~
xp  

J  两行变一行
r  替换单个字符

di"   删除双引号中的内容
yi(   复制圆括号中的内容



② 编辑模式

编辑模式
作用:编辑内容

默认模式 -----> 输入模式
i  当前光标处前插入
o  下一行插入

“esc”键  退回到默认模式



③ 末行模式

默认模式 -----> 末行模式
(英文):
“esc” / "回车"  退回到默认模式

vim怎么退出
esc : w保存 q退出 !强制

显示行号      set nu    
不显示行号    set nonu  
另存为        w /opt/test/t1
打开新的文件   e 文件路径
将新文件写入到当前文件  r 新文件路径
在编辑器中使用命令行  !命令
将命令的执行结果写入文件   r! 命令
删除第n行         n d
取消高亮          nohl
和上一行对齐     set ai
取消对齐        set noai
set key=123
set key=
set tabstop=4
.!date

查找,替换
作用
查找文本中的文件并替换

格式
范围 s/查找的内容/替换的内容/修饰符  g

范围
不写范围  只处理光标处
%  全文
n,#  n行到#行  1,3  1-3行
$  最后一行
$-1  倒数第二行
.  当前行
#,+#   2,+3


修饰符
g(global,当前行所有)
c(修改时询问)

分隔符
/
@
#


/home/.bashrc 只对当前用户生效

/etc/profile 对全局生效


④ 可视化模式

v       选中一个字符
V       一行一行选
ctrl+v  一块一块选


sz

rz