1、ls指令ls: 列出当前目录内容代码语言:javascript代码运行次数:0运行复制
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# lsLesson
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# ls -ltotal 4drwxr-xr-x 3 root root 4096 Jan 14 17:24 Lesson
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# ls -a. .. .bash_logout .bash_profile .bashrc .cache .cshrc Lesson .pip .pydistutils.cfg .ssh .tcshrc .viminfo
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# ls -a -ltotal 52dr-xr-x---. 6 root root 4096 Jan 14 17:25 .dr-xr-xr-x. 18 root root 4096 Jan 14 16:38 ..-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrcdrwx------ 3 root root 4096 Jun 28 2024 .cache-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrcdrwxr-xr-x 3 root root 4096 Jan 14 17:24 Lessondrwxr-xr-x 2 root root 4096 Jun 28 2024 .pip-rw-r--r-- 1 root root 206 Jan 14 16:38 .pydistutils.cfgdrwx------ 2 root root 4096 Jun 28 2024 .ssh-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc-rw------- 1 root root 674 Jan 14 17:25 .viminfo
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# pwd/root
学习cd指令前,我们需要了解linux下的树状目录结构
在 / (根目录)下使用 ls 命令,可以看到如下目录
代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ /]# ls -a -ltotal 68dr-xr-xr-x. 18 root root 4096 Jan 14 16:38 .dr-xr-xr-x. 18 root root 4096 Jan 14 16:38 ..-rw-r--r-- 1 root root 0 Jun 28 2024 .autorelabellrwxrwxrwx. 1 root root 7 Jun 28 2024 bin -> usr/bindr-xr-xr-x. 5 root root 4096 Jun 28 2024 bootdrwxr-xr-x 19 root root 2980 Jan 14 16:40 devdrwxr-xr-x. 80 root root 4096 Jan 14 16:50 etcdrwxr-xr-x. 2 root root 4096 Apr 11 2018 homelrwxrwxrwx. 1 root root 7 Jun 28 2024 lib -> usr/liblrwxrwxrwx. 1 root root 9 Jun 28 2024 lib64 -> usr/lib64drwx------. 2 root root 16384 Jun 28 2024 lost+founddrwxr-xr-x. 2 root root 4096 Apr 11 2018 mediadrwxr-xr-x. 2 root root 4096 Apr 11 2018 mntdrwxr-xr-x. 2 root root 4096 Apr 11 2018 optdr-xr-xr-x 95 root root 0 Jan 14 16:38 procdr-xr-x---. 6 root root 4096 Jan 15 02:22 rootdrwxr-xr-x 26 root root 780 Jan 14 16:50 runlrwxrwxrwx. 1 root root 8 Jun 28 2024 sbin -> usr/sbindrwxr-xr-x. 2 root root 4096 Apr 11 2018 srvdr-xr-xr-x 13 root root 0 Jan 17 08:51 sysdrwxrwxrwt. 8 root root 4096 Jan 17 03:20 tmpdrwxr-xr-x. 13 root root 4096 Jun 28 2024 usrdrwxr-xr-x. 19 root root 4096 Jun 28 2024 var
以下是对这些目录的解释:
路径的认识:
Linux系统中,磁盘上的文件和目录被组成⼀棵目录树,每个节点都是目录或文件其中普通文件⼀定是目录树的叶子节点目录可能是叶子(空目录), 也可能是路上节点理解路径存在的意义: 树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯⼀性的方案来定位文件。其中任何⼀个节点,都只有⼀个父节点,所以,从根目录开始,定位指定文件,路径具有唯⼀性绝对路径:⼀般从/开始,不依赖其他目录的定位文件的方式相对路径:相对于当前用户所处目录,定位文件的路径方式绝对路径⼀般不会随着用户的路径变化而丧失唯⼀性,⼀般在特定服务的配置文件中经常被使用相对路径因为它的便捷性,⼀般在命令行中使用较多[root@iZbp1dkpw5hx2lyh7vjopaZ Winter]# pwd/root/Lesson/Practice/Winter[root@iZbp1dkpw5hx2lyh7vjopaZ Winter]# cd ~[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# pwd/root
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# pwd/root[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# cd Lesson/Practice/Winter/day1[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# pwd/root/Lesson/Practice/Winter/day1
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# pwd/root/Lesson/Practice/Winter/day1[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# cd ..[root@iZbp1dkpw5hx2lyh7vjopaZ Winter]# pwd/root/Lesson/Practice/Winter[root@iZbp1dkpw5hx2lyh7vjopaZ Winter]# cd ..[root@iZbp1dkpw5hx2lyh7vjopaZ Practice]# pwd/root/Lesson/Practice[root@iZbp1dkpw5hx2lyh7vjopaZ Practice]# cd ..[root@iZbp1dkpw5hx2lyh7vjopaZ Lesson]# pwd/root/Lesson
在 Linux 系统中,文件是信息存储和管理的核心。Linux 的文件系统具有高度的结构化和层次化,所有的资源(包括硬件、目录、设备等)都被视为文件或文件的形式进行管理。理解 Linux 下的文件,有助于更好地掌握系统操作和管理。概括为一句话就是,Linux下一切皆文件!
文件类型:
普通文件 : 最常见的文件类型,用于存储文本、数据或程序代码。 标识:通常以 - 开头 示例:文本文件、图片文件、可执行文件等。代码语言:javascript代码运行次数:0运行复制-rw-r--r-- 1 root root 0 Jan 14 17:25 test.c
drwxr-xr-x 3 root root 4096 Jan 14 17:24 Lesson
文件权限: Linux 使用文件权限来控制用户对文件的访问。每个文件都有三个级别的访问控制:
拥有者权限(User):文件的创建者或所有者对文件的控制权限。所属组权限(Group):文件所属组的成员对文件的控制权限。其他用户权限(Others):系统中所有其他用户对文件的控制权限。每个级别的权限有三种类型:
读权限(r):允许查看文件内容。写权限(w):允许修改文件内容。执行权限(x):允许执行文件(如果是可执行文件)。 例如:代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# lltotal 16-rwxr-xr-x 1 root root 8360 Jan 17 10:28 test-rw-r--r-- 1 root root 76 Jan 17 10:22 test.c
时间戳是指某个事件发生的特定时间点的记录,通常以一定的格式表示。它在计算机系统中被广泛用于跟踪文件的修改、访问、创建等操作的时间。
在 Linux 中,时间戳通常与文件相关联,用来表示文件的三个主要时间信息:
访问时间(Access Time, atime) 定义:文件上次被访问的时间。访问可以是读取文件内容、执行文件(如果它是可执行文件)等。 用途:访问时间用于表示文件的“最后读取”时刻。比如,当你查看文件内容时,文件的访问时间会被更新。 修改时间(Modify Time, mtime) 定义:文件内容最后一次被修改的时间。 用途:修改时间记录的是文件内容被改变的时刻。无论是对文件内容的编辑、重写还是替换,都会更新该时间。 状态更改时间(Change Time, ctime) 定义:文件的元数据(如权限、所有者等)最后一次被修改的时间。注意,ctime 记录的是文件的“状态”变化,而不是文件内容的变化。 用途:状态更改时间用于记录文件属性的变化。例如,当你修改文件的权限、所有者或文件名时,ctime 会发生变化。时间戳在文件中的表现形式: Linux 系统中的文件通常会有三个时间戳(atime、mtime、ctime),可以通过 stat 命令查看这些时间戳。 例如: 使用stat 查看时间戳:
代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# stat test.c File: ‘test.c’ Size: 76 Blocks: 8 IO Block: 4096 regular fileDevice: fd01h/64769dInode: 922584 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2025-01-17 10:28:08.614020812 +0800Modify: 2025-01-17 10:22:13.117799536 +0800Change: 2025-01-17 10:22:13.119799610 +0800 Birth: -
时间戳的用途:
文件管理:可以根据时间戳来查看和管理文件的历史版本或修改记录。备份系统:时间戳用于跟踪文件的修改,帮助自动化备份系统判断文件是否发生变化,从而只备份修改过的文件。安全审计:通过检查文件的修改时间,可以识别文件是否被非法篡改或访问。日志文件:系统日志、访问日志等通常会使用时间戳来记录每个事件的发生时间。时间戳格式: 在计算机中,时间戳通常以数字格式存储,表示从某个基准时间(通常是 Unix 时间戳自 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的秒数)经过的秒数。 例如: Unix 时间戳:这是一个自 1970 年 1 月 1 日(即 Unix 纪元)起的秒数。 比如,Unix 时间戳 1622541300 表示的是 2021 年 6 月 1 日 10:35:00 UTC。
4、touch指令创建空文件:
如果文件不存在,touch 可以用来创建一个新的空文件代码语言:javascript代码运行次数:0运行复制touch log.txt
更新文件的时间戳:
当你执行 touch 命令时,它会更新文件的访问时间(atime)和修改时间(mtime)为当前系统时间 访问时间(atime):文件的最后访问时间。当文件内容被读取时,atime 会更新。 修改时间(mtime):文件的最后修改时间。当文件内容被修改时,mtime 会更新。设置文件的时间戳:
touch 还允许你设置文件的时间戳,而不仅仅是使用当前时间。使用 -t 选项,可以为文件设置特定的时间戳时间格式为:[[CC]YY]MMDDhhmm[.ss],其中:
CC:世纪(可选)YY:年份MM:月份DD:日期hh:小时mm:分钟ss:秒(可选)代码语言:javascript代码运行次数:0运行复制touch -t 202301011200.00 log.txt
这条命令会将 log.txt 文件的时间戳设置为 2023 年 1 月 1 日 12:00:00。
创建多个文件:
touch也允许一次性创建多个空文件,只需要将多个文件名作为参数传递给 touch代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# touch log1.txt log2.txt log3.txt[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# ls -ltotal 16-rw-r--r-- 1 root root 0 Jan 17 12:00 log1.txt-rw-r--r-- 1 root root 0 Jan 17 12:00 log2.txt-rw-r--r-- 1 root root 0 Jan 17 12:00 log3.txt-rwxr-xr-x 1 root root 8360 Jan 17 10:28 test-rw-r--r-- 1 root root 76 Jan 17 10:22 test.c
mkdir是 Linux 中用于创建目录的命令。使用 mkdir 可以创建新的目录,从而帮助组织文件。
创建单个目录:
代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# mkdir Lesson1[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# ls -ltotal 4drwxr-xr-x 2 root root 4096 Jan 17 12:16 Lesson1
创建多层目录(递归创建):
使用 -p 选项,可以一次性创建多层目录,即使父目录不存在,mkdir 也会自动创建它们代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# mkdir -p Lesson2/Practice/day1[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# tree Lesson2Lesson2└── Practice └── day12 directories, 0 files
创建多个目录:
你可以一次性创建多个目录,只需在命令中列出多个目录名代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# mkdir Lesson1 Lesson2 Lesson3 [root@iZbp1dkpw5hx2lyh7vjopaZ day1]# ls -ltotal 12drwxr-xr-x 2 root root 4096 Jan 17 12:49 Lesson1drwxr-xr-x 2 root root 4096 Jan 17 12:49 Lesson2drwxr-xr-x 2 root root 4096 Jan 17 12:49 Lesson3
tree 命令用于以树形结构展示目录和文件
tree: 显示当前目录及其子目录代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# tree LessonLesson└── Practice └── Winter └── day1 ├── Lesson1 ├── Lesson2 └── Lesson3 6 directories, 0 files
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# tree -L 2.└── Lesson └── Practice 2 directories, 0 files
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# tree -a.├── .bash_history├── .bash_logout├── .bash_profile├── .bashrc├── .cache│ └── pip│ ├── http│ │ ├── b│ │ │ └── b│ │ │ └── 8│ │ │ └── 7│ │ │ └── 6│ │ │ └── bb876b2e6a22c2739002e9ef3388ae978b7a6192a19fe67d8b0030f2│ │ └── f│ │ └── e│ │ └── d│ │ └── 0│ │ └── e│ │ └── fed0ed508030b766d5b0c2792132c8bf197804464765b46b361f93a4│ └── selfcheck.json├── .cshrc├── Lesson│ └── Practice│ └── Winter│ └── day1│ ├── Lesson1│ ├── Lesson2│ └── Lesson3├── .pip│ └── pip.conf├── .pydistutils.cfg├── .ssh│ └── authorized_keys├── .tcshrc└── .viminfo22 directories, 13 files
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# tree -d .└── Lesson └── Practice └── Winter └── day1 ├── Lesson1 ├── Lesson2 └── Lesson37 directories
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# tree -F.└── Lesson/ └── Practice/ ├── test.cpp └── Winter/ └── day1/ ├── Lesson1/ │ ├── log.txt │ ├── test* │ └── test.c ├── Lesson2/ └── Lesson3/7 directories, 4 files
rm 是 Linux 中用 删除文件和目录 的命令。它是一个非常强大的命令,使用时需要小心,因为一旦删除,文件通常不能恢复。
基本语法:
rm [选项] 文件/目录删除单个文件:
代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ Practice]# rm test.cpprm: remove regular empty file ‘test.cpp’? y
删除多个文件:
代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ Lesson1]# rm log.txt test test.crm: remove regular empty file ‘log.txt’? yrm: remove regular file ‘test’? yrm: remove regular file ‘test.c’? y
递归删除目录及其内容: (-r 或 -R)
如果需要删除目录及其内部内容,可以使用 -r(递归)选项:代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# cd ..[root@iZbp1dkpw5hx2lyh7vjopaZ Winter]# rm -r day1rm: descend into directory ‘day1’? yrm: remove directory ‘day1/Lesson1’? yrm: remove directory ‘day1/Lesson3’? yrm: remove directory ‘day1/Lesson2’? yrm: remove directory ‘day1’? y
强制删除文件或目录 (-f) :
使用 -f 选项可以强制删除文件或目录,不会提示确认,且即使文件不存在也不会报错递归并强制删除 (-rf 或 -fr) :
使用 -rf 选项可以递归并强制删除目录及其中的所有内容:代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ Lesson]# rm -rf Practice
删除空目录 (-d) :
使用 -d 选项可以删除空目录:只会删除空的目录,如果目录内有文件或其他目录,会提示错误代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ Practice]# rm -d Winterrm: remove directory ‘Winter’? y
注意:
rm 命令是 不可恢复的操作。一旦删除文件或目录,它们不会放入回收站,也无法通过普通方法恢复。在使用 rm -rf 时要非常小心,因为它会删除目录及其所有内容,没有任何确认步骤。8、cp指令cp 命令是 Linux系统中用于复制文件和目录 的命令。它是非常基础且常用的文件管理命令之一,用于复制文件或目录到指定的位置。
基本语法:
cp [选项] 源文件 目标文件 源文件/目录:要复制的文件或目录。 目标文件/目录:复制到的位置。复制单个文件:
代码语言:javascript代码运行次数:0运行复制cp test.cpp dst
复制多个文件到指定目录:
代码语言:javascript代码运行次数:0运行复制cp test1.cpp test2.cpp test3.cpp dst
递归复制目录 (-r ) : 使用 -r(递归)选项,可以复制目录及其内容(包括子目录和文件):
代码语言:javascript代码运行次数:0运行复制cp -r src dst
交互式复制 (-i) :
使用 -i 选项,当目标文件已存在时,cp 会询问是否覆盖文件,避免不小心覆盖重要文件:代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ Lesson]# cp -i test1.cpp test2.cppcp: overwrite ‘test2.cpp’? y
强制复制 (-f) :
使用 -f 选项可以强制覆盖目标文件,不会询问确认:代码语言:javascript代码运行次数:0运行复制cp -f src dst
保留文件属性 (-p) :
使用 -p 选项复制文件时,会保留文件的原有属性,如修改时间、访问时间、权限等:代码语言:javascript代码运行次数:0运行复制cp -p src dst
显示复制过程 (-v):
使用 -v(verbose)选项,cp 会显示详细的复制过程,显示正在复制的文件名:代码语言:javascript代码运行次数:0运行复制[root@iZbp1dkpw5hx2lyh7vjopaZ Lesson]# cp -v test1.cpp test2.cppcp: overwrite ‘test2.cpp’? y‘test1.cpp’ -> ‘test2.cpp’
mv(move)命令是 Linux 系统中用于 移动文件或目录 的命令,也可以用于 重命名文件或目录。
基本语法:
代码语言:javascript代码运行次数:0运行复制mv [选项] 源文件/目录 目标文件/目录
移动文件到指定目录:
代码语言:javascript代码运行次数:0运行复制mv srcfile /path/to/destination/
重命名文件:
代码语言:javascript代码运行次数:0运行复制mv old_file_name new_file_name
移动多个文件到指定目录:
代码语言:javascript代码运行次数:0运行复制mv srcfile1 srcfile2 srcfile3 /path/to/destination/
这会将多个文件(如srcfile1 srcfile2 和 srcfile3 )移动到指定目录。
递归移动目录 (-r 选项) :
mv 命令本身可以移动目录,但在某些情况下,你可能需要递归操作,尤其是在移动子目录时。虽然 mv 默认支持递归,但如果需要,你可以加上 -r选项代码语言:javascript代码运行次数:0运行复制mv -r src_directory /path/to/destination/
交互式移动 (-i 选项) :
使用 -i 选项可以在目标文件已存在时,提示用户确认是否覆盖文件。防止意外覆盖重要文件:代码语言:javascript代码运行次数:0运行复制mv -i file1.txt file2.txt
强制移动 (-f 选项):
使用 -f 选项可以强制移动文件或目录,即使目标位置已有同名文件也不会提示确认,直接覆盖代码语言:javascript代码运行次数:0运行复制mv -f file1.txt file2.txt
命令
描述
常见选项
ls
列出当前目录下的文件和目录
-l: 详细列表-a: 显示所有文件(包括隐藏文件)
pwd
显示当前工作目录
无选项
cd
改变当前工作目录
无选项
touch
创建一个空文件或更新文件的时间戳
-t: 按时间排序-p: 保留文件属性-i: 交互模式
mkdir
创建一个新的目录
-p: 创建父级目录-v: 显示详细过程
tree
以树形结构显示目录内容
-L: 设置最大层级显示-a: 显示隐藏文件-v: 显示详细过程
rm
删除文件或目录
-r: 递归删除-f: 强制删除-i: 交互模式
cp
复制文件或目录
-r: 递归复制-i: 交互模式-v: 显示详细过程-f: 强制覆盖
mv
移动或重命名文件或目录
-i: 交互模式-f: 强制移动-v: 显示详细过程
写在最后以上就是【Linux 常用指令 文件和目录操作篇 】—— 成为终端高手的必经之路的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号