命令别名:定义自己的命令
创始人
2024-03-02 01:29:14
0

学习如何创建别名:你可以将太长或难以记忆的命令打包成你自己构建的命令。

命令别名 Alias 在 Linux shell 中指的是将一些太长或者太难记的多个命令组合起来,成为一个由用户自己构建的命令。

可以通过 alias 命令来创建命令别名。在 alias 后面跟上想要创建的别名名称、一个等号(=),以及希望使用这个别名来执行的命令,这样一个命令别名就创建好了。举个例子,ls 命令在默认情况下是不会对输出的内容进行着色的,这样就不能让用户一眼分辨出目录、文件和连接了。对此,可以创建这样一个命令别名,在输出目录内容的时候为输出内容着色:

alias lc='ls --color=auto'

其中 lc 是自定义的命令别名,代表 “list with color” 的意思。在创建命令别名的时候,需要先确认使用的别名是不是已经有对应的命令了,如果有的话,原本的命令就会被覆盖掉了。注意,定义命令别名的时候,= 两端是没有空格的。当运行 lc 的时候,就相当于执行了 ls --color 命令。

此后,执行 lc 列出目录内容的时候,就会输出带有着色的内容了。

你可能会发现你在执行 ls 的时候,本来就是输出带有着色的内容。那是因为大部分 Linux 发行版都已经将 ls 设定为带有着色的命令别名了。

可以直接使用的命令别名

实际上,执行不带任何内容的 alias 命令就可以看到当前已经设定的所有命令别名。对于不同的发行版,包含的命令别名不尽相同,但普遍都会有以下这些命令别名:

  • alias ls='ls --color=auto':这个命令别名在前面已经提到过了。--color=auto 参数会让 ls 命令在通过标准输出在终端中显示内容时进行着色,而其它情况(例如通过管道输出到文件)下则不进行着色。--color 这个参数还可以设置为 alwaysnever
  • alias cp='cp -i'-i 参数代表“ 交互 interactive ”。在使用 cp 命令复制文件的时候,可能会无意中覆盖现有的文件,在使用了 -i 参数之后,cp 命令会在一些关键操作前向用户发出询问。
  • alias free='free -m':在 free 命令后面加上 -m 参数,就可以将输出的内存信息以 MiB 这个更方面阅读和计算的单位输出,而不是默认的 Byte 单位。

你使用的发行版自带的命令别名可能多多少少和上面有些差别。但你都可以在命令前面加上 \ 修饰符来使用命令的最基本形式(而不是别名)。例如:

\free

就是直接执行 free,而不是 free -m。还有:

\ls

执行的就是不带有--color=auto 参数的 ls

如果想要持久地保存命令别名,可以在 .bashrc 文件中进行修改,而它来源于我们的 /etc/skel 目录

使用命令别名纠正错误

各种发行版的设计者都会尽量设置用户可能需要用到的命令别名。但是不同的用户的习惯各不相同,一些用户可能刚从其它操作系统迁移到 Linux,而不同操作系统的基本命令又因 shell 而异。因此,对于刚从 Windows/MS-DOS 系统迁移到 Linux 系统的用户,不妨使用

alias dir='ls'

这个命令别名来列出目录内容。

类似地,

alias copy='cp'
alias move='mv'

也可以在尚未完全熟悉 Linux 的时候用得顺手。

还有一种情况,就是在经常出现输入错误的场合中做出容错,例如,对于我来说, Administration 这个单词就很难快速正确地输入,因此很多用户都会设置类似这样的别名:

alias sl='ls'

以及

alias gerp='echo "You did it *again*!"; grep'

grep 命令最基本的用途就是在文件中查找字符串,在熟悉这个命令之后,它一定是最常用的命令之一,因此输入错误导致不得不重输命令就很令人抓狂。

在上面 gerp 的例子中,包含的不只是一条命令,而是两条。第一条命令 echo "You did it *again*!" 输出了一条提醒用户拼写错误的消息,然后使用分号()把两条命令隔开,再往后才是 grep 这一条正确的命令。

在我的系统上使用 gerp 来搜索 /etc/skel/.bashrc 中包含“alias”这个单词的行,就会输出以下内容:

$ gerp -R alias /etc/skel/.bashrc
You did it *again*! 
       alias ls='ls --color=auto' 
       alias grep='grep --colour=auto' 
       alias egrep='egrep --colour=auto' 
       alias fgrep='fgrep --colour=auto' 
alias cp="cp -i"
alias df='df -h'
alias free='free -m'
alias np='nano -w PKGBUILD' 
alias more=less 
shopt -s expand_aliases

在命令别名中以固定的顺序执行多个命令,甚至更进一步,把多个命令串连起来,让后面的命令可以使用到前面的命令的执行结果。这样的做法已经非常接近 bash 脚本了。这篇文章已经接近尾声,我们将在下一篇文章中详细介绍。

如果想要删除在终端中临时设置的别名,可以使用 unalias 命令。

unalias gerp

如果想要持久保存命令别名,可以将命令别名放在用户主目录的 .bashrc 文件中,具体的方法在上一篇文章中已经介绍过。


via: https://www.linux.com/blog/learn/2018/12/aliases-diy-shell-commands

作者:Paul Brown 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

不一致的严格类型别名规则
在 TypeScript 中,严格类型别名规则要求类型别名不能引用...
2025-01-11 09:00:09
不一致的NumPy数组别名...
在NumPy中,如果给一个数组创建一个别名,对别名进行的操作会影响...
2025-01-11 08:30:31
不同类型的浅拷贝【已解决:...
不同类型的浅拷贝可以通过别名和拷贝两种方式来实现。别名(Alias...
2025-01-09 08:01:34
不同ID但相同类别的Bea...
在Spring框架中,如果有多个相同类别的Bean但具有不同的ID...
2025-01-09 03:31:31
不同的别名模板可以解决跨库...
不同的别名模板可以解决跨库潜在的ODR(One Definitio...
2025-01-08 12:01:57
不同别名语法的含义是什么,...
要解决这个问题,我们可以使用以下两个示例别名来演示它们的含义和字符...
2025-01-08 08:30:55

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...