设为首页 加入收藏

TOP

初识 Linux Shell(三)
2023-07-23 13:43:32 】 浏览:67
Tags:初识 Linux Shell
e test_one

如果只使用 ls -l 命令,并不会显示访问时间。这是因为默认显示的是修改时间。要想查看文件的访问时间,需要加入另外一个参数:--time=atime。有了这个参数,就能够显示出已经更改过的文件的访问时间。

cp 复制文件

复制文件的格式为:

$ cp source destination

当 source 和 destination 参数都是文件名时,cp 命令将源文件复制成一个新文件,并且以 destination 命名。新文件就像全新的文件一样,有新的修改时间。

如果目标文件已经存在,cp 命令并不会提醒这一点。最好是加上-i选项,强制 shell 询问是否需要覆盖已有文件。

也可以将文件复制到现有目录中。

$ cp -i test_one /home/christine/Documents/

新文件就出现在目录 Documents 中了,和源文件同名。

上面的例子在目标目录名尾部加上了一个正斜线(/),这表明 Documents 是目录而非文件。这有助于明确目的,而且在复制单个文件时非常重要。如果没有使用正斜线,子目录/home/christine/Documents 又不存在,就会有麻烦。在这种情况下,试图将一个文件复制到 Documents 子目录反而会创建一个名为 Documents 的文件,连错误消息都不会显示!

上一个例子采用了绝对路径,不过也可以使用相对路径。

本章在前面介绍了特殊符号可以用在相对文件路径中。其中的单点符(.)就很适合用于 cp 命令。记住,单点符表示当前工作目录。如果需要将一个带有很长的源对象名的文件复制到当前工作目录中时,单点符能够简化该任务。如果你的源对象名很长,使用单点符要比输入完整的目标对象名省事得多。

$ cp -i /etc/NetworkManager/NetworkManager.conf .

cp 命令的 -R 参数威力强大。可以用它在一条命令中递归地复制整个目录的内容:

$ ls -Fd *Scripts #-d选项只列出目录本身的信息,不列出其中的内容。一般可与 l 选项搭配显示目录自身详情
$ cp -R Scripts/  Mod_Scripts

在执行 cp -R 命令之前,目录 Mod_Scripts 并不存在。它是随着 cp -R 命令被创建的,整个 Scripts 目录中的内容都被复制到其中。注意,在新的 Mod_Scripts 目录中,所有的文件都有对应的新日期。Mod_Scripts 目录现在已经成为了 Scripts 目录的完整副本。

也可以在 cp 命令中使用通配符:

$ cp *script  Mod_Scripts/

该命令将所有以 script 结尾的文件复制到 Mod_Scripts 目录中。

[Tab]键 自动补全

如果你需要操作的文件/文件夹的名字很长,这正是制表键(Tab 键)自动补全挺身而出的时候。制表键自动补全允许你在输入文件名或目录名时按一下制表键,让 shell 帮忙将内容补充完整。

$ cp really_ridiculously_long_file_name  Mod_Scripts/

在上面的例子中,我们输入了命令 cp really,然后按制表键,shell 就将剩下的文件名自动补充完整了。

使用制表键自动补全的的技巧在于要给 shell 足够的文件名信息,使其能够将需要文件同其他文件区分开。假如有另一个文件名也是以 really 开头,那么就算按了制表键,也无法完成文件名的自动补全。如果你的电脑有蜂鸣器,这时候你会听到蜂鸣器嘟的一声。要是再连按一下制表键,shell 就会列出所有以 really 开头的文件名。这个特性可以让你观察究竟应该输入哪些内容才能完成自动补全。

以上是对文件/文件夹的自动补全处理。如果希望对于 linux 命令也可以使用自动补全,在 Archlinux 上则需要额外安装包bash-completion

mv 移动/重命名文件

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

$ mv fall  fzll #重命名
$ mv fzll  Pictures/   #把文件fzll从/home/testuser移动到了/home/testuser/Pirctures

注意,mv 将文件名从 fall 更改为 fzll,但 inode 编号和时间戳保持不变。这是因为 mv 只影响文件名。
和 cp 命令类似,也可以在 mv 命令中使用-i参数。这样在命令试图覆盖已有的文件时,你就会得到提示。

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

$ mv /home/testuser/Pictures/fzll  /home/testuser/fall

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

$ mv Mod_Scripts  Old_Scripts

rm 删除文件

bash shell 中删除文件的命令是 rm。rm 命令的基本格式非常简单。

$ rm -i fall

注意,-i 命令参数提示你是不是要真的删除该文件。bash shell 中没有回收站或垃圾箱,文件一旦删除,就无法再找回。因此,在使用 rm 命令时,要养成总是加入-i 参数的好习惯。也可以使用通配符删除成组的文件。别忘了使用-i 选项保护好自己的文件。

$ rm -i f?ll
rm: remove regular empty file 'fell'? y
rm: remove regular empty file 'fill'? y
rm: remove regular empty file 'full'? y

rm 命令的另外一个特性是,如果要删除很多文件且不受提示符的打扰,可以用-f 参数强制删除。小心为妙!

ln 链接文件

链接文件是 Linux 文件系统的一个优势。如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为“链接”。链接是目录中指向文件真实位置的占位符。在 Linux 中有两种不同类型的文件链接:

  • 符号链接(symbolic link)
  • 硬链接(hard link)

“符号链接”就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接在一起的文件,彼此的内容并不相同。

要为一个文件创建符号链接,原始文件必须事先存在。然后可以使用 ln 命令以及-s选项来创建符号链接:

$ ln -s data_file  sl_data_file
-rw-rw-r-- 1 christine christine 1092 May 21 17:27 data_file
lrwxrwxrwx 1 christine christine    9 May 21 17:29 sl_data_file -> data_file

在上面的例子中,注意符号链接的名字 sl_data_file 位于 ln 命令中的第二个参数位置上。显示在长列表中符号文件名后的->符号表明该文件是链接到文件 data_file 上的一个符号链接。

另外,还要注意的是符号链接的文件大小与数据文件的文件大小。符号链接 sl_data_file 只有 9 个字节,而 data_file 有 1092 个字节。这是因为 sl_data_file 仅仅只是指向 data_file 而已。它们的内容并不相同,是两个完全不同的文件。

另一种证明链接文件是独立文件的方法是查看 inode 编号。文件或

首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇linux环境编程(2): 使用pipe完成.. 下一篇Nginx配置将二级域名解析到Linux..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目