文件的组织


目录名称 含义
bin binary 的缩写,表示二进制文件,bin目录包含了会被所有用户使用的可执行程序
boot 包含于linux启动密切相关的文件
dev device的缩写,表示设备,他里面的子目录,每一个对应一个外设,比如我们的光盘驱动器的文件就在这里
etc 包含系统的配置文件
home 用户的私人目录,在这里存放私人的文件,类似于windows下的 ‘我的文档’ 。linux中的每个用户都在home 目录下有一个私人目录
lib library的缩写,表示库,包含被程序所调用的库文件
media 媒体,可移动的外设(USB盘,SD卡)插入电脑时,linux可以让我们通过media的子目录来访问这些外设中的内容
mnt mount 的缩写,表示挂载,类似media,一般表示临时挂载一些装置
opt optional application software package 的缩写,表示可选的应用软件包,用于安装第三方软件和插件
root 超级用户root的家目录
sbin system binary 的缩写,表示系统二进制文件,包含系统级的重要可执行程序
srv service的缩写,表示服务,包含一些网络服务启动之后所需要取得的数据
tmp temporary 的缩写,表示临时的,普通用户和程序存放文件的地方
usr Unix Software Resource 的缩写,表示Unix操作系统软件资源,usr目录是最庞大的目录之一,他安装了大部分用户要调度的程序
var variable的缩写,表示动态的,通常包含程序的数据,比如log文件等
  1. .
  2. ├── bin -> usr/bin binary 的缩写,表示二进制文件,bin目录包含了会被所有用户使用的可执行程序
  3. ├── boot 包含于linux启动密切相关的文件
  4. ├── dev 表示设备,他里面的子目录,每一个对应一个外设,比如我们的光盘驱动器的文件就在这里
  5. ├── etc 包含系统的配置文件
  6. ├── home 用户的私人目录,linux中的每个用户都在home 目录下有一个私人目录
  7. ├── lib -> usr/lib library的缩写,表示库,包含被程序所调用的库文件
  8. ├── lib64 -> usr/lib64
  9. ├── lost+found
  10. ├── media 媒体,可移动的外设(USB盘,SD卡)插入电脑时
  11. ├── mnt mount 的缩写,表示挂载,类似media,一般表示临时挂载一些装置
  12. ├── opt 表示可选的应用软件包,用于安装第三方软件和插件
  13. ├── proc
  14. ├── root 超级用户root的家目录
  15. ├── run
  16. ├── sbin -> usr/sbin system binary 的缩写,表示系统二进制文件,包含系统级的重要可执行程序
  17. ├── srv service的缩写,表示服务,包含一些网络服务启动之后所需要取得的数据
  18. ├── sys
  19. ├── tmp temporary 的缩写,表示临时的,普通用户和程序存放文件的地方
  20. ├── usr usr目录是最庞大的目录之一,他安装了大部分用户要调度的程序
  21. └── var variable的缩写,表示动态的,通常包含程序的数据,比如log文件等

查看路径


pwd

显示当前目录的路径

  1. [root@wsy ~]# pwd
  2. /root

which

查看命令的可执行文件所在路径, Linux 下,每一条命令其实都对应一个可执行程序,在终端中输入命令,按回车的时候,就是执行了对应的那个程序, which 命令本身对应的程序也存在于 Linux 中。

  1. [root@wsy ~]# which node
  2. /usr/local/bin/node
  3. [root@wsy ~]# which pwd
  4. /usr/bin/pwd

浏览和切换目录


ls

列出文件和目录,它是 Linux 最常用的命令之一。

【常用参数】

  • -a 显示所有文件和目录包括隐藏的
  • -l 显示详细列表
  • -h 适合人类阅读的
  • -t 按文件最近一次修改时间排序
  • -i 显示文件的 inodeinode 是文件内容的标识)

cd

cd 是英语 change directory 的缩写,表示切换目录。

  1. cd / --> 跳转到根目录
  2. cd ~ --> 跳转到家目录
  3. cd .. --> 跳转到上级目录
  4. cd ./home --> 跳转到当前目录的home目录下
  5. cd /home/lion --> 跳转到根目录下的home目录下的lion目录
  6. cd --> 不添加任何参数,也是回到家目录

[注意] 输入cd /ho + 单次 tab 键会自动补全路径 + 两次 tab 键会列出所有可能的目录列表。

du

列举目录大小信息。

【常用参数】

  • -h 适合人类阅读的;
  • -a 同时列举出目录下文件的大小信息;
  • -s 只显示总计大小,不显示具体信息。

    浏览文件


cat

一次性显示文件所有内容,更适合查看小的文件。

  1. cat cloud-init.log

