shell 的一些常用的指令(二)
shell的一些常用指令(二)
四、操作文件系统
所用的指令概括:
cp — 复制文件和目录
mv — 移动/重命名文件和目录
mkdir — 创建目录
rm — 删除文件和目录
ln — 创建硬链接和符号链接
1 . cp - 复制文件
-
cp <filename>
- 例如复制 1.txt文件,
cp 1.txt
- 复制 一个目录下的所有html的文件,用通配符* ,
cp -u *.html destination
2 . mv - 移动和重命名文件
任何一种 情况下,完成操作之后,原来的文件名不再存在。mv 使用方法与 cp 很相像
mv item1 item2
将item1重命名为item2,或者将tem1中的文件移动到item2 ,如果没有item2,就是创建一个,item1将会不存在
3 . rm - 删除文件和目录
小贴士。 当你使用带有通配符的rm命令时(除了仔细检查输入的内容外), 先用 ls 命令来测试通配符。这会让你看到将要被删除的文件是什么。然后按下上箭头按键,重新调用 刚刚执行的命令,用 rm 替换 ls。rm 要谨慎使用,一旦删除就不能复原。
rm itemName
4 . ln - 创建链接
- 创建硬链接
其中fun 是我们的数据原文件,fun-hard是我们的数据文件的硬链接名称
如何证明fun 和 fun-hard是同一个文件 ?
ls 命令有一种方法,来展示(文件索引节点)的信息。在命令中加上”-i”选项:
在这个版本的列表中,第一字段表示文件索引节点号,正如我们所见到的, fun 和 fun-hard 共享一样的索引节点号,这就证实这两个文件是同一个文件。
- 创建符号链接
建立符号链接的目的是为了克服硬链接的两个缺点:硬链接不能跨越物理设备, 硬链接不能关联目录,只能是文件。符号链接是文件的特殊类型,它包含一个指向 目标文件或目录的文本指针。
第一个例子相当直接,在 ln 命令中,简单地加上”-s”选项就可以创建一个符号链接, 而不是一个硬链接。下面两个例子又是怎样呢? 记住,当我们创建一个符号链接 的时候,会建立一个目标文件在哪里和符号链接有关联的文本描述。如果我们看看 ls 命令的输出结果,比较容易理解。
上一个的 fun-link 是 fun 的硬连接。
目录 dir1 中,fun-sym 的列表说明了它是一个符号链接,通过在第一字段中的首字符”l” 可知,并且它还指向”../fun”,也是正确的。相对于 fun-sym 的存储位置,fun 在它的 上一个目录。同时注意,符号链接文件的长度是6,这是字符串”../fun”所包含的字符数, 而不是符号链接所指向的文件长度。
当建立符号链接时,你既可以使用绝对路径名:
也可用相对路径名,正如前面例题所展示的。使用相对路径名更令人满意, 因为它允许一个包含符号链接的目录重命名或移动,而不会破坏链接。
图片中的那个3,是fun 的链接数
五、使用命令
1 . type - 显示命令的类型
- 例如显示
cp
命令的类型, 输入$ type cp
2 . help -帮助文档
- help - 得到 shell 内建命令的帮助文档,例如
help cd
显示cd 的用法和可带的参数, | 表示这两个选项并列,只能选一个 ,例如cd -L
, cd -P
- help - 显示用法信息
许多可执行程序支持一个 –help 选项,这个选项是显示命令所支持的语法和选项说明。例如:
mkdir --help
3 . man - 显示程序手册页
许多希望被命令行使用的可执行程序,提供了一个正式的文档,叫做手册或手册页(man page)。一个特殊的叫做 man 的分页程序,可用来浏览他们。它是这样使用的
man ls
:
man <要浏览的命令名>
4 . apropos - 显示适当的命令
也有可能搜索参考手册列表,基于某个关键字的匹配项。虽然很粗糙但有时很有用。 下面是一个以”floppy”为关键词来搜索参考手册的例子: apropos floppy
输出结果每行的第一个字段是手册页的名字,第二个字段展示章节。注意,man 命令加上”-k”选项, 和 apropos 完成一样的功能。
5 . 用别名(alias)创建你自己的命令
创建别名的时候,首先要看你创建的别名。是否在系统中已经存在了,加入测试test是否存在
使用type test
结果:
小技巧:可以把多个命令放在同一行上,命令之间 用”;”分开。
foo还没有被占用,我们将 cd /usr; ls ;cd -;
这三条指令命名为foo
alias foo='cd /usr; ls; cd -;'
然后执行foo
, 结果和执行上面三条语句一样
我们也可以使用 type 命令来查看我们的别名:
删除别名,使用 unalias 命令,像这样:
unalias foo
注意 : 在命令行中定义别名有点儿小问题。当你的 shell 会话结束时,它们会消失。
上一篇: Shell 编程入门