Linux目录和文件管理

发布时间:2023年12月21日

Linux目录和文件管理

一、Linux目录结构

1、树形目录结构

2、根目录

  • 所有分区、目录、文件等的位置
  • 整个树形目录结构中,使用独立的一个“/”表示

3、常见的子目录

  • /root /bin /boot /dev /etc /home /var /usr /sbin
常见子目录作用
/root管理员的宿主 (家)目录
/home/xxx除 root 用户之外的普通用 户的家目录
/bin存放二进制文件,所有用户可执行的命令。实际是个软链接,链接到/usr/bin
/sbin存放二进制文件,只有管理员可执行的管理命令。软链接到/usr/sbin
/boot系统内核、启动文件目录
/dev存放设备文件(光驱、硬盘等)
/etc存放系统程序和大部分应用程序 (rpm、yum安装)的配置文件
/var存放可以变化的文件,包括各种日志文件
/lib存放系统程序的动态连接共享库文件(类似于windows里的DLL文件)。软链接到/usr/lib
/usr存放系统用户工具和程序
/media可拆卸的媒介挂载点,例如U盘、光驱等
/mnt用于临时挂载储存设备的目录
/opt第三方应用程序安装所存放的目录
/tmp存放系统的临时文件
/proc存放映射系统信息的文件

/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息, 甚至可以通过更改其中某些文件来改变内核的运行状态

二、查看文件内容

1、查看文件内容-cat

  • 直接显示出整个普通文件的内容(适合比较短小的文件,因为会显示整个文件内容,如果内容过多会显示不全)
  • 命令格式:cat [选项] 文件名
常用选项
-A: 显示隐藏符
-n∶对所有输出的行数编号
-b∶对于空白行不编号
-s∶将所有的连续的多个空行替换为一个空行
-A: 显示隐藏符

[root@localhost data]# vim 1
[root@localhost data]# cat -A 1
bhdcbcjdc$
bhjcvx   $
  $
  $
iusgvjbsh$
$

-n∶对所有输出的行数编号

[root@localhost data]# cat -n 1
     1  bhdcbcjdc
     2  bhjcvx
     3
     4
     5  iusgvjbsh
     6

-b∶对于空白行不编号

[root@localhost data]# cat -b 1
     1  bhdcbcjdc
     2  bhjcvx
     3
     4
     5  iusgvjbsh

-s∶将所有的连续的多个空行替换为一个空行

[root@localhost data]# cat -n 11
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
[root@localhost data]# cat -s 11
  • 标准输入:你输入的指令

  • 标准输出:电脑反馈给你的信息

  • 错误输出:电脑的一些报错信息

重定向( > ):重新定义标准输出方向

一个是覆盖:>

两个是追加:>>

image-20231221175723124

如何将两个文件合并
  • cat a b >c重定向,上下合并
[root@localhost data]# vim a
[root@localhost data]# vim b
[root@localhost data]# vim b
[root@localhost data]# cat a
aaaaaaaaaaaaaaaaaaa
[root@localhost data]# cat b
bbbbbbbbbbbbbbbbbb
[root@localhost data]# cat a b
aaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbb
[root@localhost data]# cat a b > c
[root@localhost data]# cat c
aaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbb

image-20231221180921000

  • paste A B >C(左右合并)
[root@localhost data]# vim A
[root@localhost data]# vim B
[root@localhost data]# cat A
zhangsan
lisi
[root@localhost data]# cat B
123
456
[root@localhost data]# paste A B
zhangsan        123
lisi    456

image-20231221181826289

2、查看文件内容-more

  • 全屏方式分页显示文件内容,适合长文件
  • 命令格式:more [选项] 文件名 (选项基本不使用)
交互操作方法
    按Enter键向下逐行滚动
    按空格键向下翻一页
    按b键向上翻一屏
    按q键退出

下翻到最后一页后会自动退出
结合管道操作(例如∶ Is -R/etc|more)无法向上翻页
|:管道符号,作用是将左边执行的命令交付给右边再执行一次

3、查看文件内容-less(与more命令相同,但扩展功能更多)

  • 命令格式:less [选项] 文件名
交互操作方法
    Page Up 向上翻页,Page Down 向下翻页
    按"/"键查找内容,"n"下一个内容,"N"上一个内容
    通过个和l方向键可以实现上下逐行滚动
    其他功能与 more 命令基本类似

下翻到最后一页后不会自动退出
结合管道操作使用时可以向上翻页

4、查看文件内容-head

  • 用途:查看文件开头的一部分内容,默认行数为10行
  • 命令格式:head -n 数字 文件名 (看文件的前数字行)
[root@localhost data]# vim test
[root@localhost data]# head -n 2 test  (查看test文件的前2行)
1
2
  • seq 10 | head -n -数字:去掉最后数字行
[root@localhost data]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@localhost data]# seq 10|head -n -3
1
2
3
4
5
6
7

