linux基础学习(4)-文件相关命令

搜索文件

whereis命令

whereis命令用来定位指令的二进制程序、源代码和man手册等相关文件的路径。

whereis [选项] 参数

选项 含义
-b 只查找二进制文件
-f 不显示文件名前的路径名称
-m 只查找说明文件
-s 只查找源代码文件
-B/M/S<目录> 只在限定的目录下查找二进制/帮助/源代码文件

说明:
whereis并不是在瓷盘中漫无目的的查找,而是在一个数据库中查找的。这也就意味着你使用whereis命令的搜索结果并不一定正确(例如刚刚安装的文件就不会被搜索出来)

which命令

which命令是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。通常用于确定系统中是否安装了指定的软件。

which google-chrome #/usr/bin/google-chrome

type命令

严格意义上并不是一个检索命令,它用于区分某个命令是shell自带的还是外部提供的。如果一个命令是外部提供的,使用-p参数可以显示命令的路径,相当于which命令。

type cd #cd是shell内建的
type google-chrome #google-chrome in /usr/bin/google-chrome

find命令

find是linux下最强大的文件搜索命令,但是其效率是非常差的,因为不再根据数据库搜索,而是遍历整个磁盘。

find path -option [ -print ] [ -exec -ok command ] {} ;
path:表示find命令所查找的目录,可以使用. ~ /等,默认但前文件夹
-option:表示查询的参数
-print:表示将查找的文件输出到标准输出,默认
-exec:对查找到的文件执行该参数所给数的shell命令,相应命令的形式为 command {} ;
-ok:与exec类似,但选项更加安全,在执行每一个命令之前,都会给出提示让用于确认执行
解释下command {} ;
{}相当于一个占位符,find寻找的文件会替换它, 而分号是结束符号,但是在shell中分号有特殊意义所以需要使用\转义。
其意义就是,command find得到的文件 ;
-optin参数:
-name 按照文件名查找文件
-iname 按照文件名查找,但是忽略大小写
-perm 按照文件权限来查找文件
-type 查找某一类型文件 后面接 b-块设备文件 c-字符设备文件 d-目录 p-管道文件 f-普通文件 l-符号链接文件 s-socket文件
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后N天访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后N天被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后N天被改变文件数据的文件
n的写法有 n 表示n小时/天的那时候, +n表示n小时/天以前的所有, -n表示n小时/天之内
-size nc/b/w/k/M/G c-字节 b-512字节默认 w-1024字节 k-1kb M-1Mb G-1Gb
size后面的n一样, n-表示确定的n字节, +n表示大于n字节 -n表示小于n字节

实例:

find ~ -name "*.png" #搜索家目录下所有png文件
find / -mtime -1 -size +10M -exec ls -l {} ; #搜索1天内状态变化的大于10M的文件并用ls -l列出

上面只是介绍了find命令的一些常用方法和选项,find命令非常强大,强大到可以用一本书来描述,只需要记着find可以搜索几乎你想到的所有文件以任何方法,在你不知道怎么用的时候可以百度一下。

打包和压缩文件

打包也称为归档,指的是一个文件或目录的集合。归档文件是没有经过压缩的,它占用的空间是其中所有文件和目录的总和。
与归档类似,压缩文件也是一个文件和目录的集合,且这个几个也被存储在一个文件中,但他们的不同在于,压缩文件采用不同的存储方式,使其所占用的磁盘空间比集合中所有文件大小的总和要小。
linux下,常用的归档工具有2个 tar和dd,常用的压缩命令有很多。

tar命令打包解包

linux下最常用的归档命令就是tar。使用tar命令归档的包通常称为tar包,tar包文件都是以.tar结尾的。

tar命令打包

tar [选项] 包名 源文件或目录

选项 含义
-c 将多个文件或目录进行打包
-A 追加tar文件到归档文件
-f 包名 指定包的文件名。包的扩展名是用来给其他人识别的,所以一定要正确指定扩展名(虽然并不必须)
-v 显示打包过程

常用实例:
tar -cvf tar_name.tar file1 file2 test/ test1/... #打包文件

tar命令解包

tar [选项] 包名

选项 含义
-x 对tar包作解包操作
-f 指定要解压的tar包名
-t 只查看内容,不解包
-C 目录 指定解包目录
-v 显示解打包具体过程

常用实例:
tar -xvf test.tar #解包test.tar
tar -tvf test.tar #查看test.tar中的内容
tar -xvf test.tar -C ./testDir #解包test.tar到当前目录的tstDir目录下

使用tar命令作压缩/解压缩操作

上面讲的tar文件仅仅是打包,而实际上还可以在打包的基础上进行压缩。
*tar.gz *tar.bz2 *tar.xz这样的文件名是最常见的,其中tar表示tar打包,而gz bz2 xz等都是压缩格式。
在上面打包时添加参数可以直接进行压缩/解压缩操作:

  • z:压缩/解压缩.tar.gz格式
  • j:压缩/解压缩.tar.bz2格式
  • J:压缩/解压缩.tar.xz格式

常用实例:
tar -zcvf test.tar.gz file1 file2 test/... #压缩.tar.gz包
tar -zxcf test.tar.gz #解压缩.tar.gz包

其他压缩命令

