Linux常用命令详解(二)

打印 上一主题 下一主题

主题 815|帖子 815|积分 2445



  

一、创建链接文件-ln

为文件或目录建立链接文件,类似于Windows系统的快捷方式链接文件类型。
链接文件类型



  • 软链接(又称为符号链接)
    inode号不一样
    创建软链接
    1. ln [-s] 源文件或目录... 链接文件或目标位置
    复制代码
  • 硬链接
    INode号一样
    创建硬链接
    1. ln 源文件或目录... 链接文件或目标位置
    复制代码
重要区别
创建的符号链接文件
1、允许创建的位置 软/硬有区别的
2、占用磁盘空间 有区别的
3、创建的对象 不同
符号链接与源文件巨细inode号文件属性删除源文件后软链接不一样不一样指向源文件不能检察硬链接一样一样独立文件正常检察 在 Linux 中,文件名和文件的数据是分开存储的。

提示


  • 在 Linux中,只有文件的硬链接数==0才会被删除
  • 利用 ls-l 可以检察一个文件的硬链接的数量
  • 在日常工作中,险些不会建立文件的硬链接,知道即可
引申原理
在文件系统中找文件,文件本身就是指向磁盘中的存储块,本身就是个硬链接。


  • 硬链接
    硬链接也是在磁盘中的存储块找文件,因此inode值与文件本身一样。
  • 软链接
    只是一个快捷方式
删除新建文件后的区别
删除后重复创建相同文件名、不同内容的文件


  • 软链接:指向文件名,内容与新建文件一致
  • 硬链接:不受影响,依然是源文件
验证硬链接占用空间的小实验
  1. cp /var/log/messages ./ ##拷贝文件
  2. ln messages msag        ##创建硬链接1
  3. ln messages m                          ##创建硬链接2
  4. ln messages a                         ##创建硬链接3
  5. du -h                                        ##查看磁盘占用
复制代码
硬软链接优缺点

软链接(Symbolic Link)
优点:

  • 可以跨文件系统:软链接可以指向不同文件系统中的文件。
  • 指向目录:软链接可以指向目录,方便快捷地访问目的目录。
  • 动态链接:如果目的文件被删除或移动,软链接会酿成断开的链接(dangling link),但不会占用多余的空间。
缺点:

  • 性能较差:访问软链接时须要额外的步调来解析链接并定位目的文件,性能比硬链接稍差。
  • 容易失效:如果目的文件被删除或移动,软链接会失效,酿成断开的链接。
  • 不支持文件系统级别的备份:一些文件系统备份工具可能不会精确备份软链接和其目的文件。
实用场景:
软链接实用于须要创建快捷方式、跨文件系统引用文件、或指向目录的情况。
硬链接(Hard Link)
优点:

  • 高效:硬链接直接指向数据块,性能较高,无需额外的解析步调。
  • 可靠性:即使目的文件被删除,硬链接仍旧存在并可以访问文件内容,除非全部硬链接都被删除。
  • 节省空间:硬链接只是增长了一个目录项,没有创建新的文件,占用的磁盘空间非常少。
缺点:

  • 不能跨文件系统:硬链接只能在同一个文件系统中创建,无法跨越不同的文件系统。
  • 不能指向目录:硬链接只能指向文件,不能指向目录。
  • 混淆和复杂性:多个硬链接指向同一个文件,可能会造成管理和维护上的混淆,难以确定哪些链接实际指向同一个文件。
实用场景:
硬链接实用于须要高效访问文件、增长文件引用、或确保文件内容在目的文件被删除后仍可访问的情况。
二、复制文件或目录-cp

将须要复制的文件或目录(源)重建一份,并生存为新的文件或目录
格式
  1. cp [选项]... 源文件或目录... 目标文件或目录...