5、查看文件内容-tail

  • 用途:查看文件结尾的少部分内容,默认行数为10行
  • 命令格式:tail -n 数字 文件名 (看文件的后数字行)

? tail 文件名 = tail -f 文件名 :实时追踪查看

[root@localhost data]# vim test
[root@localhost data]# tail -n 5 test  (查看test文件的后5行)
7
8
9
10

image-20231221185231171

  • seq 10 | tail -n +数字:从数字行开始显示
[root@localhost data]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@localhost data]# seq 10|tail -n +3
3
4
5
6
7
8
9
10

三、统计和检索文件内容

1、统计文件内容-wc

  • 统计文件中的单词数量(Word Count)等信息
  • 命令格式:wc [选项] 目标文件
常用命令选项
-l:统计行数
-w:统计单词个数
-c:统计字节数
注:不带任何选项的wc命令,默认同时使用-lwc三个选项(换行符系统默认也是一个字符)

2、检查和过滤文件内容-grep

正则表达式:匹配文件的字符串(grep后面跟正则表达式)

通配符:匹配文件的名字(ls / find -name后面跟通配符)

  • 在文件中查找并显示包含指定字符串的行
  • 命令格式:grep [选项] 查找条件 目标文件
常用命令选项
-i∶ 查找时不区分大小写
-v∶ 输出与查找条件不相符的行(反向查询,反向匹配)
-c∶ 只输出匹配到的总行数(不是匹配到的次数)
-n∶ 显示匹配行及行号
-o∶ 精确匹配,即"仅匹配"之意。
-f:  对比两个文件的相同行
-e∶ 实现可多个查找条件的匹配,逻辑or关系
-E∶ 支持使用扩展正则表达式,相当于使用egrep命令(i要放在e前面)
-A n∶ 显示匹配后和它后面的n行。
-B n∶ 显示匹配行和它前面的n行。
-C n∶ 匹配行和它前后各n行。
[root@localhost data]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.11  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::53e9:a034:7de9:f2b9  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:42:0c:18  txqueuelen 1000  (Ethernet)
        RX packets 17685  bytes 1232746 (1.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4544  bytes 447044 (436.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost data]# ifconfig ens33|grep netmask
        inet 192.168.10.11  netmask 255.255.255.0  broadcast 192.168.10.255
只看ifconfig ens33 的第二行        找出
[root@localhost data]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
过滤/etc/passwd 文件中含有 root 关键字的行

image-20231221191430993

查找条件设置
要查找的字符串以双引号括起来
“^......”表示以......开头,
“.......$”表示以.......结尾
“^$”表示空行

1、找出两个文件中相同的部分
(将a文件作为条件去匹配b文件,得出a文件和b文件相同的部分)
grep -f a文件 b文件

2、在某一文件夹中,快速找到所有含有root字符的文件
grep  -r 表达式(文件夹)(如:grep  -r  root /etc/)

3、以 root 开头:grep "^root" passwd

4、以 root 结尾:grep "root$" passwd

5、空行:grep "^$" passwd

6、非空行:grep -v "^$" passwd

[root@localhost data]# grep "^root" passwd
[root@localhost data]# grep "root$" passwd
[root@localhost data]# grep "^$" passwd

[root@localhost data]# grep -v "^$" passwd
1
2
3
4
5
6
7
8
9
10

3、分割文件-split

  • 我有一个10G的文件,怎么分割成小的文件存稿:split -b 100M 文件名

四、备份恢复文档

1、压缩命令gzip、bzip2命令

1.1 制作压缩文件
  • 格式:gzip [-9] 文件名
  • 格式:bzip2 [-9] 文件名
  • *9为最大压缩,范围是1~9,默认压缩比例为6
1.2 解开压缩文件(-d)
  • 格式:gzip -d .gz格式的压缩文件
  • 格式:bzip -d .bz2格式的压缩文件
1.3 压缩命令gunzip、bunzip2命令
①、gunzip命令
  • gunzip等价于gzip -d
  • gunzip mkfile.gz
  • gzip -d mkfile.gz
②、bunzip2命令
  • bzip2和bunzip2命令用法与gzip、gunzip命令基本相同

2、归档命令-tar

  • 常用的方法,bzip与gzip命令会将源文件直接压缩或者解压成新文件,使用tar源文件不会消失,并且会产生一个新的压缩文件
  • 没有压缩功能
2.1 制作归档文件,释放归档文件
  • 格式:tar [选项] 归档文件名 源文件或目录
  • 格式:tar [选项] 归档文件名 [-c 目标目录]
2.2 常用命令选项
  • tar归档,对选项的顺序有要求(加 - 时,f一定要在最后一位。如:tar -zcvf ;tar fzcv)

  • -f 代表使用tar归档,只要出现tar一定要出现f

  • 建立归档:tar fzcv 自定义文件名 tar.gz

  • 解压:tar xf 自定义文件名 .tar.gz -C /mnt/将自定义文件解压到mnt文件

-c∶ 创建.tar 格式的包文件
-x∶ 解开.tar 格式的包文件
-C∶ 解压时指定释放的目标文件夹
-f∶ 表示使用归档文件(必须携带,归档文件)
-P∶ 打包时保留文件及目录的权限
-P∶ 打包时保留文件及目录的绝对路径
-t∶ 列表查看包内的文件(不解开压缩包,查看压缩包中的内容)
-v∶ 输出详细信息(Verbose)(显示压缩解压缩过程)
-j∶ 调用 bzip2 程序进行压缩或解压
-z∶ 调用 gzip 程序进行压缩或解压

tar  fzcv 压缩包的名字(*.tar.gz):需要压缩的文件

五、VI文本编辑器

1、文本编辑器vi命令

1.1 文本编辑器作用
  • 创建或修改文本文件
  • 维护Linux系统中的各种配置文件
1.2 Linux中最常用的文本编辑器
  • vi:LUNIX操作系统的默认文本编辑器
  • vim:vim是vi文本编辑器(一般简称vi编辑器)的增强版本

2、vi编辑器的工作模式

2.1 三种工作模式
  • 命令模式:启动vi编辑器后默认进入命令模式,该模式中主要完成如光标移动、字符串查找,以及删除、复制、粘则贴文件内容等相关操作
  • 输入模式∶该模式中主要的操作就是录入文件内容,可以对文本文件正文进行修改、或者添加新的内容。处于输入模式时,vi编辑器的最后一行会出现"_- INSERT–"的状态提示信息
  • 末行模式∶ 该模式中可以设置vi编辑环境、保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时,vi编辑器的最后一行会出现冒号"∶"提示符
命令模式:才进去的那个模式
  • 此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作

常用选项

##行间跳转
数字 G:跳到数字行
gg:首行
G:末行

##行内跳转
0 或 ^:跳转至行首
end 或 $:跳转至行尾
w:一个单词一个单词跳转

##撤销
u:撤销一次
U:撤销全部
Ctrl+r:取消撤销

##复制
y:复制
yy:复制一行
10 yy:复制10行

##粘贴
p:贴在光标下面
P:贴在光标上面

##删除
d:删除,剪切
dd:删除一切
10 dd:删除10行
dw:删除一个单词
x:删除一个字符
d  i  {:删除括号里面的内容

##替换
r:只替换光标所在的一个字符
R:切换成REPLACE模式,按ESC键回到命令模式
输入模式:编辑文本

命令模式----------->输入模式 i o

输入模式----------->命令模式 esc

常用选项

i:当前光标处插入
o:下一行插入
末行模式:辅助操作

查找替换:先查找文件中的内容,然后换掉它

格式:范围 s/文章中的旧的内容/替换的内容/修饰符

不写范围:光标当前行

范围

  • %代表全文;

  • #代表#一行(#代表数字);

  • $代表最后一行2,5代表2到5行;

  • $-1代表倒数第二行;

修饰符

  • i:忽略大小写

  • g:全部替换,默认情况下,每一行只替换第一次出现

  • c:全局替换,每次替换前询问

常用选项

快捷键功能效果
:q退出不保存
:q!强制退出不保存
:w保存
:w 新文件名另存为新文件:
:wq :zz :x保存并退出
:r 其他文件名在当前文件中读入其他文件内容
!命令执行命令
:e 其他文件名(如果已修改需要加e!)打开新文件进行编辑
:r!命令读入命令
: [替换范围] s /旧的内容/新的内容[/g]
: s /old/new替换当前行中的第一个old改为new
: s /old/new/g替换当前行中的所有old改为new
:#,# s /old/new/g#到#行所有old改为new
:%s /old/new/g%代表全文 全文替换所有old改为new
# d删除#第#行
#,# d删除#到#行
#,# y复制#到#行
:set nu 或:set nonu加行号 不显示行号
:set cul (:set nocul )光标所在行有下划线(取消)
no hl取消高亮
:set ai对齐 回车后和上一行对齐
:set all 可以看所有的一些帮助可以看所有的一些帮助
set key=password (大X)加密码
set key=空白取消密码
set tabstop=4 (set ts=4)tab 一次为四个空格
.!命令 (who,date )将date命令插入当前行注意会覆盖当前行
给所有的开头加上#:% s/^/#/
将所有行开头的#去掉:% s/^#//

注意点:配置文件只有开头的#才是注释
2.2 不同模式之间的切换

命令模式----------->末行模式::(英文冒号)

末行模式----------->命令模式:esc

命令模式----------->输入模式 i o

输入模式----------->命令模式 esc

文章来源:https://blog.csdn.net/2301_81272194/article/details/135140589
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。