轻松掌握 Linux 文件与目录操作

Unknown Summary

在 Linux 系统的世界里,文件与目录操作是最基础也是最重要的技能之一。无论是系统管理员管理服务器,还是开发者搭建开发环境,亦或是普通用户日常使用 Linux 系统,都离不开对文件和目录的熟练操作。今天,就让我们一同深入学习 Linux 文件与目录操作,轻松掌握这些关键技能。

Linux 文件系统基础

在深入学习文件与目录操作之前,先来了解一下 Linux 文件系统的基本结构。Linux 采用树形目录结构,以根目录 “/” 为起点,像一棵大树一样向各个分支延伸。根目录下包含了众多重要的子目录,每个子目录都有其特定的用途。

snow@hxstrive:/$ ls
bin   dev  home  lib    lib64   lost+found  mnt  proc  run   snap  sys  usr
boot  etc  init  lib32  libx32  media       opt  root  sbin  srv   tmp  var

比如:

  • “/bin” 目录存放着二进制可执行文件,系统中的许多常用命令就存放在这里,像我们后面会频繁用到的 “ls”、“cd” 等命令。

  • “/etc” 目录用于存放系统的配置文件,几乎所有系统服务和应用程序的配置信息都能在这里找到。

  • “/home” 目录是普通用户的主目录所在地,每个用户在这个目录下都有一个属于自己的文件夹,用于存放个人文件。

  • “/var” 目录,通常用于存放系统运行过程中不断变化的数据,如日志文件等。

理解这种树形结构,对于我们准确找到所需文件和目录,以及合理组织自己的文件非常有帮助。

文件与目录操作命令

查看目录内容 - ls

“ls” 命令是我们在 Linux 系统中使用频率极高的一个命令,它用于列出指定目录的内容。默认情况下,“ls” 命令只会列出当前目录下的非隐藏文件和目录。例如,在终端中输入 “ls”,系统会立即列出当前目录下的所有文件和目录名称。

snow@hxstrive:/$ ls
bin   dev  home  lib    lib64   lost+found  mnt  proc  run   snap  sys  usr
boot  etc  init  lib32  libx32  media       opt  root  sbin  srv   tmp  var

如果我们想要查看更多详细信息,可以使用 “ls -l” 命令。这个选项会以长格式显示文件和目录的详细信息,包括文件的权限、所有者、大小、修改时间等。例如:

snow@hxstrive:/$ ls -l
total 2436
lrwxrwxrwx   1 root root       7 Jan  7 05:35 bin -> usr/bin
drwxr-xr-x   2 root root    4096 Apr 18  2022 boot
drwxr-xr-x  16 root root    3560 Apr 10 09:43 dev
drwxr-xr-x  85 root root    4096 Apr 10 09:43 etc
drwxr-xr-x   3 root root    4096 Mar 20 14:41 home
-rwxrwxrwx   1 root root 2424984 Mar  5 11:12 init
lrwxrwxrwx   1 root root       7 Jan  7 05:35 lib -> usr/lib
lrwxrwxrwx   1 root root       9 Jan  7 05:35 lib32 -> usr/lib32
lrwxrwxrwx   1 root root       9 Jan  7 05:35 lib64 -> usr/lib64
lrwxrwxrwx   1 root root      10 Jan  7 05:35 libx32 -> usr/libx32
drwx------   2 root root   16384 Mar 20 14:28 lost+found
drwxr-xr-x   2 root root    4096 Jan  7 05:35 media
drwxr-xr-x   8 root root    4096 Mar 20 14:28 mnt
...

第一列表示文件的权限,“d” 开头表示这是一个目录,“-” 开头表示普通文件。接下来的三组字符分别表示所有者、所属组以及其他用户对该文件或目录的权限。第二列的数字表示链接数,第三列是所有者,第四列是所属组,第五列是文件大小,第六列和第七列分别是修改时间和文件名。例如:

drwxr-xr-x   2 root root    4096 Apr 18  2022 boot
d       | rwx       | r-x       | r-x         | 2      | root    | root   |  4096     |  Apr 18  2022 | boot
文件类型 | 所有者权限 | 所属组权限 | 其他用户权限 | 链接数 | 所属用户 | 所属组  |  文件大小 |  修改时间      | 文件名

