新聞中心
有多少次您在命令行上多次輸入一個長命令,并希望有一種方法將其保存到以后?這就是Bash別名派上用場的地方。它們允許您將長而神秘的命令濃縮成易于記憶和使用的命令,下面為大家詳細講解一下Linux下Bash別名。

image-20211201131023527
在Linux中檢查Bash別名
Bash Alias是一個shell內(nèi)置命令,可以通過運行以下命令進行確認:
$ type -a alias
alias is a shell builtin
在跳轉(zhuǎn)和設(shè)置別名之前,首先需要看到涉及的配置文件。一個別名可以在“用戶級”或“系統(tǒng)級”中進行設(shè)置。
如果調(diào)用系統(tǒng)shell,只需在終端鍵入“ alias ”即可查看已定義別名的列表。
$ alias
(檢查已定義Linux別名的列表)
在**.bashrc文件或.bash_aliases文件中定義用戶級別名。該.bash_aliases文件是將所有的別名到一個單獨的文件,而不是把它在的.bashrc文件以及其他參數(shù)。剛開始,.bash_aliases**是不可用的,所以必須創(chuàng)建它。
$ ls -la ~ | grep -i .bash_aliases # 檢查文件是否可用
$ touch ~/.bash_aliases # 創(chuàng)建一個空的別名文件
(創(chuàng)建Bash別名文件)
打開**.bashrc文件,并注意以下部分。這部分代碼的功用是檢查用戶主目錄下是否存在文件.bash_aliases,**并在每次啟動新的終端會話時將其加載。
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
你還可以在任何目錄下創(chuàng)建自定義別名文件,并在**.bashrc或.profile中添加定義以加載它。但我不喜歡這樣,個人比較喜歡選擇將所有別名分組在.bash_aliases**下。
當然,你也可以在**.bashrc文件下添加別名。在.bashrc**文件下查找別名部分,其中帶有一些預(yù)定義的別名。
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
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$//'\'')"'
在Linux系統(tǒng)中創(chuàng)建別名
你可以創(chuàng)建將僅為當前會話存儲并在當前會話結(jié)束后將被銷毀的臨時別名,也可以創(chuàng)建將是持久性的永久別名。
在Linux中創(chuàng)建別名的命令:
$ alias
=
"command to run"
例如,創(chuàng)建以下的別名。
$ alias Hello="echo welcome to idccoupon"
打開終端并創(chuàng)建所需的任何別名命令。注意:如果您打開另一個會話,那么新創(chuàng)建的別名將不可用。
$ alias Hello"echo welcome to idccoupon"
$ alias
$ Hello
要使別名永久化,請將其添加到**.bash_aliases**文件中。你可以使用自己喜歡的文本編輯器,也可以使用cat命令或echo命令添加別名。
$ echo alias nf="neofetch" >> ~/.bash_aliases
$ cat >> ~/.bash_aliases
$ cat ~/.bash_aliases
(列出定義的別名)
如果想要它起作用,必須重新加載**.bash_aliases**文件,才能使更改在當前會話中生效。
$ source?/ .bash_aliases
現(xiàn)在,如果我運行**“ nf”(這是“ neofetch”的別名),它將觸發(fā)neofetch**程序。
$ nf
(在Linux中運行Alias)
此外,一個別名可以覆蓋想要想覆蓋任何命令。為了進行演示,這里將使用一個uptime命令,該命令將顯示系統(tǒng)正常運行時間,登錄的用戶數(shù)以及系統(tǒng)平均負載?,F(xiàn)在,我將創(chuàng)建一個別名,該別名將覆蓋uptime命令的行為。
$ uptime
$ cat >> ~/.bash_aliases alias uptime="echo 'I am running uptime command now'"
$ source ~/.bash_aliases
$ uptime
(覆蓋命令的默認行為)
從這個例子中可以得出結(jié)論,在檢查和調(diào)用實際命令之前,優(yōu)先級屬于bash別名。
$ cat ~/.bash_aliases
$ source ~/.bash_aliases
$ uptime
在Linux中刪除別名
現(xiàn)在,從**.bash_aliases文件中刪除正常運行時間條目,然后重新加載.bash_aliases文件,該文件仍將使用別名定義輸出正常運行時間。這是因為別名定義已加載到當前的Shell會話中,所以必須啟動新會話或通過運行unalias**命令取消別名定義,如下圖所示。
$ unalias uptime
(在Linux中刪除別名)
注意:Unalias將從當前加載的會話中刪除別名定義,而不是從**.bashrc或.bash_aliases中刪除**。
添加系統(tǒng)范圍的別名
至此,我們已經(jīng)了解了如何在用戶級別中設(shè)置別名。而如果想要全局設(shè)置別名,可以修改**“ /etc/bash.bashrc”文件并添加將在全局范圍內(nèi)生效的別名。當然需要具有提升的特權(quán)才能修改bash.bashrc**文件。
或者,在**“ /etc/profile.d/”下創(chuàng)建一個腳本。當?shù)卿浀絪hell時,“ / etc / profile”將在profile.d下運行任何腳本,然后實際運行?/ .profile**。此方法將減少弄亂**/ etc / profile或/etc/bash.bashrc**文件的風(fēng)險。
$ sudo cat >> /etc/profile.d/alias.sh
alias ls=”ls -ltra”
以下是從**/ etc / profile獲取的代碼,該代碼負責(zé)運行我們放在/etc/profiles.d/**下的所有腳本。它將查找?guī)в?code>.sh擴展名的所有文件,然后運行source命令。
$ tail / etc / profile
注意:在實際操作之前,最佳做法是備份用戶級或系統(tǒng)級文件。如果萬一出了問題,可以還原備份副本
當前題目:詳解LinuxBash別名
當前URL:http://fisionsoft.com.cn/article/dpedhph.html


咨詢
建站咨詢
