shell 技巧章节提供了一些实用技巧,当您使用 GNU/Linux shell(命令行界面)时,您可能会希望使用这些技巧。这些信息包括实用的快捷键组合、shell 的命令历史记录以及关于虚拟终端的信息。
如果您无法启动进入系统:如果您在启动进入系统时遇到问题,您可能希望使用 shell,以便您可以启动进入系统并尝试修复问题。
要做到这一点,您需要在启动之前将 “init=/bin/sh” 传递给您的系统。
如果您不知道如何做到这一点,请参阅第 14 章,该技术是相同的,只是这次您传递的是 “init=bin/sh” 而不是 “single”。
使用 TAB 键,bash 将尝试自动为您补全命令。 您可以使用它来补全命令(工具)名称。在处理文件系统、更改目录、复制文件等等时,您也可以使用它。
还有其他一些不太为人所知的自动命令补全的使用方法(例如,补全用户名):[1]
特殊字符
将以下特殊字符与 ESC-Y 或 CTRL-X-Y 结合使用,其中 Y 是某些特殊字符。例如 ESC-$ 或 CTRL-X-$ 来补全环境变量名称。
alias 命令将列出您当前的别名。 您可以使用 unalias 来移除别名(要禁用别名,只需在一个命令前添加一个 “\”(反斜杠))。。。
别名允许一个命令被替换为另一个命令。 这用于使一个命令执行其他操作,或自动添加某些选项。 这可以在一个会话期间使用 alias 命令完成(见下文),或者可以将信息添加到 .bashrc 文件(在用户主目录中找到)。
以下是一个别名部分(在您的 .bashrc 文件中)可能看起来像的示例
# my personal aliases alias cp='cp -vi' #to prompt when copying if you want to overwrite and will tell you where information is going alias rm='rm -i' #Prompts you if you really want to remove it. alias mv='mv -i' #Prompts you if you are going to overwrite something
在任何 Mandriva GNU/Linux 系统上,全局别名(对于所有用户)都位于 /etc/profile.d/alias.sh 中。 上面列出的命令已经有别名,以及其他几个常用的命令。
set 是 bash 的内置命令之一,请尝试在 bash 手册中查找其许多用法选项。
使用 set 和 -x 选项将使 bash 在运行每个命令之前,先打印出它将要运行的每个命令。
这对于找出某些命令正在发生什么很有用,例如,包含通配符或可能导致问题的特殊符号,或者复杂的别名被引用。 使用 set +x 可以关闭此功能。
示例
使用 set -x 后,您可以运行命令
ls
+ ls -F --color=auto
这意味着该命令实际上是一个别名,用于运行带有 -F 和 --color=auto 选项的 ls。 在命令前使用 “\”(反斜杠)可以运行它而无需别名。
反斜杠转义字符可以在 shell 命令之前使用,以覆盖任何别名。
例如,如果 rm 被设置为 rm -i 的别名,那么键入 “rm” 实际上会运行 rm -i。
但是,键入 \rm 会让 shell 忽略别名,而只运行 rm(它完全按照您键入的内容运行),这样它就不会在您想要删除东西时进行确认。
使用 rm |
请注意,删除命令的别名是有原因的。不正确地使用它可能会删除您不想删除的文件。 仅在您确切知道自己在做什么的情况下才使用 \rm(恢复文件不容易,rm 不会将东西发送到回收站)。 |
“\” 字符可以在特殊字符(例如空格或通配符)之前使用,以阻止 bash 尝试扩展它们。 您可以使用反斜杠在空格前创建一个目录名称中带有空格。 例如,您可以键入 cd My\ Directory\ With\ Spaces,这通常不起作用。
“script” 命令创建一个 typescript,或 shell 会话的 “捕获日志” - 它将您的会话副本写入到一个文件,包括您键入的命令及其输出。
例如,如果您的用户名是 “fred”,那么您可以简单地键入 cd ~ ,而不是键入 cd /home/fred。或者要进入 fred 的 tmp 目录(在他的主目录下),您可以键入 cd ~/tmp。
主目录快捷方式:~ (波浪号) 也可以用作其他用户主目录的快捷方式,只需键入:~user_name,它就会将您带到用户的主目录。请注意,您需要拼写正确的用户名,不能使用通配符。
这个特定的set 命令将关闭命令行中的系统铃声(对于 X windows,请使用 xset -b)。如果您希望铃声永久关闭(没有声音铃声),那么您可以将此命令添加到您的 “.bashrc” 或 “.bash_profile” 中(只需将其添加到您拥有别名的那个文件中...)。
reset 命令重新初始化您当前的终端。 当终端的文本变得乱码时,这很有用,只需键入 “reset”,这将修复您的终端。
示例
echo “hello world”
简单地显示 “ hello world”。
示例
echo rm -R *
这将输出将传递给 rm 命令的内容(以及因此将被删除的内容),在命令前放置 echo 会使其变得无害(它只是扩展通配符,以便您知道它将做什么)。
也可以尝试将 -e 选项与 echo 一起使用。 这将允许您使用转义字符序列来格式化行的输出。 例如,'\t' 用于制表符,'\n' 用于换行符等等。
使用 echo 预防意外:键入:echo command(s) 可以 避免您意外地做一些您不期望的事情。
使用 echo 允许您扩展通配符以了解在实际运行命令之前会发生什么。
[1] | 此信息改编自 Mandrakesoft 的命令行手册(经过编辑),有关更多信息,请参见参考书目中的 [7]。 |