很高兴和你相遇
这里正在记录我的所思所学
订阅免费邮件通讯接收最新内容
首页 归档 想法 工具 通讯 播客 简历 主页

Linux Command Line 学习笔记 5

说明;写 Linux Command Line 学习笔记 系列文章本意只是记录自己学习 《Linux Command Line 》 这本书的过程中看到的一些自己没有留意到的地方,因此绝大多数内容只是记录了相关知识点而没有实际扩展内容,纯粹是为了自己后期回顾时有迹可循。另外,因为直接看的原版书,所以有些地方中英混杂。更详细地学习建议去阅读原书即可。

Searching For Files 文件查找

linux 倡导所谓的一切皆文件,那我们怎么在系统中查找到自己想要的文件呢。

locate 查找文件的简单方法

  • 搜索路径名数据库,并且输出每个与给定字符串相匹配的文件名

  • locate bin/zip 搜索 bin 路径下所有包含zip的路径名

  • 可以结合grep一起使用提高效率

  • locate 的搜索数据库由updatedb程序创建,并不是实时更新。因此找到的文件不是最新的

  • updatedb可以使用root进行手动更新

find查找文件的复杂方法

  • 需要明确的一点:find是一个非常神奇的命令

  • find 最简单的用法是给定一个或者多个目录名去搜索 如 find ~ (搜索自己的家目录)

  • find 下有三层操作方式,分别是** options,tests actions**(详细的信息可以查看 help 帮助文档)

  • test
    find ~ -type d

  • -type属于测试操作,用来限定查找类型

    b 块设备文件
    c 字符设备文件
    d 目录
    f 普通文件
    l 符号链接
    
  • 根据文件名和文件大小进行搜索

    find ~ -type f -name "\*.JPG" -size +1M
    这里需要加入双引号防止 shell 展开路径名
    +1M 表示大于 1M,不加任何符号表示精确匹配
    
  • 其他可能会用到的几个 test 条件

    -name pattern 用指定的通配符模式匹配的文件和目录
    -iname pattern 类似-name 测试条件,不区分大小写
    -nouser 匹配的文件和目录不属于一个有效用户
    -nogroup 匹配的文件和目录不属于一个有效的组
    -size n 匹配的文件大小为 n
    -type c 匹配的文件类型是 c
    -user name 匹配的文件或目录属于某个用户,通过用户名或用户 ID 来表示
    -group name 匹配的文件和目录属于一个组,用组名或组 ID 来表示
    -cmin n 匹配的文件和目录的内容或属性最后修改时间正好在 n 分钟之前
    -ctime n 匹配的文件和目录的内容和属性最后修改时间在 n\*24 小时之前
    -newer file 匹配的文件和目录的内容早于指定的文件。当编写 shell 脚本,做文件备份时非常有帮助
    -empty 匹配空文件和目录
    -inum n 匹配的文件的 inode 号是 n,找到某个特殊 inode 的所有硬链接
    -perm mode 匹配的文件和目录的权限是指定的 mode。mode 用八进制或符号表示。
    
  • options

    使用逻辑操作符建立逻辑关系

    查找权限不是 0600 的文件和权限不是 0700 的目录方法

    find ~ \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)
    
    -and 符两边的测试条件都是真则匹配(默认操作)
    -or 若两边的任一测试条件为真则匹配
    -not 若后面的测试条件是真则匹配
    () 把测试条件和操作符组合起来控制逻辑优先级,使用时用反斜杠进行转义
    
  • Predefined Actions 预定义操作

    -delete 删除匹配文件
    -ls 对匹配的文件执行等同的 ls -dils 命令。并将结果发送到标准输出。
    -print 把匹配文件的全路径名输送到标准输出。如果没有指定其它操作,这是默认操作。
    -quit 一旦找到一个匹配,退出。
    
  • xargs

    从标准输入接受输入,并把输入转换为一个命令的参数

    如果文件名中有空格,需要使用-print0

    find ~ -iname ‘*.jpg’ -print0 | xargs –null ls -l

  • find 其他参数

    -depth 指导 find 程序先处理目录中的文件,再处理目录自身
    -maxdepth levels 当执行测试条件和行为的时候,设置目录深度
    -mindepth levels 在应用测试条件和行为之前,设置目录深度
    -mount 指导 find 程序不要搜索挂载到其它文件系统上的目录
    

Archiving And Backup 存档备份

压缩

  • 不要压缩已经压缩过的文件

  • gzip/gunzip 压缩后会取代原始文件 权限和时间戳不变

    -c 把输出写入到标准输出,并且保留原始文件。等价于 zcat
    -d 解压缩,等价于 gunzip
    -f 强制压缩
    -l 显示文件的压缩比例和大小
    -r 递归压缩目录
    -t 测试压缩文件的完整性
    -v 显示压缩过程中的信息
    -number 设置压缩指数。1 最快,9 最小,默认值 6
    
  • bizp2 速度慢压缩程度更高

    相应命令有 bunzip2; bzcat

存档

  • 多个文件整合为一个文件的过程

  • tar

    参数分为 mode 和 options,必须首先包含一个操作模式

    -A, 将一存档与已有的存档合并
    -c, 建立新存档
    -d, 比较存档与当前文件的不同之处
    --delete 从存档中删除
    -r, 附加具体路径到存档结尾
    -t, 列出存档内容
    -u, 将较新的文件附加到存档中
    -x, 从存档展开文件
    

    归档 tar cvf FileName.tar DirName (f 要紧跟内容)

    展开 tar xvf FileName.tar

    配合gzip压缩解压

    • 解压:tar zxvf FileName.tar.gz
    • 压缩:tar zcvf FileName.tar.gz DirName

    配合bzip2

    • 压缩 tar cjf FileName .tar.bzDirName
    • 解压 tar jxvf FileName .tar.bz

同步 rsync

  • rsync options source destination

  • sourcedestination 指代

    • 一个本地文件或目录
    • 一个远端文件或目录,以[user@]host:path 形式存在
    • 一个远端 rsync 服务器,由rsync://[user@]host[:port]/path 指定
    • 必须有一个本地文件
  • 具体用法待补充


本文作者:思考问题的熊

版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。

如果你对这篇文章感兴趣,欢迎通过邮箱或者微信订阅我的 「熊言熊语」会员通讯,我将第一时间与你分享肿瘤生物医药领域最新行业研究进展和我的所思所学所想点此链接即可进行免费订阅。


· 分享链接 https://kaopubear.top/blog/2017-09-22-LinuxCommandLine5/