如果想要查看包括隐藏文件在内的所有文件,可以使用 “ls -a” 命令。隐藏文件是以点 “.” 开头的文件,在日常操作中,这些文件通常包含一些系统或应用程序的配置信息,一般不需要用户直接干预,但在某些情况下,我们可能需要查看它们。

切换目录 - cd

“cd” 命令用于切换当前工作目录。通过这个命令,我们可以在 Linux 的文件系统树形结构中自由穿梭。比如,要进入 “/home/user” 目录,可以在终端中输入 “cd /home/user”。

如果想要返回上一级目录,只需输入 “cd ..” 即可。另外,如果想要快速回到用户的主目录,直接输入 “cd”,无需任何参数,系统会自动将当前目录切换到用户的主目录。例如:

snow@hxstrive:/$ cd /home/snow
snow@hxstrive:~$ cd ..
snow@hxstrive:/home$ cd

创建目录 - mkdir

当我们需要创建新的目录时,就会用到 “mkdir” 命令。例如,要在当前目录下创建一个名为 “newdir” 的新目录,只需在终端中输入 “mkdir newdir”。如下:

snow@hxstrive:~$ mkdir newdir
snow@hxstrive:~$ ls
newdir

如果想要一次性创建多个目录,或者创建嵌套目录,可以使用 “mkdir -p” 选项。例如,要创建一个名为 “parent/child” 的嵌套目录结构,如果直接使用 “mkdir parent/child”,系统会提示找不到 “parent” 目录,因为它还不存在。而使用 “mkdir -p parent/child”,系统会自动创建 “parent” 目录,并在其下创建 “child” 目录。例如:

snow@hxstrive:~$ mkdir parent/child
mkdir: cannot create directory ‘parent/child’: No such file or directory
snow@hxstrive:~$ mkdir -p parent/child
snow@hxstrive:~$ ls
newdir  parent

删除空目录 - rmdir

“rmdir” 命令用于删除空目录。比如,要删除当前目录下名为 “emptydir” 的空目录,可以输入 “rmdir emptydir”。例如:

snow@hxstrive:~$ rmdir emptydir/
snow@hxstrive:~$ rmdir parent/
rmdir: failed to remove 'parent/': Directory not empty

需要注意的是,“rmdir” 只能删除空目录,如果目录中包含文件或子目录,该命令将无法执行。如果要删除非空目录及其内容,需要使用 “rm -r” 命令,不过这个命令要谨慎使用,因为它会递归删除目录及其下的所有文件和子目录,一旦误操作,可能会造成不可挽回的损失。

复制文件或目录 - cp

“cp” 命令用于复制文件或目录。复制单个文件时,基本语法为 “cp source_file destination_file”。例如,要将当前目录下的 “file.txt” 文件复制为 “file_backup.txt”,可以输入 “cp file.txt file_backup.txt”。例如:

snow@hxstrive:~$ cp file.txt file_backup.txt
snow@hxstrive:~$ ls
file.txt  file_backup.txt  newdir  parent

如果要复制目录,则需要使用 “-r” 选项,以递归复制目录及其所有内容。例如,要将 “mydir” 目录复制到 “new_location” 目录下,可以输入 “cp -r mydir new_location”。例如:

snow@hxstrive:~$ cp -r parent/ parent_backup/
snow@hxstrive:~$ ls
file.txt  file_backup.txt  newdir  parent  parent_backup

移动文件或目录 - mv

“mv” 命令既可以用于移动文件或目录,也可以用于重命名文件或目录。移动文件或目录时,语法为 “mv source destination”。例如,要将 “file.txt” 文件移动到 “/home/snow/newdir” 目录下,例如:

snow@hxstrive:~$ mv file.txt /home/snow/newdir/
snow@hxstrive:~$ ls newdir/
file.txt

当用于重命名时,只需将目标路径指定为新的文件名即可。例如,要将 “file.txt” 文件重命名为 “newfile.txt”,可以输入 “mv file.txt newfile.txt”,例如:

snow@hxstrive:~$ mv file.txt newfile.txt
snow@hxstrive:~$ ls
file_backup.txt  newdir  newfile.txt  parent  parent_backup

同样的道理,对于目录的重命名也是如此操作。

删除文件或目录 - rm

“rm” 命令用于删除文件或目录。删除文件时,直接使用 “rm file.txt” 即可删除当前目录下的 “file.txt” 文件。例如:

