在 Linux 中使用 alias 命令提高效率
众所周知,Linux 和 Unix 是基于命令行的系统,这意味着对于 *nix SysOp来说,控制输入的命令基本上是最重要的。
这就是‘别名’命令发挥作用的地方,它非常有用,特别是出于安全目的和简化系统管理员的工作。
Linux 别名命令
shell别名只是引用另一个命令的一种方式。它可用于避免重复输入长命令和 shell 行,简化工作,甚至使事情更安全或更简单。
举一个简单的例子,您必须使用 ls 命令以反向时间顺序显示所有内容。您可以一直输入 ls -lrta,也可以创建一个别名(例如)“ll”,它相当于 ls -lrta。它将为您节省一些击键次数。
类似地,您可以使用 Linux 中的别名将长而复杂的命令替换为短而简单的命令。
让我们看看如何在 Linux 中创建别名。
如何在 Linux 中创建别名
我将继续使用上面所用过的相同示例。
alias ll='ls -lrta'
您必须注意以下几点:
- 替换的命令总是在引号 (') 下使用。
- 别名命令中的等号前后不能有空格。如果你错误地输入了空格,你会看到类似alias not found的错误。
- 选择别名时要小心。没有保留关键字,因此您可能会用完全不相关的命令替换现有命令。
你可以使用 type command 检查某个命令是否实际上是别名。例如,在 Ubuntu 中, ls 实际上是一个别名,用于显示丰富多彩的输出。
type ls
ls is aliased to `ls --color=auto'
如果要使用原始命令而不使用其别名版本,请在其两边使用单引号。
现在,您刚刚创建的别名是临时的。如果您退出 shell,您将丢失该别名。您需要将别名设为永久别名。
使别名永久生效
为了添加可以在系统中一直使用的别名,您只需编辑用户(或任何其他用户)的 .bashrc 文件即可。某些发行版可能建议使用专用的 .bash_aliases 文件来存储别名。
该文件位于您的 /home/<username>/ 文件夹中。您可以使用 vim 命令在终端中编辑该文件。
user@system:~$ vim ~/.bashrc
这将立即打开您的 .bashrc 文件,您必须在文件末尾(紧接着文件的最后一行)开始添加别名。然后您应该执行 source bashrc 文件。
source ~/.bashrc
我建议创建块或至少在文件中为每个创建的别名添加注释,以便将来更容易了解每个东西在维护方面的含义。
为所有用户创建全局别名
如果您希望别名对Linux 系统上的所有用户都可用,则应在 /etc/bash.bashrc 文件中添加别名。
如果您没有此文件,请创建它。
如何查看 Linux 系统上设置的所有别名
如果您想查看系统上为您设置的所有别名,您可以检查 shell 的配置文件,如 ~/.bashrc、~/.zshrc 等。
但是,查看所有别名的更简单的方法是直接运行不带任何参数的别名命令。
alias
典型的 Ubuntu 系统默认设置了以下别名。
alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '''s/^s[0-9]+s//;s/[;&|]s*alert$//''')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -lrt'
alias ls='ls --color=auto'
如何删除别名
如果要删除别名,可以按以下方式使用 unalias 命令:
unalias your_alias_name
您可以使用 -a 选项一次删除所有别名:
unalias -a
与 alias 命令一样,unalias 命令的更改也是暂时的。如果你想永久删除别名,你应该从 bashrc 文件中删除它。
我最喜欢的 Linux 别名
让我分享一些我经常使用的别名,以便在 Linux 中更有效地工作。
1. 让“rm”更安全
众所周知,rm 命令每天都被广泛使用,如果使用不当,也会对系统造成很大的破坏和干扰。
这就是为什么我使用以下别名:
#make rm command safer
alias rm="rm -i"
这使得“rm”命令更安全,因为无论何时使用它,它都会在继续之前询问您是否确定要执行臭名昭著的删除操作,给您第二次也是最后一次机会,以免无意中破坏事物。
2. 让 ssh 连接到其他系统更加轻松快捷
有时,尤其是当您使用私钥而不是凭据登录其他 Linux 系统时,使用助记符名称为每个私钥设置别名会更容易。
作为系统操作员,我使用 SSH登录到不同的 Linux 服务器,并且根据我的客户端,我有几个私钥,因此它可以帮助我使用别名,例如:
#alias for servers SSH
alias sshserver1='ssh -i ~/Documents/IT/SSH-keys/server1.pem centos@server1.com'
alias sshserver2='ssh -i ~/Documents/SSH-keys/server2.pem centos@server2.com'
alias sshplexserverhome='ssh johndoe@myplexserver.home.local'
alias sshclientserver='ssh -i ~/Documents/IT/SSH-keys/client.pem centos@client-domain.com'
如您所见,我将所有私钥都放在我自己用户文件夹内名为“SSH-keys”的文件夹中,然后我只需创建别名来连接每个私钥,遵循“ssh”+“服务器名称”的标准。
这样,我只需要记住我想要连接的服务器的名称,而不需要记住密钥的位置、每个密钥的名称(如果它们不同)甚至每个服务器连接需要使用的用户名。
3. 显示日常事务的时间或日期
有些人要么因为他们编写了使用特定时间的脚本,要么需要查阅时间和/或日期并希望采用特定的格式,可以通过执行以下操作来获得别名的一些好处:
alias nowtime='date +"%T"' #this will show the current time in 24hrs format as HH:MM:SS
alias nowdate='date +"%d-%m-%Y"' #this will show the current date in format dd-MM-YY
4. 轻松管理你的 iptables 信息
让我们面对现实:iptables 或 nftables并不是世界上最简单、最友好的东西,尽管它并不难,但第一次处理它并不那么容易。这就是为什么使用这样的别名可以让事情变得容易得多:
#Displaying iptables information the easy way :)
alias iptlist='sudo /sbin/iptables -L -n -v --line-numbers' #this will display all lines of your current iptables
alias iptlistin='sudo /sbin/iptables -L INPUT -n -v --line-numbers' #this will display all your INCOMING rules in iptables
alias iptlistout='sudo /sbin/iptables -L OUTPUT -n -v --line-numbers' #this will display all your OUTGOING rules in iptables
5. 用一个命令更新基于 Debian 的服务器
我自己使用 Ubuntu,但您可以将其调整为任何 Red Hat、CentOS 服务器和“yum”命令。可以通过类似这样的别名在单个命令中更新 Debian 服务器:
# update on one command
alias update='sudo apt-get update && sudo apt-get upgrade'
6. 添加别名以使用 sudo 运行别名
默认情况下,您无法使用 sudo 运行别名。如果您想以 root 访问权限运行别名命令,则必须使用 sudo 创建别名,如下所示:
sudo='sudo '
结论
如您所见,这完全取决于您所做的事情和您的创造力,但您基本上可以花时间为您的日常任务创建尽可能多的别名,并使用 Linux 中这个有用的“别名”命令使它们更容易。