每个用户都必须知道的基本 Bash 技巧和窍门

每个用户都必须知道的基本 Bash 技巧和窍门

作为 Linux 新手,启动终端的体验可能既令人兴奋又令人不知所措。终端提供了丰富的命令和功能,但闪烁的光标可能会让初学者望而生畏。为了帮助用户轻松过渡,我们整理了一系列 Bash 实用技巧和窍门,帮助用户更高效地使用终端。

理解 Bash 与终端

有必要明确 Bash 和终端之间的区别。终端是您通过其发出命令与操作系统交互的界面或应用程序。而 Bash 是一个 Shell(UNIX 系统的命令语言解释器),它负责处理并执行您输入的命令。因此,当您使用终端时,您实际上是在使用 Bash Shell(也可能是其他 Shell,例如 zsh 或 fish)。接下来的技巧和窍门主要侧重于优化您在 Bash 环境中的效率。

1.使用常用命令的自定义别名

重复输入冗长的命令会非常繁琐。使用别名可以显著简化您的工作流程。别名允许您为较长的命令分配一个易于记忆的快捷键,从而减少所需的输入量。

例如,git status您可以创建一个类似 的别名,而不是直接输入gs。别名可以是会话的临时别名,也可以是永久别名。要创建临时别名,请执行:

alias gs="git status"

现在,输入gs将会执行git status。对于永久别名,请使用您喜欢的文本编辑器(例如 nano)编辑 Bash 配置文件(通常位于“~/.bashrc”或“~/.bash_profile”):

sudo nano ~/.bashrc

在文件末尾添加别名定义,保存,然后重新启动终端或运行:

sudo source ~/.bashrc

从现在开始,这些别名将适用于每个会话。例如,我使用以下命令进行更新命令:

alias update='sudo apt update && sudo apt upgrade -y'

这样,只需输入update,即可执行整个命令。此外,使用函数,您可以创建接受参数的别名:

mkcd() {mkdir -p "$1" && cd "$1"}

该命令mkcd projects/new-app将创建指定的目录并导航到该目录。请务必确保不要覆盖现有命令,以免造成混淆。

2.立即搜索您的命令历史记录

滚动浏览终端历史记录可能很繁琐。幸运的是,Bash 提供了一个快速搜索工具,可以更轻松地重新查看之前的命令。

搜索命令历史记录

只需按下Ctrl+ R,你的提示符就会切换到允许你输入所需命令的部分内容。输入过程中,Bash 会显示历史记录中最新匹配的命令。

您还可以通过将以下代码片段添加到“~/.inputrc”文件来增强此功能(如果不存在则创建它):

"\e[A": history-search-backward"\e[B": history-search-forwardset show-all-if-ambiguous onset completion-ignore-case on

重新加载终端后,您将能够通过键入命令的开头,然后使用Up/Down箭头键来搜索命令历史记录。

3.使用管道和重定向的链式命令

Bash 允许您链接多个命令,以便将一个命令的输出用作另一个命令的输入。您可以使用管道运算符 ( |) 来实现此目的。例如,如果您只想查看正在运行的任务中的 Python 进程,则可以按如下方式组合命令:

ps aux | grep python

链接命令以过滤进程

这里ps aux列出了所有活动进程,并grep筛选显示与 Python 关联的进程。您还可以连接其他命令来形成高效的脚本。例如:

cat logfile.txt | grep "error" | wc -l

此命令计算日志文件中标记为错误的行数 – 三个命令协同工作。

重定向是另一个关键功能。您可以将命令输出保存到文件中,而不是打印到终端。例如,要保存目录列表,您可以使用:

ls -l > files.txt

用于>>附加输出而不是覆盖。此功能对于日志记录和备份数据特别有用。

4.在后台运行命令

如果您启动了一个占用了终端的长命令,则无需启动新的会话。只需将该命令推送到后台并继续使用终端即可。

Ctrl+Z暂停正在运行的命令并返回到 shell 提示符。然后,使用:

bg

这将在后台恢复命令。要查看作业状态,只需输入:

jobs

要将后台作业重新带回前台,请使用:

fg %1

您可以指定作业编号;否则,fg默认为最近的任务。如果您希望命令在后台启动,请&在命令后附加:

some_long_task &

这样,命令就可以在不占用终端的情况下启动。为了防止作业在终端关闭时终止,请使用:

disown -h %job

此命令在退出 shell 时向该作业发送“不挂断”信号。nohup在开始时使用 可以实现类似的效果,但请注意,后台作业可能仍会输出到终端。

5.使用 `sudo` 重新运行最后一个命令(sudo!!)

这个技巧解决了一个常见的场景:执行一个需要超级用户权限的命令。该!!命令会提取上一个命令,以便您能够以提升的权限快速重新运行该命令。

例如,在尝试执行安装脚本(如./SCRIPT-NAME.sh并收到权限错误)后,只需输入:

sudo! !

输入您的密码,然后您就可以重新开始操作了——这个小命令可以为您节省大量时间,并且随着您习惯使用它,它就会成为您的第二天性。

Bash 技巧和窍门 重新运行命令

6.一次执行多个命令

为了加快任务执行速度,Bash 支持连续执行多个命令。要按顺序运行命令(无论结果如何),请使用分号 ( ;):

mkdir newdir; cd newdir; touch file.txt

如果您希望仅在第一个命令成功后才执行第二个命令,请使用双与符号 ( &&):

sudo apt update && sudo apt upgrade

相反,如果您希望仅在前一个命令失败时运行命令,请使用双竖线 ( ||):

backup_database || echo "Backup failed!"

Bash 也允许后台处理;只需附加一个 & 符号即可在后台运行命令,同时释放终端:

python script.py & firefox &

这将在启动 Firefox 的同时执行你的 Python 脚本。通过练习,串联命令和管理后台任务将使你与终端的交互体验更加流畅。

7.使用 Apropos 发现命令

apropos命令是根据手动输入描述查找命令的绝佳工具。如果您使用过手册页,您会认出顶部的元数据。通过执行命令apropos并加上关键字,您可以查看所有相关的命令行工具。

Bash 技巧和窍门

例如,输入apropos icmp即可检索与该主题相关的命令列表。此功能对于发现以前不熟悉的实用程序(例如用于的实用程序)特别有用selinux;只需运行apropos selinux即可查看可用于管理 SELinux 策略的命令。

8.替换最后一条命令中的元素

纠正上一条命令错误的一个有效策略是使用替换。如果您不小心输入了错误的命令,可以使用插入^符号 ( ) 快速修改。

例如,如果您想要 pingmaketecheasier.com但将其拼写错误为maktecheaser.com,您可以执行:

^maktecheaser.com^maketecheasier.com

此命令可以高效地使用正确的地址重新运行您的 ping 请求。这种方法尤其适用于较长的命令或复杂的参数。您可以考虑用它来纠正输出重定向的错误,例如用>替换>>

9.传递前一个命令的参数

!$语法允许您重复使用任何先前命令的最后一个参数。此外,变体使您可以轻松地合并特定参数。

例如,如果您刚刚使用编辑了一个文件nano samplescript.sh并希望授予它可执行权限,只需运行:

chmod 755! $

您还可以使用./!:2来引用上一个命令的第二个参数。以下是替换选项的简要概述:

!^ - first argument!* - all arguments!:2-$ - second through last arguments!:2-4 - second through fourth arguments

由于 Bash 保存了大约 100 个参数的历史记录,此功能可以显著提高您在终端使用时的效率。

希望这些 Bash 技巧和窍门能够对您有所帮助,并帮助您更有效地在终端中执行命令。祝您编写 Bash 脚本愉快!

来源和图片

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注