如何通过别名在命令行中节省击键次数

通过为您经常使用的命令设置别名来节省一些麻烦。
486 位读者喜欢这篇文章。
An introduction to GNU Screen

Opensource.com

alias 命令行工具既有用又相对简单。它的目的是通过为单行命令创建自定义名称来简化它。很有可能您已经有一些别名,即使您从未使用过该工具。在 Bash 中,可以使用简单的文本编辑器创建别名,并存储在您的 $HOME/.bashrc 文件中。如果您想查看已设置的别名,请查看该文件,或者只需在命令行中键入 alias 并按 Enter/Return

以下是一些简单的别名,其中几个在我安装 Fedora 时已在文件中

alias cp='cp -v'
alias rm='rm -v'
alias mv='mv -v'
alias ls='ls --color'
alias ll='ls -l --color'
alias lh='ll -h'

上面的前三个别名确保每当我使用 cprmmv 时,我都会得到详细的输出。其他的稍微修改了 ls 命令的输出。

所有六个别名还向您展示了如何编写别名:首先是 alias 命令,后跟您给别名的名称,然后是等号,最后是用单引号括起来的完整命令。您可以使用现有的别名名称或创建唯一的名称。

这些显然很简单,但让我们看看我设置的一些更复杂的别名。

打开 Emacs 文件

alias emacs='emacs %f --no-splash --maximize -fg "white" -bg "dark slate gray" -cr "yellow"'

我经常使用 Emacs,上面的命令确保其大小和外观是我喜欢的方式。请注意 %f,它是我在 emacs 命令后键入的文件名的占位符。如果我想在 Emacs 中创建一个新文件,我只需键入一个不存在的文件名即可。

使用温度转换脚本

alias temp='/home/gregp/perl/tempconv.pl'

这是我创建的别名,用于使用我去年撰写的温度转换 Perl 脚本。它没有显示,但您必须在 temp 之后跟一个数字才能使脚本工作。

跟踪人员

alias census2file='pg_dump -vt census gregp > census.out'

alias fromfile='psql -e gregp < census.out'

当我还是一名执业医生时,我过去常常使用 PostgreSQL 跟踪我的医院病人名单和个人就诊情况,以便我可以随意切片和分析信息。我同时使用了笔记本电脑和台式机,为了在两个系统上保持最新状态,我创建了上面两个别名。

使用第一个别名,我可以转储一个系统中的表 "census" 的内容,然后使用第二个别名在另一个系统上使用 psql 导入它。每当我将 Fedora 升级到较新版本时,我也使用这些别名。

一起运行多个命令

有时您可能希望使用别名来运行多个命令。您可以使用别名工具来完成此操作,就像您在命令行上一样。

例如,我下载并编译了一个命令行工具 weather,它工作得很好,尽管我花了一段时间才找到我想要的天气站的精确名称,而且它也只能在其目录内工作。

alias weather='cd /home/gregp/Downloads/weather-2.3;./weather "Louisville East CCD";cd /home/gregp'

在上面的示例中,三个命令用分号分隔(就像它们在命令行上一样)。别名将我带到正确的目录,运行 weather 命令,然后返回到 /home

alias forecast='cd /home/gregp/Downloads/weather-2.3;./weather -f -n "Louisville East CCD";cd /home/gregp'

获取预报需要设置一些开关,而这个 forecast 别名使我不必反复查找它们。

更新软件

最后,这是我迄今为止创建的最复杂的别名。

alias cmake15x='cmake . -DCMAKE_INSTALL_PREFIX:PATH=/home/gregp/scribus15x -DWANT_DEBUG=1 -DWANT_HUNSPELL=1 -DWANT_GRAPHICSMAGICK=1'

我编写这个别名是因为我一直在更新 Scribus 的最新版本并进行编译。记住 svn up 从存储库更新 Scribus 很容易,但是然后我必须使用许多设置运行 cmake。使用这个脚本,我只需键入 cmake15x,这比试图记住所有步骤容易得多。

alias 命令行工具为我节省了大量时间和击键次数,特别是对于经常使用或复杂的命令。但是,我建议保留一些关于如何使用更复杂命令的笔记,尤其是在需要不仅仅是命令的情况下。

标签
Greg Pittman
Greg 是肯塔基州路易斯维尔的一位退休神经科医生,长期以来对计算机和编程感兴趣,从 1960 年代的 Fortran IV 开始。当 Linux 和开源软件出现时,它激发了学习更多知识并最终做出贡献的承诺。他是 Scribus 团队的成员。

9 条评论

很棒的文章。可能值得一提的是,别名会覆盖 PATH 中的内容。因此,如果我将 foo 别名为 'bar',那么位于 /usr/bin/foo 的命令将不会运行。要规避别名并运行实际命令,可以使用 \ 字符;因此 '\foo' 会忽略别名并运行在 PATH 中找到的任何 foo。或者,可以直接键入 foo 的完整路径。

感谢这篇文章。我有一种非理性的恐惧,如果我“别名”我的任何常用命令,我将完全忘记它们,并且无法在其他机器上做任何有用的事情,因为我将完全忘记除了别名之外的任何东西。可能不理性。有人有这方面的故事吗?

我对任何一段时间没用过的命令都有这个问题,而不是特定于别名。有时运行 alias 并显示您的所有别名将是一个迷你复习课程,并触发关于您需要什么的记忆,即使它不是别名版本的一部分。然后总是有 man 页面。

回复 ,作者 K_REY_C

您的 weather 示例可以通过使用 pushd/popd 而不是 cd 来改进。

目前,无论您开始时的工作目录是什么,您最终都会进入 /home/grep。

将 “cd /home/gregp/Downloads/weather-2.3” 替换为

“pushd /home/gregp/Downloads/weather-2.3”

并将最后的 “cd /home/gregp” 替换为

“popd”

信息非常棒,但我似乎找不到 Fedora 25 系统中默认已存在的 14 个别名的定义。它们不在 ~/.bashrc 或 /etc/bashrc 中

检查您的 .bash_profile 文件。如果您仍然卡住,请查看这些文件中的每一个,看看它们是否正在调用其他文件——实际上是 .bash_profile 调用 .bashrc。听起来设置这些文件的人是故意隐藏它们的。

回复 ,作者 dnovak

我曾想过添加 'tar' 和 'untar' 作为两个别名。但从未付诸行动。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© 2025 open-source.net.cn. All rights reserved.