复制代码
常用选项:-f、-i、-p、-r
cp的常用选项
-f:覆盖目的同名文件或目录时不举行提醒,而直接强制复制
-i:覆盖目的同名文件或目录时提醒用户确认
-p:复制时保持源文件的权限、属主实时间标记等属性稳定(用的多)
-r:复制目录时必须利用此选项,表现递归复制全部文件及子目录
-a:完备保存全部的信息包括连接文件,可以直接复制目录
:复制多个文件或目录时,目的位置必须是目录,且目的目录必须已存在
拓展
全量复制:cp 复制全部文件,只能在当地复制
增量复制:rsync 只复制新增长的部分,可以跨主机复制(斲丧资源更低速度更快)
更多cp命令的一些选项
选项描述-r 或 -R递归复制目录及其内部的全部内容(包括子目录和文件)。这是复制整个目录结构时必需的选项。-p保存文件的属性,包括修改时间、访问权限(如全部者、组、权限模式)和时间戳等。这有助于保持文件系统的原样复制。-v表现详细的复制过程,包括被复制的文件和目录的名称。这有助于跟踪复制操作或调试问题。-f强制复制,不提示确认即覆盖目的文件或目录。这可以制止在复制过程中因覆盖文件而停止。-i在覆盖目的文件之前扣问用户是否确认。这提供了额外的安全性,防止不测覆盖重要文件。-a归档模式,相称于同时利用-dR --preserve=all选项。它保存了源文件的险些全部属性,包括链接、文件属性,并递归复制目录。这是举行完备备份时常用的选项。-u只有当源文件比目的文件更新或目的文件不存在时,才举行复制。这有助于制止复制已经是最新的文件。-l创建硬链接而不是复制文件内容。这会在文件系统中创建一个指向原始文件的链接,而不是复制文件本身。留意,硬链接不能跨文件系统创建,也不能用于目录。-s创建符号链接(软链接)而不是复制文件。符号链接类似于Windows中的快捷方式,它包罗了目的文件的路径。–backup在覆盖文件之前,对目的文件举行备份。这有助于恢复被覆盖的文件。可以利用不同的选项来指定备份文件的命名方式,如–backup=numbered(备份文件名为原始文件名加上一个数字后缀)。 三、删除文件或目录-rm

删除指定的文件或目录
格式
  1. rm [选项] 要删除的文件或目录...