【常用参数】

  • -n 显示行号。

less

分页显示文件内容,更适合查看大的文件。

  1. less cloud-init.log

【快捷操作】

  • 空格键:前进一页(一个屏幕);
  • b 键:后退一页;
  • 回车键:前进一行;
  • y 键:后退一行;
  • 上下键:回退或前进一行;
  • d 键:前进半页;
  • u 键:后退半页;
  • q 键:停止读取文件,中止 less 命令;
  • = 键:显示当前页面的内容是文件中的第几行到第几行以及一些其它关于本页内容的详细信息;
  • h 键:显示帮助文档;
  • / 键:进入搜索模式后,按 n 键跳到一个符合项目,按 N 键跳到上一个符合项目,同时也可以输入正则表达式匹配。

head

显示文件的开头几行(默认是10行)

  1. head cloud-init.log

【参数】

  • -n 指定行数 head cloud-init.log -n 2

tail

显示文件的结尾几行(默认是10行)

  1. tail cloud-init.log

【参数】

  • -n 指定行数 tail cloud-init.log -n 2
  • -f 会每过1秒检查下文件是否有更新内容,也可以用 -s 参数指定间隔时间 tail -f -s 4 xxx.log
  • -s 指定间隔秒数

创建文件


touch

创建一个文件

  1. touch new_file

mkdir

创建一个目录

  1. mkdir new_folder

【常用参数】

  • -p 递归的创建目录结构 mkdir -p one/two/three

文件的复制和移动

cp

拷贝文件和目录

  1. cp file file_copy --> file 是目标文件,file_copy 是拷贝出来的文件
  2. cp file one --> file 文件拷贝到 one 目录下,并且文件名依然为 file
  3. cp file one/file_copy --> file 文件拷贝到 one 目录下,文件名为file_copy
  4. cp *.txt folder --> 把当前目录下所有 txt 文件拷贝到 folder 目录下

【常用参数】

  • -r 递归的拷贝,常用来拷贝一整个目录

mv

移动(重命名)文件或目录,与cp命令用法相似。

  1. mv file one --> file 文件移动到 one 目录下
  2. mv new_folder one --> new_folder 文件夹移动到one目录下
  3. mv *.txt folder --> 把当前目录下所有 txt 文件移动到 folder 目录下
  4. mv file new_file --> file 文件重命名为 new_file

文件的删除和链接


rm

删除文件和目录,由于 Linux 下没有回收站,一旦删除非常难恢复,因此需要谨慎操作

  1. rm new_file --> 删除 new_file 文件
  2. rm f1 f2 f3 --> 同时删除 f1 f2 f3 3个文件

【常用参数】

  • -i 向用户确认是否删除;
  • -f 文件强制删除;
  • -r 递归删除文件夹,著名的删除操作 rm -rf

    ln

    英文 Link 的缩写,表示创建链接。

学习创建链接之前,首先要理解链接是什么,我们先来看看 Linux 的文件是如何存储的:
Linux 文件的存储方式分为3个部分,文件名、文件内容以及权限,其中文件名的列表是存储在硬盘的其它地方和文件内容是分开存放的,每个文件名通过 inode 标识绑定到文件内容。
Linux 下有两种链接类型:硬链接和软链接。

硬链接

使链接的两个文件共享同样文件内容,就是同样的 inode ,一旦文件1和文件2之间有了硬链接,那么修改任何一个文件,修改的都是同一块内容,它的缺点是,只能创建指向文件的硬链接,不能创建指向目录的(其实也可以,但比较复杂)而软链接都可以,因此软链接使用更加广泛。

  1. ln file1 file2 --> 创建 file2 file1 的硬链接

image.png
⽂件和⽬录 - 图2

如果我们用 rm file1 来删除 file1 ,对 file2 没有什么影响,对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上删除。只有同时删除了 file1file2 后,它们共同指向的文件内容才会消失。

软链接

软链接就类似 windows 下快捷方式。

  1. ln -s file1 file2

image.png
执行 ls -l 命名查看当前目录下文件的具体信息

  1. total 0
  2. -rw-r--r-- 1 root root 0 Jan 14 06:29 file1
  3. lrwxrwxrwx 1 root root 5 Jan 14 06:42 file2 -> file1 # 表示file2 指向 file1

其实 file2 只是 file1 的一个快捷方式,它指向的是 file1 ,所以显示的是 file1 的内容,但其实 file2 的 inode 与 file1 并不相同。如果我们删除了 file2 的话, file1 是不会受影响的,但如果删除 file1 的话, file2 就会变成死链接,因为指向的文件不见了。