snow@hxstrive:~$ rm file.txt

如果要删除目录及其所有内容,需要使用 “-r” 选项,即 “rm -r parent_backup”,这会将 “parent_backup” 目录及其下的所有文件和子目录全部删除,例如:

snow@hxstrive:~$ tree parent_backup/
parent_backup/
├── a.txt
└── child
    └── a.txt
1 directory, 2 files
snow@hxstrive:~$ rm -fr parent_backup/
snow@hxstrive:~$ ls
file_backup.txt  newdir  parent

再次强调,使用 “rm -r” 命令时一定要格外小心,确保操作的正确性,避免误删重要数据。

文件与目录权限管理

在 Linux 系统中,权限管理至关重要。通过合理设置文件和目录的权限,可以确保系统的安全性和数据的完整性。每个文件和目录都有三组权限,分别对应所有者(owner)、所属组(group)和其他用户(others)。权限分为读(r)、写(w)和执行(x)三种。

使用 “ls -l” 命令查看文件和目录详细信息时,第一列的字符就表示了权限。例如:

  • “-rw-r--r--” 表示这是一个普通文件,所有者有读和写的权限,所属组和其他用户只有读的权限。

  • “drwxr-xr-x” 表示这是一个目录,所有者有读、写和执行的权限,所属组和其他用户有读和执行的权限。

要修改文件或目录的权限,可以使用 “chmod” 命令。“chmod” 命令有两种常见的用法,一种是使用数字表示权限,另一种是使用符号表示权限。

数字表示法

读权限用数字 4 表示,写权限用数字 2 表示,执行权限用数字 1 表示。你可以通过下面表格理解 4、2、1三个数字的来历(0 表示没有权限,1-表示有权限):

image.png

注意,如果要获得一个完整的权限值,需要将这三个数字相加。例如,所有者有读、写、执行权限(4 + 2 + 1 = 7),所属组有读和执行权限(4 + 1 = 5),其他用户有读和执行权限(4 + 1 = 5),那么这个文件的权限值就是 755。要将 “file.txt” 文件的权限设置为 755,可以输入 “chmod 755 file.txt”,例如:

snow@hxstrive:~$ ls -l
total 12
-rwxrwxr-x 1 snow snow    6 Apr 10 18:37 file.txt
drwxr-xr-x 2 snow snow 4096 Apr 10 18:39 newdir
drwxr-xr-x 3 snow snow 4096 Apr 10 15:34 parent
snow@hxstrive:~$ chmod 755 file.txt
snow@hxstrive:~$ ls -l
total 12
-rwxr-xr-x 1 snow snow    6 Apr 10 18:37 file.txt
drwxr-xr-x 2 snow snow 4096 Apr 10 18:39 newdir
drwxr-xr-x 3 snow snow 4096 Apr 10 15:34 parent

符号表示法

使用符号表示法时,可用符号如下:

  • “u” 表示所有者

  • “g” 表示所属组

  • “o” 表示其他用户

  • “a” 表示所有用户

  • “+” 表示增加权限

  • “-” 表示去除权限

  • “=” 表示设置权限

例如,要给 “file.txt” 文件的所有者增加执行权限,可以输入 “chmod u+x file.txt”,例如:

snow@hxstrive:~$ chmod u+x file.txt
snow@hxstrive:~$ ls -l
total 12
-rwxr-xr-x 1 snow snow    6 Apr 10 18:37 file.txt
drwxr-xr-x 2 snow snow 4096 Apr 10 18:39 newdir
drwxr-xr-x 3 snow snow 4096 Apr 10 15:34 parent

如果要将 “mydir” 目录的所属组的权限设置为读和写,可以输入 “chmod g=rw mydir”。

总结

通过本文的学习,我们对 Linux 文件与目录操作有了全面的了解。从文件系统的基础结构,到常用的文件与目录操作命令,再到关键的权限管理,这些都是我们在 Linux 系统中工作和学习的必备技能。希望大家能够通过不断地实践,熟练掌握这些操作,充分发挥 Linux 系统的强大功能。在后续的学习和使用中,你会发现这些基础技能将为你打开 Linux 世界的大门,让你能够更加高效地使用和管理 Linux 系统。

真理惟一可靠的标准就是永远自相符合。 —— 欧文
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号