目录处理在日常工作中是比较常见的,今天就向大家介绍几个常用的跟目录处理有关的命令。

一、创建目录:mkdir

mkdir 是 make directories 的缩写,该命令最简单的用法就是,直接在 mkdir 后面跟一个你想要创建的目录所在路径加目录名。

mkdir /tmp/movie #在tmp目录下创建一个名为movie的目录,其中 /tmp/ 是路径,movie 是你自己起的目录名

递归创建目录
假设我想在 tmp 目录下创建一个名为 book 的目录,然后再在 book 目录下创建一个名为 programming 的目录,怎么办呢?如果直接输入 mkdir /tmp/book/programming 是会报错的,因为此时 tmp 目录下不存在名为 book 的命令,而我还想在 book 目录下创建 programming 这个目录,显然是不行的。

有的读者可能会说,那我们可以这样:

mkdir /tmp/book #先在tmp目录下创建一个book目录
mkdir /tmp/book/programming #然后再在book目录下创建一个programming目录

这样是可以的,但是这只是创建一个二级目录,如果我想创建一个十级的目录,那要写 10 行命令才能创建完,未免有点太麻烦了。

不过我们不用担心, mkdir 命令为我们提供了一个选项 -p,通过这个选项,就可以一次创建多级目录。使用方式如下:

mkdir -p /tmp/book/programming #即使book目录原本不存在,也可以创建成功

一次创建多个目录
在mkdir 命令后面跟多个目录可以一次创建多个目录,比如:

mkdir /tmp/image /tmp/music #在tmp目录下同时创建image和music两个子目录

通过这种方式,就算我们想一次创建二十个、三十个目录也是可以的,这也是命令行的魅力所在。试想一下,如果在图形用户界面下创建三十个目录,是不是能把人给逼疯了?😂

二、切换目录:cd

cd 命令是 change directory 的缩写,cd 命令最简单的用法就是,在该命令后面加上你想切换到的目录的路径。比如:

cd /tmp/movie #切换到temp目录下面的movie目录
cd .. #切换到当前目录的上一级目录

在这里插入图片描述

如上图所示,在切换到 /tmp/movie 目录下之后,红框中显示的就是当前所在目录的名称。可是如果我想知道当前目录的完整路径怎么办呢?这就要用到下面这个命令:pwd。

三、显示当前目录完整路径:pwd

pwd 命令是 print working directory 的缩写。在命令行中输入 pwd,即可输出当前目录的完整路径。

四、删除目录

删除空目录:rmdir
rmdir 命令是 remove empty directories 的缩写。rmdir 的用法也是直接在后面加上你想删除的目录。比如:

rmdir /tmp/image #删除tmp目录下的image目录

正如标题所说的,rmdir 只能删除空目录。当你尝试用 rmdir 删除一个非空的目录时,系统就会报错。

8f714706f5b0df3ab01ec127d1dfc592.png

五、复制:cp

cp 命令是 copy 的缩写,cp 不仅可以复制目录,也可以复制文件。cp 命令最基本的语法就是:cp [原文件] [目标目录],比如:

cp /root/install.log /tmp #把root目录下的install.log文件复制到tmp目录下

如果想复制整个目录,需要加一个选项:-r。比如:

cp -r /tmp/movie /root #把tmp目录下的movie目录复制到root目录下

也可以同时复制多个目录或文件,比如:

cp -r /tmp/book /tmp/image /root #把tmp目录下的book目录和image目录同时复制到root目录下

保留文件属性
前面我们用 cp 命令把 root 目录下的 install.log 文件复制到了 tmp 目录下,现在我们来分别看一下这两个文件的属性:

6feff49622daf4bd5df1ebd8dd6bc91b.png

可以看到,两个文件的创建时间不一样,后者的创建时间是它被复制到这个目录的时间。那么如果我想在复制文件的同时,不改变它的属性,有什么办法吗?当然有,就是在复制的时候加一个 -p 选项。

cp -p /root/install.log /tmp

在这里插入图片描述

复制的同时为文件重命名

#把root目录下的install.log文件复制到tmp目录下,并重命名为install123.log
cp /root/install.log /tmp/install123.log
 
#把tmp目录下的image目录复制到root目录下,并重命名为picture
#PS:如果root目录下已经存在picture目录,那么就会把image目录复制到picture目录下
cp -r /tmp/image /root/picture

六、移动或重命名:mv

mv 命令是move 的缩写,上面介绍的 cp 命令的用法,mv 命令也同样适用,只不过 cp 是复制文件或目录,mv 命令是移动。如果你把当前目录下的一个文件或目录移动到当前目录,同时改名,那么就相当于给这个目录或文件重命名了。

七、删除文件或目录:rm

rm 命令是 remove 的缩写,如果直接使用 rm 命令,那么只能删除文件,比如:

rm /tmp/abc.txt #删除tmp目录下的abc.txt文件

如果想要删除目录,需要加一个 -r 选项。比如:

rm -r /tmp/movie #删除tmp目录下的movie目录

如果 movie 目录下有子目录,子目录下又有子目录,那么我在删除 movie 目录时,系统会一个一个子目录提示我是否要删除,如果有几百个子目录,那么我要确认几百次,这无疑是很麻烦的。如果你想删除有子目录的目录,又不想系统挨个提示你是否要删除,那么可以加上 -f 选项,f 就是 force 的意思,强制删除。

接下来向大家介绍一个 Linux 中的核弹级命令,可以直接把整个系统干掉:

rm -rf / #删除根目录(建议不要轻易尝试!!!否则后果自负)

以上就是 Linux 中一些常用的跟目录处理有关的命令,在此分享给大家!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