[Linux] 命令行管理文件

[复制链接]
发表于 9 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
刚接触 Linux 命令行时最常卡住的地方,其实不是记不住命令,而是搞不清路径怎么走、目录结构怎么组织。这篇把 FHS 分层标准、路径导航和 ls / tree / stat / touch / mkdir / cp / mv / rm 这些日常命令连同软硬链接一起整理成一份速查笔记,每节都配实际终端截图,照着敲一遍基本就能上手。

目录一览:从 FHS 到 shell 通配


  • FHS
  • 文件路径导航
  • ls 命令
  • tree 命令
  • stat 命令
  • touch 命令
  • 命令行管理文件
  • mkdir 命令
  • cp 命令
  • mv 命令
  • rm 和 rmdir 命令
  • 软链接
  • 硬链接
  • 软连接与硬链接的区别
  • shell 扩展匹配文件


FHS 文件系统层级标准

FHS 采用树形结构来组织文件,定义了系统中每个区域的用途、必须包含的最小文件和目录集合,同时还给出了例外情况与冲突情况的处理方式。

FHS 实际上定义了两层规范:


  • 定义 / 下面各个目录应该放什么数据。例如 /etc 要放配置文件,/bin 与 /sbin 则放可执行文件,诸如此类;
  • 针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放系统日志文件、/usr/share 放共享数据,诸如此类。




文件路径导航:pwd 与 cd 的用法

先看当前在哪个目录,用 pwd:


  • 显示当前工作目录
  1. pwd
复制代码


切换路径用 cd:




  • 切换到上一次所在目录
  1. cd
  2. -
复制代码



  • 切换到家目录
  1. cd
  2. #或cd
  3. ~
复制代码



  • 上一级目录,用 .. 表示



另外提醒一句:在变量里写文件路径的时候,尽量用绝对路径,少用相对路径,否则换一个工作目录就会找错地方。

命令行里怎么管理文件

这一节把后面几个创建、复制、移动、删除命令的入口关系串一下,先看一眼整体操作面板。



ls 命令:常用参数速查


  • -1:以单列格式展示




  • -R:递归查看子目录中的文件




  • -l:长列表格式查看文件详细信息




  • ls 默认按文件名字典序正向排序,加 -r 反向排序,-t 按时间排序




  • -d:只查看对象本身,不展开目录内容



tree 命令:树形列出目录结构

先装工具:
  1. yum install -y tree
复制代码

用 tree 看 /etc/yum:
  1. tree /etc/yum
复制代码



  • 控制查看深度,配合 -L 使用
  1. tree -L 2 /home
复制代码


stat 命令:查看文件元数据属性
  1. stat /etc/fstab
复制代码


touch 命令:创建空文件与时间戳

如果文件不存在,就创建该文件;加上 -c 选项时,文件不存在也不会去创建。



其他选项可以用 touch --help 查看。

mkdir 命令:创建单层多层目录


  • 创建目录,用 -p 选项可以一次创建多层目录



cp 命令:复制文件与目录


  • 复制单个文件到目标位置




  • 复制的同时重命名
  1. cp /etc/hosts ./hosts-1
复制代码


这里要注意两点:


  • 当前目录下如果有同名文件,不会提示,直接覆盖;
  • 一次复制多个文件时,目标位置只能是一个目录。



  • -r:复制目录




  • 复制多个目录时,目标必须是已经存在的目录;
  • 当前目录下如果有同名目录,源目录会被放到这个目录里面,而不是覆盖当前目录。


mv 命令:移动与重命名文件


  • 移动单个文件
  1. mv hosts-1 ../lab1
复制代码

移动多个文件时,目标位置只能是目录。


  • 重命名
  1. mv hosts hosts-new
复制代码



  • 移动单个或多个目录
  1. #移动单个
  2. mv etc ../lab1
  3. #移动多个
  4. mv home/ yum/ yum-1/ ../lab1
复制代码

rm 与 rmdir:删除文件与目录


  • 删除文件
  1. rm hosts-new
复制代码


-f 选项可以直接删除不提示。


  • rmdir 可删除空目录,但删不了非空目录



-r 选项可以递归删除目录,-fr 表示递归强制删除目录。

软链接:类似 Windows 快捷方式

