新聞中心
ll這樣的命令為什么與ls -l的效果是一樣的吧。
下面讓我們來看一下有哪些命令被默認(rèn)創(chuàng)建了別名:
[mozhiyan@localhost ~]$ alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
你看,為了讓我們使用方便,Shell 會(huì)給某些命令默認(rèn)創(chuàng)建別名。
使用 alias 命令自定義別名
使用 alias 命令自定義別名的語法格式為:
alias new_name='command'
比如,一般的關(guān)機(jī)命令是
shutdown-h now,寫起來比較長(zhǎng),這時(shí)可以重新定義一個(gè)關(guān)機(jī)命令,以后就方便多了。
alias myShutdown='shutdown -h now'
再如,通過 date 命令可以獲得當(dāng)前的 UNIX 時(shí)間戳,具體寫法為
date +%s,如果你嫌棄它太長(zhǎng)或者不容易記住,那可以給它定義一個(gè)別名。
alias timestamp='date +%s'
在《Shell命令替換》一節(jié)中,我們使用
date +%s計(jì)算腳本的運(yùn)行時(shí)間,現(xiàn)在學(xué)了 alias,就可以簡(jiǎn)化代碼了。
#!/bin/bash
alias timestamp='date +%s'
begin=`timestamp`
sleep 20s
finish=$(timestamp)
difference=$((finish - begin))
echo "run time: ${difference}s"
運(yùn)行腳本,20 秒后看到輸出結(jié)果:
run time: 20s
別名只是臨時(shí)的
在代碼中使用 alias 命令定義的別名只能在當(dāng)前 Shell 進(jìn)程中使用,在子進(jìn)程和其它進(jìn)程中都不能使用。當(dāng)前 Shell 進(jìn)程結(jié)束后,別名也隨之消失。
要想讓別名對(duì)所有的 Shell 進(jìn)程都有效,就得把別名寫入 Shell 配置文件。Shell 進(jìn)程每次啟動(dòng)時(shí)都會(huì)執(zhí)行配置文件中的代碼做一些初始化工作,將別名放在配置文件中,那么每次啟動(dòng)進(jìn)程都會(huì)定義這個(gè)別名。不知道如何修改配置文件的讀者請(qǐng)猛擊《Shell配置文件的加載》《編寫自己的Shell配置文件》。
使用 unalias 命令刪除別名
使用 unalias 內(nèi)建命令可以刪除當(dāng)前 Shell 進(jìn)程中的別名。unalias 有兩種使用方法:
- 第一種用法是在命令后跟上某個(gè)命令的別名,用于刪除指定的別名。
- 第二種用法是在命令后接
-a參數(shù),刪除當(dāng)前 Shell 進(jìn)程中所有的別名。
同樣,這兩種方法都是在當(dāng)前 Shell 進(jìn)程中生效的。要想永久刪除配置文件中定義的別名,只能進(jìn)入該文件手動(dòng)刪除。
# 刪除 ll 別名
[mozhiyan@localhost ~]$ unalias ll
# 再次運(yùn)行該命令時(shí),報(bào)“找不到該命令”的錯(cuò)誤,說明該別名被刪除了
[mozhiyan@localhost ~]$ ll
-bash: ll: command not found
文章標(biāo)題:Shellalias:給命令創(chuàng)建別名
本文網(wǎng)址:http://m.fisionsoft.com.cn/article/dpcgsip.html


咨詢
建站咨詢
