乐趣区

关于后端:002-Linux-文件与目录命令的必会姿势

01 这些命令真的很重要吗?

文件及目录的门路切换、显示、创立、复制、挪动和删除操作的罕用姿态,必会!因为这些命令是应用 Linux 零碎进行工作的根底,是解脱小白的第一步,是构建大厦的基石!
发现锅锅真是个话痨啊!那锅锅就不要脸了真就再比比两句啦,承蒙不要厌弃 (=^_^=)。这篇文章不是 Linux 相干命令应用字典或百科全书,这一篇文章里总结工作实际中会用到的对于文件和目录操作罕用的根底命令,这些命令真的很重要!

02 门路切换和显示:cd、ls、pwd

  1. cd (全称 Change directory) 命令在 Linux 中是所有命令的根底依赖。
  2. ls 是离不开 cd 的基友,用来查看以后文件夹下有哪些文件和目录,ls(全称 List files)。
  3. pwd 看看本人身在何处。cd 切来切去,忘了本人身在何处,那就打印下以后的所在的工作门路,这就是 pwd (Print working directory)。

cd

  • cd / # 进入主机根目录。
  • cd ~ # 进入用户根目录。
  • cd .. # 返回爸爸(下级)目录,注 . 代表当前目录。
  • cd ../.. # 返回爷爷(下级的下级)目录,能够以此类推。
  • cd – # 返回上次目录。来回在两个目录中切换时很好用。
  • cd /home/root/temp # 应用绝对路径,从根目录开始,到 temp 目录。

ls

  • ls # 显示当前目录下所有文件和目录。
  • ls -l # 显示文件详情(文件名称、文件类型、权限、拥有者、文件大小等具体列出)。
  • ll # 等同 ls -l。
  • ls -al # 等同 [ll -a] 显示所有文件及详情,(ls 内定将文件名或目录名称结尾为 ”.” 的视为暗藏档,不会列出)。
  • ls -lh # 等同 [ll -h] 以适宜的单位显示文件大小,如 kb、Mb、Gb。-h 这个参数在 linux 中很有用,根本所有须要统计大小的命令中都能够用它,如 df -h, du -h,free -h。
  • ls -lhs # 对文件或者目录进行从大到小的排序
  • ls -lrt #依照文件批改工夫升序,从上到倒下工夫越来越近
    具体解释:
    -l use a long listing format 以长列表形式显示(详细信息形式)
    -t sort by modification time 按批改工夫排序(最新的在最后面)
    -r reverse order while sorting(反序)
  • ls -lt #依照工夫降序(默认: 最新批改的排在后面)

pwd

  • pwd # 查看以后所在门路。
  • pwdx pid #可配合查找利用的装置门路。如查找 zookeeper 的装置门路,,找到 pid (过程号),接着 [pwdx pid],即可找到  zookeeper 装置门路。

03 创立:touch、mkdir

  1. touch(含意触碰)创立一个空文件。
  2. mkdir(全称 Make directory)建设目录,创立一个空目录。

touch

  • touch info.log  #在当前目录下创立一个 info.log 的空文件。
  • touch {01..10}info.log #注:是两个点号。批量创立文件,01info.log、02info.log、…、10info.log

mkdir

  • mkdir dirs #在当前目录下创立空目录 dirs。
  • mkdir log temp data # 同时创立多个同级目录,目录名以空格离开。
  • mkdir -p parent/child/logs #一次性创立多级目录,在当前目录下创立 parent 目录,在 parent 目录下创立 child 目录,在 child 目录下创立 logs 目录。

04 复制、挪动和删除:cp、mv、rm

  1. cp(全称 copy)复制。
  2. mv(全称 move)挪动。
  3. rm(全称 remove)删除。

cp

  • cp info.log tempInfo.log #将 info.log 文件拷贝一份,拷贝后的文件名为 tempInfo.log。
  • cp -R parent  tempParent #将 parent 目录拷贝一份,拷贝后的目录名为 tempParent。个别加参数 -R(或参数 -r,-r/R 示意递归),因为目录下个别会有子目录,否则无奈胜利拷贝。

mv

  • mv /home/docker/info.log  /home/temp/info.log #这个示例里文件名没变,就是搬移下文件地位。
  • mv /home/docker/info.log  /home/temp/tmp.log #这个示例里,搬移了文件地位且变更了文件名。
  • mv info.log tmp.log #这个示例里等同于对文件进行了重命名。
  • mv a b c /tmp #一次挪动多个文件或到某个目录下

rm

  • rm [文件名] #删除文件,文件不存在会有报错提醒。
  • rm -f [文件名] # (常用命令)删除文件,-f,疏忽报错信息,不提醒。
  • rm -rf [目录名] # (常用命令)递归删除目录。
  • rm -rf [文件 1] [文件 2] [目录 1] [目录 2] # (常用命令)删除多个文件和目录。
  • rm -rf .log # 删除当前目录所有.log 后缀结尾的文件, 是匹配符示意匹配所有字符。
  • rm -i *.log # 删除所有以结尾 log 文件时,会逐个询问按 y 确认删除,n 不删除。

05 跑路命令?千万不要作死本人!

  1. rm -rf / # 这个命令绝逼不能操作🙅,删除根目录下的文件,就是零碎中的所有文件都要被删除。如果是线上服务机器操作了,那就喜剧了!误操作了怎么办?赶快 ctrl+c、ctrl+z 能保住多少是多少吧。
  2. rm -rf / home/apps/logs/ # 这也是个天坑命令!目标是删除日志文。后果书写时“多了一个空格”的 bug,看懂了么?这就变成了 [rm -rf /]!
  3. 埋藏隐患的日志清理 shell 脚本!脚本要害内容如下。

    cd ${log_path}
    rm -rf *

    目标是:进入到日志目录,而后把日志都删除。隐患:当目录不存在时,喜剧就产生了!
    不跑路,有啥躲避计划?

  4. 在生产环境把 [rm -rf] 命令替换为 [mv],再写个脚本程序定期清理,模仿回收站的性能。
  5. 把日志清理 shell 脚本,改用逻辑与 && 进行连贯。

    cd ${log_path}
    rm -rf *

    改用逻辑与 && 进行连贯,合并成一句,前半句逻辑失败,后半句命令不执行:

    cd ${log_path} && rm -rf * 

    残缺的日志清理 shell 脚本如下:

    #!/bin/bash
    base_home="/home/apps"
    log_path=${base_home}/logs
    cd ${log_path} && rm -rf *

06 小结

  1. 总结了文件及目录的门路切换、显示、创立、复制、挪动和删除操作的罕用姿态。
  2. cp、rm 都用到了 -r/ R 参数,即 recursion,递归的意思,如果不加这个参数,好多时候操作会失败。
  3. 在操作 cd、ls、cp、mv、touch、mkdir、rm 等命令时,如果没有指定门路,默认在当前目录下进行操作。如果指定目录,则脱离不了以下几类目录符号:

    /  #主机根目录
    ~  #用户目录
    ./  #绝对目录,本级目录
    ../  #绝对目录的下级目录
    ../..  #绝对目录,爷爷目录,其余类推
    - #上次目录
    /xxx/xx2/xx3 # 相对目录,从根目录开始 
  4. 删库跑路命令【rm -rf】,以及如何躲避!

「不甩锅的码农」原创,转载请注明起源,未经受权禁止商业用途!同名 GZH 请关注!

退出移动版