Linux 命令行与 shell 脚本编程大全 (3rd ed)(32):基本的 bash shell 命令 3.6.5

阅读数:11 2019 年 11 月 17 日 15:21

Linux命令行与shell脚本编程大全(3rd ed)(32):基本的bash shell命令 3.6.5

内容简介
这是一本关于 Linux 命令行与 shell 脚本编程的全方位教程,主要包括四大部分:Linux 命令行,shell 脚本编程基础,高级 shell 脚本编程,如何创建实用的 shell 脚本。本书针对 Linux 系统的新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你将轻松写出自己的 shell 脚本。

(重命名文件)

在 Linux 中,重命名文件称为移动(moving)。mv命令可以将文件和目录移动到另一个位置或重新命名。

复制代码
$ ls -li f?ll
296730 -rw-rw-r-- 1 christine christine 0 May 21 13:44 fall
296717 -rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
294561 -rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
296742 -rw-rw-r-- 1 christine christine 0 May 21 13:44 full
$
$ mv fall fzll
$
$ ls -li f?ll
296717 -rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
294561 -rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
296742 -rw-rw-r-- 1 christine christine 0 May 21 13:44 full
296730 -rw-rw-r-- 1 christine christine 0 May 21 13:44 fzll
$

注意,移动文件会将文件名从 fall 更改为 fzll,但 inode 编号和时间戳保持不变。这是因为mv只影响文件名。

也可以使用mv来移动文件的位置。

复制代码
$ ls -li /home/christine/fzll
296730 -rw-rw-r-- 1 christine christine 0 May 21 13:44
/home/christine/fzll
$
$ ls -li /home/christine/Pictures/
total 0
$ mv fzll Pictures/
$
$ ls -li /home/christine/Pictures/
total 0
296730 -rw-rw-r-- 1 christine christine 0 May 21 13:44 fzll
$
$ ls -li /home/christine/fzll
ls: cannot access /home/christine/fzll: No such file or directory
$

在上例中,我们使用mv命令把文件 fzll 从 /home/christine 移动到了 /home/christine/Pirctures。和刚才一样,这个操作并没有改变文件的 inode 编号或时间戳。

窍门 和cp命令类似,也可以在mv命令中使用-i参数。这样在命令试图覆盖已有的文件时,你就会得到提示。

唯一变化的就是文件的位置。/home/christine 目录下不再有文件 fzll,因为它已经离开了原先的位置,这就是mv命令所做的事情。

也可以使用mv命令移动文件位置并修改文件名称,这些操作只需一步就能完成。

复制代码
$ ls -li Pictures/fzll
296730 -rw-rw-r-- 1 christine christine 0 May 21 13:44
Pictures/fzll
$
$ mv /home/christine/Pictures/fzll /home/christine/fall
$
$ ls -li /home/christine/fall
296730 -rw-rw-r-- 1 christine christine 0 May 21 13:44
/home/christine/fall
$
$ ls -li /home/christine/Pictures/fzll
ls: cannot access /home/christine/Pictures/fzll:
No such file or directory

在这个例子中,我们将文件 fzll 从子目录 Pictures 中移动到了主目录 /home/christine,并将名字改为 fall。文件的时间戳和 inode 编号都没有改变。改变的只有位置和名称。

也可以使用mv命令移动整个目录及其内容。

复制代码
$ ls -li Mod_Scripts
total 26
296886 -rwxrw-r-- 1 christine christine 929 May 21 16:16
file_mod.sh
296887 -rwxrw-r-- 1 christine christine 54 May 21 16:27
my_script
296885 -rwxrw-r-- 1 christine christine 254 May 21 16:16
SGID_search.sh
296884 -rwxrw-r-- 1 christine christine 243 May 21 16:16
SUID_search.sh
$
$ mv Mod_Scripts Old_Scripts
$
$ ls -li Mod_Scripts
ls: cannot access Mod_Scripts: No such file or directory
$
$ ls -li Old_Scripts
total 26
296886 -rwxrw-r-- 1 christine christine 929 May 21 16:16
file_mod.sh
296887 -rwxrw-r-- 1 christine christine 54 May 21 16:27
my_script
296885 -rwxrw-r-- 1 christine christine 254 May 21 16:16
SGID_search.sh
296884 -rwxrw-r-- 1 christine christine 243 May 21 16:16
SUID_search.sh
$

目录内容没有变化。只有目录名发生了改变。

在知道了如何使用mv命令进行重命名……不对……移动文件之后,你应该发现这其实非常容易的。另一个简单但可能有危险的任务是删除文件。

评论

发布