学习中心/工程实践/Linux/Linux 2:文件、链接、打包

· Linux · 2 · 文件

Linux 2:文件、链接、打包

看、备份、find、tar、rsync。名字不是文件。rm 前先 ls。

正在加载录音…

先看内容,再复制,删是最后一步

没有回收站。这一块走完,你该能看、备份、找、打包、同步,并且在 rm 之前知道自己在删什么。名字只是指向 inode 的标签,不是文件本身。

  1. 看less / grep
  2. 备份cp / rsync
  3. 打包tar
  4. 删rm -i

1. 看

  • 看
    这是文本、二进制,还是链接file /etc/hosts
  • 看
    一页一页。q 退出,/ 搜索less /etc/hosts
  • 看
    前 20 行。tail -n 20 是末尾head -n 20 /etc/hosts
  • 看
    多少行。长文件用 less,别用 catwc -l /etc/hosts

2. 建、复制、改名

  • 建
    -p:中间目录没有就一并建mkdir -p ~/work/notes
  • 复制
    -a 尽量保住权限和时间。改之前先留一份cp -a notes.txt notes.bak
  • 改名
    mv 既是改名也是挪位置。同盘几乎是改目录项,跨盘才是复制再删mv notes.txt archive/notes.txt

3. 删之前先确认路径

  • 看
    确认这就是你要删的那个ls -l notes.bak
  • 删
    删前问一句。没有回收站rm -i notes.bak
  • 删
    只删空目录。非空用 rm -r,先 ls 再删rmdir empty-dir

rm -rf / 这类不要敲,也不要复制来路不明的。通配先 ls。Tab 补全到完整名字再删。

4. 名字不是文件

  • 看
    第一列 inode。两个名字同一个 inode,是硬链接ls -li notes.bak
  • 建
    软链接。指向一个路径,目标可以不在同一个文件系统ln -s /etc/hosts ~/hosts-link
  • 看
    最终落到哪。断掉的链接 ls 会标红或打问号readlink -f ~/hosts-link

硬链接是同一个文件的第二个名字。软链接是路标。删软链接只删路标。删硬链接只少一个名字,inode 上还有名字就不会真删。

5. 找

  • 找
    只在 ~/work 下按名字找。不要一上来 find /find ~/work -name "*.txt"
  • 找
    一天内改过的find ~/work -mtime -1
  • 找
    按内容搜。大目录会慢,范围收小grep -R --line-number "TODO" ~/work

find 是现场走目录。locate 靠数据库,快,但刚建的文件可能还没有。权限不够的目录,find 会报 Permission denied,那是正常的。

6. 打包

  • 打包
    c 建,z gzip,f 文件名。-C 先进入再打包,包里路径更干净tar -czf notes.tar.gz -C ~/work notes
  • 看
    先看里面有什么,再解tar -tzf notes.tar.gz
  • 解
    解到指定目录。不要在 / 下解来路不明的包tar -xzf notes.tar.gz -C /tmp

7. 同步到别处

  • 同步
    先空跑。末尾的 / 表示目录里的内容。看懂再去掉 --dry-runrsync -a --dry-run ~/work/ /tmp/work-bak/
  • 同步
    -a 归档模式:权限、时间、链接尽量保住rsync -a ~/work/ /tmp/work-bak/

scp 能拷单个文件。目录、增量、排除,用 rsync。远程拷要等 SSH 那一篇。

8. 改文件:nano 应急

  • 改
    Ctrl+O 存,Ctrl+X 退出。机器上只有这个时够用nano ~/work/notes/todo.txt

下一篇起是 Vim。系统文件用 sudo 编辑之前,先 cp 一份。

这块过关:改之前有备份,找得到文件,打包前先 tar -t,rm 前先 ls。下一篇 Vim,先能进出。

同模块

工程实践 →