还有一些常用的压缩文件,比如通用多个zip rar格式,linux中通用的gz bz2格式等。

zip压缩文件或目录/unzip解压

zip [选项] 压缩包名 源文件或目录

选项 含义
-r 递归压缩,压缩目录时使用
-m 将文件压缩后删除源文件
-v 显示压缩过程
-压缩级别 1~9数字,越高效果越好也越慢
-u 更新压缩文件即向其中添加文件

unzip [选项] 压缩包名

选项 含义
-d目录名 将压缩文件解压到指定目录下
-n 解压时不覆盖已经存在的文件
-o 解压时覆盖已经存在的文件,并且无需用户确认
-v 查看压缩文件的详细信息而不解压

常用实例:
zip -r test.zip file1 file2 test/ #压缩文件/文件夹到test.zip文件中
unzip test.zip #解压缩文件
unzip -v test.zip #查看压缩文件中的内容

gzip压缩文件/gunzip解压

gzip是linux下常用的压缩命令,其扩展名为.gz

要强调一下,gzip命令只能用来压缩文件,不能用来压缩目录,即便指定了目录,也只能压缩目录内的所有文件
所以通常是将文件打包在进行压缩 这也就是 tar.gz .gz的区别。

使用方法:

gzip [选项] 源文件
需要注意的是,gizp命令默认删除源文件!!!

选项 含义
-d 对文件进行解压缩
-r 递归压缩指定目录下以及子目录的所有文件

gunzip [选项] 压缩文件

选项 含义
-r 递归处理,解压缩指定目录下以及子目录下的所有文件
-l 列出压缩内容
-v 显示命令过程

常用实例:
gzip file1 file2 ...
gunzip test.gz #等同于 gzip -d test.gz

bzip2压缩文件/bunzip2解压

bzip2命令类似于gzip命令,也是只能对文件进行压缩,多与目录只能压缩该目录及子目录下的所有文件。当执行压缩任务后,会生成一个.bz2为后缀的压缩包。

bzip2 [选项] 源文件

选项 含义
-d 对bz2文件进行解压缩
-k bzip2在压缩或解压缩后会删除源文件,-k可以保留源文件

bunzip2 [选项] 压缩文件

选项 含义
-k 保留压缩文件,默认删除
-L 列出压缩文件内容
-v 显示命令执行过程

编辑文件

linux系统下默认的文本编辑器是vi(vim),而图形界面下大多数发行版使用的都是gedit。
当然你也可以使用vscode等。

文本处理

在linux系统中一切皆文件,并且linux系统总是倾向于文本的。这也决定了文本处理在linux系统中的重要性。有可能有人要问vim编辑器不是很好吗,vim允许我们使用键盘、鼠标来对文本内容进行交互式修改,但是在某些场景中,我们可能需要实现对文本内容作自动化的处理,而不是手工处理。

文本查看命令

linux 有5个基本的文本查看命令:cat more less head tail

cat 文件名
cat命令用于查看文件内容时,不论文件内容多少,都会一次性打印出来,这也就决定了cat命令适合查看不太大的文件。
more 文件名
more命令可以分页显示文本文件的内容。执行后会打开一个交互界面
q-退出 v-在当前行启动一个编辑器(默认vi) 回车-向下移动一行 空格-向下移动一页 /字符串-搜索指定字符串 d-向下移动半页 b-向上移动一页
less 文件名
less命令可以看作more命令的高级版本,最大的不同在于more命令浏览文件内容时,只能不断向后翻页,而less可以向前也可以向后,并且more在阅读到文件结束时退出而less不会。less依然提供了一个交互界面,more中的操作大多数得到继承
head [-n N] 文件名 #N为数字表示查看的行数,默认10行
head命令用于显示指定文件的前若干行
tail [-n N/-f] 文件名 #-f表示输出文件变化后新增加的数据
与head相对,tail可以查看文件末尾若干行的数据,此外还可以使用-f选项来监听文件新增加的内容。在此模式下光标并不会退出命令,而是每隔一秒检查以下文件是否增加新的内容,通常用来查看日志起到实时监控的作用

linux输入输出重定向

默认情况下,linux中标准的输入设备默认是键盘,标准的输出设备默认是显示器。而重定向就是重新指定设备来代替键盘/显示器作为新的输入/输出设备。(通常情况下用文件或命令的执行结果来代替键盘作为新的输入设备,而新的输出设备通常指的就是文件)

输入重定向:

命令符号格式 作用
命令 < 文件 将指定文件作为命令的输入设备
命令 << 分界符 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止,这个分界符是自定义的字符串

输出重定向:

命令符号格式 作用
命令 > 文件 将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,则会清空数据
命令 >> 文件 与上面不一样的是,如果文件包含数据,则写在原有内容的后面

linux三剑客- grep sed awk

grep是一个使用正则表达式来检索文件内容的工具。其实就是个字符串搜索工具,但是它可以使用强大的正则表达式,所以其用法多变。

grep [选项] 正则表达式 文件名
-i:忽略大小写
注意:如果是搜索多个文件,grep命令的搜索结果只显示文件中发现匹配正则的文件名,如果搜索的是单个文件,grep命令的结果将显示每一个包含匹配模式的行。

你可能感兴趣的:(linux基础学习(4)-文件相关命令)