随笔一篇,以便日后翻阅
前言
在Linux系统中,有成百上千个指令,不同的指令对应的指令文件,又放在不同的目录里。如果快速地查找指令的绝对路径是相当重要的
文件的搜索
基本搜索
which <指令> #显示一个指令的完整路径与别名。
pepino@Pepino:~$ which ls
/usr/bin/ls
pepino@Pepino:~$ which cat
/usr/bin/cat
whereis <指令> #搜索一个指令的完整路径以及其帮助文件。
pepino@Pepino:~$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
pepino@Pepino:~$ whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz
locate 搜索
在Linux系统中存在一个数据库,在这个数据库中保存了系统中所有文件的绝对路径,用户就可以使用下面的命令来查询文件的完整路径。
语法:locate [关键字]
将文件名或目录名中包含有此关键字的路径全部显示出来。
pepino@Pepino:~$ locate abcc
/etc/brltty/Contraction/nabcc.cti
/etc/brltty/Text/en-nabcc.ttb
/usr/share/liblouis/tables/en-nabcc.utb
/usr/share/liblouis/tables/text_nabcc.dis
注:第一次用locate需要安装两个包:
pepino@Pepino:~$ locate a
Command ‘locate’ not found, but can be installed with:
sudo apt install mlocate # version 0.26-5ubuntu1, or
sudo apt install plocate # version 1.1.8-1
pepino@Pepino:~$ sudo apt install mlocate
pepino@Pepino:~$ sudo apt install plocate
find 搜索
find是一个相当重要的查询文件绝对路径的指令
语法:find <路径> <选项> [表达式]
find查找文件的特点:
- 从指定路径下递归向下搜索文件
- 支持按照各种条件方式搜索
- 支持对搜索得到的文件再进一步的使用指令操作(删除、统计大小、复制等)
参数 | 注释 |
---|---|
name | 根据文件名寻找文件 |
user | 根据文件拥有者寻找文件 |
group | 根据文件所属组寻找文件 |
size | 根据我呢见大小寻找文件 |
type | 根据文件型寻找文件,常见类型有: |
-type f | 普通文件 |
-type c | 字符设备文件(键盘、鼠标、虚拟终端) |
-type d | 块设备文件 |
-type l | 链接文件 |
-type d | 目录 |
o | 表达式 “或” |
and | 表达式 “与” |
not | 表达式 “非” |
对查找到的文件进一步操作
find [路径] [参数] [表达式] -exec 指令 {} \;
参数 | 注释 |
---|---|
{ } | 代表find找到的文件 |
\ | 转意符号 |
; | 表示本行指令结束 |
例:find /etc -size +500k -exec ls -l {} \;
# 查找 /etc 目录下大于 500k 的文件并显示文件大小
常用的文件操作指令
命令 | 注释 |
---|---|
head / tail | 文件的查看 头 / 尾 |
more / less | 文件的查看 详细 / 简略(分屏显示) |
wc | 统计文件的行、词、字数 |
grep | 显示文件中匹配关键字的行 |
sort | 按序重排文本并送显示 |
uniq | 去除文件中相邻的重复的行 |
tr | 转换字符 |
cut | 显示文件中的某一列 |
paste | 将文本按列拼接 |
更多命令详细用法请自行了解:Linux命令大全
文件的备份、压缩与解压缩
语法:tar <选项> [文件/目录]
功能说明:用于建立、还原备份文件的工具,它也可以加入或解开备份文件内的文件,有时也称之为“打包”。
常用选项 | 注释 |
---|---|
c | 创建包 |
v | 将过程输出 |
x | 解包 |
t | 显示tar文件内容 |
r | 在tar文件尾部追加文件 |
z | 用gzip压缩或解压文件 |
j | 用bzip 压缩或解压文件 |
f | 指定文件备份名 |
-T | 从指定文件中读取欲打包的文件路径 |
-C | 将文件备份到指定的目录 |
pepino@Pepino:~$ tar cvf test.bak 1.txt 2.txt #压缩且显示过程
1.txt
2.txt
pepino@Pepino:~$ tar xvf test.bak #解压缩且显示过程
1.txt
2.txt
gzip,gunzip
Linux标准压缩工具
对文本文件可以达到75%的压缩率例: gzip man.config gunzip man.config.gz
对于用gzip压缩的文件,有一系列以z开头的指令,可以在不经解压的情况下,就直接显示文件的内容。
zcat:直接显示压缩文件的内容
zless:直接逐行显示压缩文件的内容
bzip2,bunzip2
更新的Linux压缩工具
比gzip有着更高的压缩率例: bzip2 httpd.conf.bk bunzip2 httpd.conf.bk.bz2
对于用bzip压缩的文件,也有一系列以bz开头的文件。
bzcat:直接显示压缩文件的内容
bzless:直接逐行显示压缩文件的内容
文件管理练习1
根据提供的思路自行练习,源代码见最后
1、查找“useradd”指令的绝对路径。
思路:whereis命令
2、搜索“/etc”目录下大于500Kb的文件,并显示出每个文件的大小。
思路:find参数size、exec的用法结合
3、使用一个普通用户在“/tmp”目录下创建10个文件(文件名不能相同),然后用一个相对简单的办法将这10个文件的权限改为“rwxrw-r-x”。
思路:touch批量创建文件,chmod更改文件权限
4、查询“/usr”目录中,文件名中包含有“host”的文件,并将这些文件路径保存到“/tmp/hostname”文件中。
思路:find命令name参数结合重定向输出
文件备份练习2
1、只显示boot分区的分区名与使用百分比。
思路:df 命令
2、统计整个“/etc”目录中有多少个连接文件。
思路:find命令type参数的使用以及wc统计命令
3、将/root目录备份到root.tar文件中。
思路:tar命令
4、将/boot目录压缩到boot.tar.gz文件中。
思路:tar命令z参数的使用
5、分别解开root.tar、boot.tar.gz到/tmp/rootbk/、/tmp/bootbk/目录中。
思路:tar命令解压缩参数的用法
1、查找“useradd”指令的绝对路径。
pepino@Pepino:~$ whereis useradd
useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz
2、搜索“/etc”目录下大于500Kb的文件,并显示出每个文件的大小。
pepino@Pepino:~$ sudo find /etc -size +500k -exec ls -l {} \;
-rw-r--r-- 1 root root 577771 Nov 26 21:25 /etc/ssh/moduli
-rw-r--r-- 1 root root 640012 Oct 7 2021 /etc/brltty/Contraction/zh-tw.ct
3、使用一个普通用户在“/tmp”目录下创建10个文件(文件名不能相似),然后用一个相对简单的办法将这10个文件的权限改为“rwxrw-r-x”。
pepino@Pepino:~$ touch file{1..10}
pepino@Pepino:~$ chmod 765 file{1..10}
pepino@Pepino:~$ ls -l
-rwxrw-r-x 1 pepino pepino 0 Apr 21 21:26 file1
-rwxrw-r-x 1 pepino pepino 0 Apr 21 21:26 file10
-rwxrw-r-x 1 pepino pepino 0 Apr 21 21:26 file2
-rwxrw-r-x 1 pepino pepino 0 Apr 21 21:26 file3
-rwxrw-r-x 1 pepino pepino 0 Apr 21 21:26 file4
-rwxrw-r-x 1 pepino pepino 0 Apr 21 21:26 file5
-rwxrw-r-x 1 pepino pepino 0 Apr 21 21:26 file6
-rwxrw-r-x 1 pepino pepino 0 Apr 21 21:26 file7
-rwxrw-r-x 1 pepino pepino 0 Apr 21 21:26 file8
-rwxrw-r-x 1 pepino pepino 0 Apr 21 21:26 file9
4、查询“/usr”目录中,文件名中包含有“host”的文件,并将这些文件路径保存到“/tmp/hostname”文件中。
pepino@Pepino:/usr$ sudo find -name "host" > /tmp/hostname1
1、只显示boot分区的分区名与使用百分比。
pepino@Pepino:~$ df /boot
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 40453376 10008480 28357780 27% /
2、统计整个“/etc”目录中有多少个链接文件。
pepino@Pepino:/etc$ sudo find -type l | wc -l
822
3、将/root目录备份到root.tar文件中。
pepino@Pepino:~$ sudo tar cvf root.tar /root
4、将/boot目录压缩到boot.tar.gz文件中。
pepino@Pepino:~$ sudo tar czf boot.tar.gz /boot
5、分别解开root.tar、boot.tar.gz到/tmp/rootbk/、/tmp/bootbk/目录中。
pepino@Pepino:~$ mkdir -p "/tmp/rootbk/" && tar xf root.tar -C /tmp/rootbk/
# 解压的前提是目录存在。不然会报错。这里是因为原先没有 /tmp/rootbk/ 目录,所以在解压过程中直接创建一个,或者可以先创建目录再解压到对应地方
pepino@Pepino:~$ mkdir -p "/tmp/bootbk/" && tar xzf boot.tar.gz -C /tmp/bootbk/
# 注意解压参数 xzf 的用法