软链接本质上也是一种文件,里面存的是源文件的路径(位置加名字),用的场景最多。

先看一个现成的链接文件:
  1.  ll /etc/rc.local
  2.  lrwxrwxrwx. 1 root root 13 Mar  7  2024 /etc/rc.local -> rc.d/rc.local
  3.  
  4.  rc.d/rc.local 的位置在 /etc/rc.d/rc.local,可以打开 /etc/rc.local 文件查看
复制代码

ln 命令用来创建软连接或硬链接,默认创建的是硬链接。创建软连接的写法是:ln -s 源文件 软链接文件。
  1.  #准备新的环境 new目录 mkdir -p /dir0/new cd
  2.  /dir0/new/ #创建源文件 touch test.txt [root@boot new]# ll total 0 -rw-r--r--. 1 root root 0 Nov 17 14:01 test.txt #创建软连接 [root@boot new]# ln -s test.txt stest.txt [root@boot new]# ll total 0 lrwxrwxrwx. 1 root root 8 Nov 17 14:06 stext.txt -> test.txt #可以发现软连接指向源文件 -rw-r--r--. 1 root root 0 Nov 17 14:01 test.txt #从源文件位置写入内容 [root@boot new]# echo 'aaa' >> test.txt  [root@boot new]# cat stext.txt  aaa  [root@boot new]# cat test.txt  aaa  #从软连接位置写入内容 [root@boot new]# echo 'bbb' >> stext.txt  [root@boot new]# cat stext.txt  aaa  bbb  [root@boot new]# cat test.txt  aaa  bbb  #创建使用绝对路径创建软连接 #创建绝对路径的软连接 ln -s /dir0/new/test.txt   stest.txt #因为这样链接文件即使移动后能被找到,可以移动stest.txt试试
复制代码

这里有个常见疑问:源文件被删除、改名或者移动走之后,软连接会怎样?答案是会变红闪烁,也就是变成失效链接。

硬链接:同一个 inode 的多个名字

硬链接指的是在同一个分区里,不同文件共享同一个 inode 号码,这几个文件互为硬链接,实际用得比较少。
  1.  #创建新的实验文件ytest.txt
  2.  [root@boot new]# touch ytest.txt
  3.  #给新文件创建硬链接
  4.  [root@boot new]# ln ytest.txt ytest.txt_head
  5.  [root@boot new]# ll
  6.  #可以发现硬链接并没有显示l,我们可以发现ytest.txt与ytest.txt_head硬链接数量变为2了
  7.  total 4
  8.  -rw-r--r--. 1 root root 8 Nov 17 14:07 test.txt
  9.  -rw-r--r--. 2 root root 0 Nov 17 14:18 ytest.txt
  10.  -rw-r--r--. 2 root root 0 Nov 17 14:18 ytest.txt_head
  11.  #可以通过ll -i 查看,发现两个文件inode是相同的
  12.  [root@boot new]# ll -i
  13.  total 4
  14.  13662 -rw-r--r--. 1 root root 8 Nov 17 14:07 test.txt
  15.  13664 -rw-r--r--. 2 root root 0 Nov 17 14:18 ytest.txt
  16.  13664 -rw-r--r--. 2 root root 0 Nov 17 14:18 ytest.txt_head
  17.  #再通过两个文件中分别加入内容是与软链接的效果一致的
复制代码

软连接与硬链接的区别


  • 解释:软连接(符号链接,softlink / symlink)类似 Windows 快捷方式,存放的是源文件的位置;硬链接是同一个分区中 inode 号码相同的文件,互为硬链接。
  • 创建方式:软连接通过 ln -s 创建,硬链接直接通过 ln 创建。
  • 特点对比:软链接用得比较多,可以给文件和目录都创建;硬链接只能给文件创建,不能跨分区,也无法给目录创建,用得比较少。


shell 扩展匹配文件

最后看 shell 的扩展匹配,配合通配符能一次性选中一批文件。



这套命令记忆点其实不多:路径先用绝对路径保稳,ls 记住 -l 和 -a,复制目录别忘 -r,删目录先想想 rmdir 和 rm -fr 的区别。

编辑提示:这份速查表适合贴在水位线旁随手翻,练手环境建议用虚拟机或容器,rm -fr 这类命令在宿主机上敲错一格代价很大。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表