复制代码
rm的常用选项
-f:删除文件或目录时不举行提醒,而直接强制删除
-i:删除文件或目录时提醒用户确认。(y表现删除,n表现不删除)
-r:删除目录时必须利用此选项,表现递归删除整个目录树(应谨慎利用)
示例
  1. rm -rf public_html/grub/
  2. rm -i public html/apg.conf
  3. rm -rf /etc/yum.repos.d/*
复制代码
高危命令
高危命令之一:rm -rf /etc/profile
高危命令之二:rm -rf ./*
留意


  • 不要直接删除系统中已有的目录或设置文件,以制止出现不测故障。
  • 删除目录下文件时建议最好先切换到目录下再执行rm -rf命令
  • 尽量以相对命令的方式删除
  • 高危命令之一:rm -rf /etc/profile
  • 高危命令之二:rm -rf ./*
  • rm命令在删除文件或目录时不会将其移动到接纳站或垃圾箱,而是直接从文件系统中删除
  • 为了安全起见,尽量利用rm命令的-i选项举行交互式确认
  1. cd /etc/yum.repos.d/
  2. rm -rf ./*
复制代码
更多rm命令的一些选项
选项描述-r 或 -R递归地删除目录及其内部的全部内容(包括子目录和文件)。默认情况下,rm命令只删除文件,而不会删除目录,除非利用了此选项。-f 或 --force强制删除文件或目录,不提示确认。即使文件不存在或没有写权限,也不会表现错误消息。请留意,利用此选项时要格外小心,以免不测删除重要文件。-i 或 --interactive在删除文件或目录之前扣问用户是否确认。这对于防止不测删除非常有用。如果指定了多个文件或目录,rm命令会为每个文件或目录表现一个确认提示。-I在删除凌驾三个文件或举行递归删除之前要求确认。这个选项比-i选项提供的提示更少,但仍旧可以防止大多数错误发生。-v 或 --verbose表现详细的删除过程,包括被删除的文件或目录的名称。这有助于跟踪删除操作或确认哪些文件已被删除。-d 或 --dir删除空目录。如果目录不为空,则不会删除,并且会表现错误消息。这个选项通常与-r选项一起利用来删除目录及其内容,但单独利用时仅删除空目录。-q删除文件时不表现任何消息–preserve-root防止rm命令删除根目录(/)及其内容。(重要的安全措施) 四、修改命令别名-alias(不常用)

一般用于临时修改,不常用
临时修改
格式
  1. alias 命令别名 = '命令'
  2. unalias 别名命令    ##删除别名
复制代码
示例
  1. alias mynetwork='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
复制代码
永久修改(更不用)
在/etc/.bashrc 会影响全部
/root/.bashrc 只影响当前用户(当前用户的家目录)root
五、移动/重命名文件或目录-mv

将指定的文件或目录转移位置
如果目的位置与源位置相同,则相称于执行重命名操作
格式:
  1. mv [选项] ... 源文件或目录... 目标文件或目录
复制代码
示例:
  1. mv mytouch mkfile
  2. mv mkfile public_html/
复制代码
mv命令的一些常用选项
选项描述-i 或 --interactive在覆盖目的文件之前提示用户确认。-f 或 --force强制移动或重命名文件,不提示确认,并覆盖目的文件(如果目的文件是目录,则须要-r或-R选项)。-n 或 --no-clobber不要覆盖任何已存在的文件(留意:在某些版本的mv中可能不可用或活动有所不同)。-v 或 --verbose表现详细的移动或重命名过程。-u 或 --update只在源文件比目的文件新,或目的文件不存在时移动文件。-r 或 -R 或 --recursive递归移动目录及其内部的全部内容。 六、检察全部磁盘及其挂载目录的剩余空间-df

系统资源查询相干:
重要监控5大系统资源:磁盘空间、CPU、内存、I/O、进程信息
规范说法:利用一些日常的查询指令检察系统资源,如磁盘空间、CPU、内存、I/O、进程信息、网络流量监控
和磁盘相干的命令有:du、ls、df等
示例
  1. [root@localhost opt]# df -h
复制代码
输出效果:

效果解释


  • 前者(文件系统)为后者(挂载点)提供存储资源
  • 重要看已用百分比
七、挂载文件系统-mount


将一个文件系统(如硬盘分区、光盘、网络文件系统等)连接到Linux系统的目录树中的某个目录上的过程。挂载之后,用户可以通过该目录访问文件系统中的数据。
根本概念


  • 挂载点:挂载文件系统的目录。通常是一个空目录。
  • 文件系统:存储数据的逻辑结构,可以是硬盘分区、USB装备、光盘或网络存储等。
功能

  • 提供共享空间
  • 共享数据
格式
  1. mount
  2. [选项] 设备 文件夹  ##挂载文件系统
  3. umount
  4. /dir              ##卸载文件系统
复制代码


  • 装备:要挂载的文件系统装备,例如/dev/sda1。
  • 文件夹:挂载点,例如/mnt。
mount
命令的常用选项:
选项说明示例-o指定多个挂载选项,选项之间用逗号分隔。例如:ro、rw、loop、nosuid、noexec等。mount
-o ro,loop /dev/sda1 /mntro只读挂载mount
-o ro /dev/sda1 /mntrw读写挂载mount
-o rw /dev/sda1 /mntloop将一个文件作为块装备挂载,通常用于挂载ISO镜像文件mount
-o loop image.iso /mntnosuid禁止在挂载点运行set-user-identifier或set-group-identifier程序mount
-o nosuid /dev/sda1 /mntnoexec不允许在挂载点执行任何二进制文件mount
-o noexec /dev/sda1 /mntnodev禁止装备文件在挂载点被解释mount
-o nodev /dev/sda1 /mntremount
重新挂载已经挂载的文件系统,可以改变挂载选项mount
-o remount
,rw /mntuid设置挂载点的全部者用户IDmount
-o uid=1000 /dev/sda1 /mntgid设置挂载点的全部者组IDmount
-o gid=1000 /dev/sda1 /mntumask设置挂载点的文件权限掩码mount
-o umask=022 /dev/sda1 /mnt-t指定文件系统类型,如ext4、vfat、nfs等mount
-t ext4 /dev/sda1 /mnt-a挂载/etc/fstab中界说的全部文件系统mount
-a-v详细模式,表现挂载过程中的详细信息mount
-v /dev/sda1 /mnt-n挂载时不更新/etc/mtab文件mount
-n /dev/sda1 /mnt-r只读挂载,等同于-o romount
-r /dev/sda1 /mnt-w读写挂载,等同于-o rwmount
-w /dev/sda1 /mnt-l表现标签信息mount
-l-f模拟挂载,用于测试挂载命令的精确性,不执行实际挂载操作mount
-f /dev/sda1 /mnt 示例

  • 挂载一个分区
    1. sudo mount
    2. /dev/sda1 /mnt
    复制代码
    将/dev/sda1分区挂载到/mnt目录。
  • 检察挂载信息
    1. mount
    复制代码
    表现当前系统全部已挂载的文件系统。
  • 挂载ISO镜像
    1. sudo mount
    2. -o loop /path/to/image.iso /mnt
    复制代码
    将ISO镜像文件挂载到/mnt目录。
  • 卸载文件系统
    1. sudo umount
    2. /mnt
    复制代码
    将挂载在/mnt目录的文件系统卸载。
八、查找命令文件存放目录-which

用于查找当前主机有没有xx命令
搜刮范围由情况变量 PATH 决定(echo $PATH)
(利用较少)
格式
  1. which 命令|程序名  ##默认当找到第一个目标后不再继续查找
复制代码

  1. which -a 命令|程序名  ##在所有搜索路径中查找
复制代码
示例
  1. which history
  2. which ls
  3. which -a ls
  4. which wget
复制代码
效果输出:

:利用 which 查找内部命令时,将找不到对应的程序
九、查找文件或目录-find

文件查找工具,它允许用户根据各种条件搜刮文件系统中的文件和目录。
接纳递归方式,根据目的的名称、类型、巨细等不同属性举行精致查找
命令的特点


  • 精确查找
  • 实时査找 遍历(慢)
  • 支持查找条件较多
格式1
  1. find [查找范围] [查找条件表达式]
复制代码
参数解释
[查找范围]:查找文件或子目录的目录位置
[查找条件表达式]:查找条件类型
格式2:
  1. find [查找路径] [查找条件] **[处理动作]**
复制代码
参数解释
[查找路径]:指定具体目的路径,默认为当前目录。
[查找条件]:可以对文件名、巨细、类型、权限等标准举行查找:默认为找出指定路径下的全部文件
[处理动作]:对符合条件的文件做操作,默认输出至屏幕(print)
示例(exec选项)
查找opt目录下,全部大于1G的文件,然后把他们移动到etc目录下
  1. find /opt/ -size +1G -type f
  2. find /opt/ -size +1G -type f -exec mv {} /etc \;
复制代码
查找到/opt日录下,1G以上的普通文件,然后将查找到的文件全部mv移动到etc里面
exec:和管道符类似,将 find /opt/ -size +1G -type f 的处理效果传参到{}里
my {} /etc \;【处理动作】
格式3
  1. find [路径] [选项] [表达式] [动作]
复制代码


  • 路径:指定 find 命令开始搜刮的目录。如果省略路径,则默认为当前目录。
  • 选项:可选,用于控制 find 命令的活动,如搜刮的最大深度、是否跨文件系统搜刮等。
  • 表达式:用于指定搜刮条件,如文件名、文件类型、巨细、修改时间等。多个表达式可以通过逻辑运算符(如 and、or、not)组合利用。
  • 动作:对匹配的文件执行的操作,如打印、删除、执行命令等。如果不指定动作,则默认为 print,即打印出匹配文件的路径名。
find命令的常用选项及其描述
查找类型选项(关键字)描述按名称查找-name根据目的文件的名称举行查找,允许利用“”及“?”通配符。如:,?,[],[^]。通配符要加双引号引起来。按名称查找(不区分巨细写)-iname类似于-name,但搜刮时不区分文件名的巨细写。按文件巨细查找-size [+/-]#根据目的文件巨细举行插找。其中#代表巨细(c:字节,k:千字节,M:兆字节,G:吉字节),+表现大于,-表现小于,无符号表现正好即是。按文件属主查找-user根据文件是否属于目的用户举行查找。用户可以是用户名或UID。按文件所属组查找-group根据文件是否属于目的组举行查找。组可以是组名或GID。按文件类型查找-type根据文件的类型举行查找。常见的类型包括f(普通文件)、d(目录)、l(符号链接)、b(块装备文件)、c(字符装备文件)、s(套接字文件)、p(管道文件)等。按inode号查找-inum根据文件inode号查找。inode是文件系统中用于唯一标识文件的元数据。按权限查找-perm按文件权限查找,可以指定具体的权限模式。可以是八进制数(如644)或符号模式(如u=rwx,g=rx,o=r)。最大搜刮目录深度-maxdepth level将搜刮限制在指定的最大目录深度以内。level是一个非负整数,表现目录的深度。最小搜刮目录深度-mindepth level从指定的最小目录深度开始搜刮。这有助于制止在顶层目录本身中查找匹配项。以下不重要——————查找具有特定权限的文件(精确匹配)-perm /mode查找任何一位权限匹配的文件。如果文件权限位中有任何一位与指定的模式匹配,则该文件符合条件。查找全部权限都不匹配的文件-perm -mode查找全部权限位都严格匹配的文件。文件权限必须完全匹配指定的模式。执行对匹配文件的命令-exec command {} ;对匹配的每个文件执行指定的命令。{}是一个占位符,代表当前匹配的文件名。命令的末尾必须是;来停止-exec选项。忽略错误-ignore_readdir_race在处理大量文件时,如果某些文件在查找过程中被删除或修改,可能会导致错误。此选项可以忽略这些错误。清除特定目录-path … -prune -o … -print利用-path和-prune选项结合逻辑表达式来清除特定目录或文件路径的搜刮。-o(或)操作符用于指定在清除条件不满足时执行的操作。查找并删除文件-exec rm {} ;警告:这个组合选项会直接删除匹配的文件,务必谨慎利用。按最后修改时间查找-mtime nmodify time(修改时间),根据文件的最后修改时间举行查找。n 是一个整数,表现间隔现在 n24 小时之前被修改的文件。如果 n 前面有 + 符号,则表现修改时间凌驾 n24 小时的文件;如果 n 前面有 - 符号,则表现修改时间在 n24 小时之内的文件。没有符号时,表现正幸亏 n24 小时前被修改的文件。按最后被访问或读取的时间查找-atimeaccess time(访问时间),记录的是文件最后一次被访问或读取的时间。但现代Linux系统中,出于性能考虑,默认情况下不会实时更新atime,除非特别设置了相应的系统参数。按文件元数据最后一次被改变的时间查找-ctimechange time(改变时间),记录的是文件元数据最后一次被改变的时间。这包括文件的属性、权限等的修改。在Linux中,ctime通常也会随着mtime的改变而改变,因为文件的元数据的改变通常陪同着文件内容的改变。用于选择空目录-empty 留意


  • 在利用size选项时,#代表具体的巨细数值,前面可以加上+或 - 来表现大于或小于该数值。``
  • 文件巨细的单位(如kB, MB, GB)巨细写敏感。
  • type选项后的参数(如f, d, b, c)用于指定要查找的文件类型。
  • maxdepth和mindepth选项用于控制搜刮的目录深度,在递归搜刮大型文件系统时非常有用。
-type 选项:
-type 选项在 find 命令中用于指定要查找的文件类型。-type 的具体形式:
类型描述f普通文件d目录l符号链接(symbolic link)b块装备文件(block device)c字符装备文件(character device)p管道(pipe)s套接字(socket)D门户(door)(特定系统支持) find常用选项拓展
-user USERNAME #查找属主为指定用户(UID)的文件
-group GRPNAME #查找属组为指定组(GID)的文件
-uid UserlD #查找属主为指定的UID号的文件
-gid GroupID #查找属组为指定的GID号的文件
-nouser #查找没有属主的文件
-nogroup #查找没有属组的文件
-name"文件名称" #支持利用glob,如:*,?,[],[^],通配符要加双引号引起来
-inum n #按inode号查找
-links n#链接数为n的文件
格式示例:
查找当前目录及子目录下全部的普通文件
  1. find . -type f
  2. find /opt -name file*.txt -size -1G -user root
复制代码
十、利用 find 命令实现多个查找条件

各表达式之间利用逻辑运算符
-a 表现 而且(and)
-o 表现 或者(or)
示例
  1. find /boot -size +1024k -a -name "vmlinuz*"
  2. find /boot -size +1024k -o -name "vmlinuz*"
复制代码
示例
  1. find /etc/-type f -o -size +50k -a -name *.ttb
复制代码
解释:找寻【/etc/日录下,满足文件属性,】或者50k以上巨细,以及以.ttb为末端的任何对象
十一、文本统计工具-wc

统计文件内容有多少行
  1. wc -l
复制代码
wc命令介绍
wc(word count)命令是Linux系统中一个常用的文本统计工具,用于计算文件中的行数、单词数和字符数。它是文本处理中非常有用的工具,可以快速提供文件的根本统计信息。
根本语法
  1. wc [选项] [文件名]
复制代码


  • 选项:是可选的参数,用于调整wc的输出格式。
  • 文件名:是要统计的文件列表。如果未指定文件,wc将读取标准输入(stdin)。
常用选项


  • l 或 -lines:仅表现行数。(重点利用)
  • c 或 -bytes:仅表现字节数。
  • m 或 -chars:仅表现字符数(在多字节字符情况中利用)。在某些版本的wc中,m 和 c 的活动可能相同,都表现字节数。但在支持多字节字符的情况中,m 会计算实际字符的数量。
  • w 或 -words:仅表现字数。单词是以空格或制表符分隔的文本序列。
  • L 或 -max-line-length:表现最长行的长度。
利用示例

  • 统计文件的行数、单词数和字符数
    1. wc example.txt
    复制代码
    输出效果将包括行数、单词数和字符数,如:10 20 150 example.txt,其中第一个数字表现行数,第二个数字表现单词数,第三个数字表现字符数。
  • 仅统计行数
    1. wc -l
    2. example.txt
    复制代码
    输出效果只包括文件的行数,如:10 example.txt。
  • 仅统计单词数
    1. wc -w example.txt
    复制代码
    输出效果只包括文件的单词数,如:20 example.txt。
  • 仅统计字符数
    1. wc -m example.txt
    复制代码
    在多字节字符情况中,输出文件的字符数。但在某些情况下,可能须要利用 -c 来获取字节数。
  • 同时计算多个文件的统计信息并输出总计
    1. wc file1.txt file2.txt
    复制代码
    分别表现两个文件的行数、单词数和字节数,以及这些文件的总和。
  • 从标准输入中读取数据
    可以利用管道(|)操作符将其他命令的输出作为wc命令的输入,如:
    1. cat
    2. example.txt | wc -l
    复制代码
    计算example.txt文件的行数。
留意事项


  • 在处理多字节字符(如中文、日文等)时,m 选项会计算实际字符的数量,而 c 或 -bytes 选项则可能只计算字节数。
  • wc命令还支持其他选项和用法,如递归统计目录下全部文件的信息(利用 r 选项,但并非全部版本的wc都支持),以及清除特定模式的文件或行(可能须要结合其他命令利用)。
十二、标准输入和标准输出

在Linux中,标准输入和标准输出是用于处理输入和输出数据的根本概念。
简单来说,我们在用户态输入什么内容提交给系统处理时就是什么内容,这个提交的过程就是标准输入

标准输入(stdin)



  • 界说:系统默认的输入源,通常是键盘。
  • 文件描述符:0
  • 用途:读取用户输入。
  • 示例:cat
    命令等待用户输入:
    用户在键盘上输入的内容会被cat
    命令读取并表现。
    1. cat
    复制代码
标准输出(stdout)



  • 界说:系统默认的输出目的,通常是终端(屏幕)。
  • 文件描述符:1
  • 用途:输出数据到屏幕。
  • 示例:echo命令输出文本:
    该命令会将字符串"Hello, World!"表现在终端上。
    1. echo "Hello, World!"
    复制代码
重定向



  • 标准输入重定向:利用<符号从文件读取输入。
    1. command < input.txt
    复制代码
  • 标准输出重定向:利用>符号将输出写入文件。
十三、管道符 |

管道符(Pipeline):将一个命令的输出作为另一个命令的输入。
用竖线(|)表现,将左侧命令的标准输出(stdout)作为右侧命令的标准输入(stdin)。可以将多个命令串联起来,拓展命令功能。
示例:
  1. find /etc/-type f -o -size +50k -a -name *.ttb
  2. | wc -l
复制代码
管道符的根本用法
  1. 命令1 | 命令2 | 命令3 ...
复制代码


  • 命令1 的输出会被传递给 命令2 作为其输入。
  • 命令2 的输出(可能是对 命令1 输出的处理效果)接着被传递给 命令3,依此类推。
管道符的示例

  • 检察文件内容并统计行数
    1. cat
    2. file.txt | wc -l
    复制代码
    这里,cat
    file.txt 命令的输出(即文件 file.txt 的内容)被传递给 wc -l
    命令,后者计算并输出行数。
  • 查找包罗特定字符串的行并排序
    1. grep "hello" file.txt | sort
    复制代码
    grep "hello" file.txt 命令查找文件 file.txt 中包罗 “hello” 字符串的全部行,并将这些行作为 sort 命令的输入,sort 命令则对这些行举行排序。
  • 文本处理的多步调流程
    1. cat
    2. file.txt | grep "error" | sort | uniq -c
    复制代码
    命令序列首先利用 cat
    命令输出文件 file.txt 的内容,然后通过 grep "error" 筛选出包罗 “error” 字符串的行,接着利用 sort 对这些行举行排序,最后利用 uniq -c 统计并输出每个唯一行(在这种情况下,由于已经排序,所以连续相同的行被视为唯一行)出现的次数。
管道符的留意事项


  • 管道符连接的每个命令都是在子shell中执行的,它们之间不会共享变量(除非利用特殊的方法,如进程替换或命令替换)。
  • 管道符右侧的命令必须能够处理来自左侧的输入。如果右侧的命令不接受标准输入(如某些仅表现帮助信息的命令),则管道可能不会按预期工作。
  • 在利用管道时,须要留意命令的执行顺序和它们之间的依赖关系,以确保整个命令序列能够按预期运行。
十四、find之exec用法

find命令与exec结合利用可以更服从地查找并处理文件。find命令用于遍历目录树,搜刮符合特定条件的文件或目录,而exec则在找到的每个文件或目录上执行指定的命令。
-exec参数后面跟的是Linux命令,它是以分号“;”为竣事标志,由于各个系统中分号会有不同的意义,因此在分号前面加上反斜杠转义符“\”
格式
  1. find path [options] -exec command {} \\;
复制代码
解释


  • path:要搜刮的目录路径。
  • options:查找条件,如文件名、类型、修改时间等。
  • exec:指示find对每个匹配的文件或目录执行命令。
  • command:要执行的命令。
  • {}:占位符,表现当前找到的文件或目录。
  • ;:表现命令竣事(必须利用\\举行转义)。
示例1
find 命令匹配到了当前目录下的全部普通文件,并在 -exec 选项中利用 Is-命令将它们列出。
“{}” 代表前面find查找出来的文件名,
  1. find ./ -type f -exec ls -{} \;
复制代码
示例2

  • 删除找到的文件
    1. find /path/to/search -type f -name "*.tmp" -exec rm {} \\;
    复制代码
    查找指定目录下全部扩展名为.tmp的文件并删除它们。
  • 修改找到文件的权限
    1. find /path/to/search -type f -name "*.sh" -exec chmod +x {} \\;
    复制代码
    查找指定目录下全部扩展名为.sh的脚本文件并赋予可执行权限。
  • 移动找到的文件
    1. find /path/to/search -type f -name "*.log" -exec mv {} /path/ \\;
    复制代码
    查找指定目录下全部扩展名为.log的文件并移动到目的目录。
  • 压缩找到的文件
    1. find /path/to/search -type f -name "*.txt" -exec gzip {} \\;
    复制代码
    查找指定目录下全部扩展名为.txt的文件并利用gzip压缩。
  • 查找并执行多个命令
    1. find /path/to/search -type f -name "*.tmp" -exec sh -c 'echo "Processing {}"; rm {}' \\;
    复制代码
    查找指定目录下全部扩展名为.tmp的文件,先打印文件名,再删除文件。
留意事项


  • 性能问题:利用exec时,每找到一个文件或目录,find都会启动一次新进程。如果处理大量文件,性能可能会受到影响。
  • 替换方法:可以利用+代替\\;,从而批量处理文件,进步服从:
    这种方式会将全部匹配的文件一次性传递给rm命令。
    1. find /path/to/search -type f -name "*.tmp" -exec rm {} +
    复制代码

注:图片泉源于网络,侵删。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表