美文网首页
linux基础学习(4)-文件相关命令

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

作者: redher | 来源:发表于2020-02-03 20:39 被阅读0次

    搜索文件

    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)-文件相关命令

          本文链接:https://www.haomeiwen.com/subject/gjpkxhtx.html