第十一章 命令別名與歷史命令

2021-09-12 04:24:17 字數 4473 閱讀 1252

我們知道在早期的 dos 年代,清除螢幕上的資訊可以使用 cls 來清除,[color=red]但是在 linux 裡面, 我們則是使用 clear 來清除畫面的。[/color]那麼可否讓 cls 等於 clear 呢?可以啊!用啥方法? link file 還是什麼的?別急!底下我們介紹不用 link file 的命令別名來達成。那麼什麼又是歷史命令? 曾經做過的舉動我們可以將他記錄下來喔!那就是歷史命令囉~底下分別來談一談這兩個玩意兒。

[size=small][b]命令別名配置: alias, unalias[/b][/size]

命令別名是乙個很有趣的東西,特別是你的慣用命令特別長的時候!還有, 增設預設的選項在一些慣用的命令上面,可以預防一些不小心誤殺檔案的情況發生的時候! 舉個例子來說,如果你要查詢隱藏檔,並且需要長的列出與一頁一頁翻看,那麼需要下達[color=red]『 ls -al | more 』[/color]這個命令,我是覺得很煩啦! 要輸入好幾個單字!那可不可以使用 lm 來簡化呢?當然可以,你可以在命令列下面下達:

[code="linux"]

# alias lm='ls -al | more'

[/code]

立刻多出了乙個可以執行的命令喔!這個命令名稱為 lm ,且其實他是執行 ls -al | more 啊!真是方便。不過, 要注意的是:『alias 的定義守則與變數定義守則幾乎相同』, 所以你只要在 alias 後面加上你的 [color=blue][/color], 以後你只要輸入 lm 就相當於輸入了 [color=orange]ls -al|more[/color] 這一串命令!很方便吧!

另外,命令別名的配置還可以取代既有的命令喔!舉例來說,我們知道 root 可以移除 (rm) 任何資料!所以當你以 root 的身份在進行工作時,需要特別小心, 但是總有失手的時候,那麼 rm 提供了乙個選項來讓我們確認是否要移除該檔案,那就是 -i 這個選項!所以,你可以這樣做:

[code="linux"]# alias rm='rm -i'[/code]

那麼以後使用 rm 的時候,就不用太擔心會有錯誤刪除的情況了!這也是命令別名的優點囉! 那麼如何知道目前有哪些的命令別名呢?就使用 alias 呀!

[code="linux"]

# alias

alias cp='cp -i'

alias l.='ls -d .* --color=tty'

alias ll='ls -l --color=tty'

alias lm='ls -l | more'

alias ls='ls --color=tty'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which --tty-only --show-dot --show-tilde'

[/code]

由上面的資料當中,你也會發現一件事情啊,我們在第十章的 vim 程式編輯器裡面提到 vi 與 vim 是不太一樣的,vim 可以多作一些額外的語法檢驗與顏色顯示,預設的 root 是單純使用 vi 而已。 如果你想要使用 vi 就直接以 vim 來開啟檔案的話,使用[color=red]『 alias vi='vim' 』[/color]這個配置即可。 至於如果要取消命令別名的話,那麼就使用 [color=red]unalias [/color]吧!例如要將剛剛的 lm 命令別名拿掉,就使用:

[code="linux"]

# unalias lm

[/code]

那麼命令別名與變數有什麼不同呢?命令別名是[color=red]『新創乙個新的命令, 你可以直接下達該命令』[/color]的,至於變數則需要使用類似[color=red]『 echo 』[/color]命令才能夠呼叫出變數的內容! 這兩者當然不一樣!很多初學者在這裡老是搞不清楚!要注意啊! ^_^

例題:dos 年代,列出目錄與檔案就是 dir ,而清除螢幕就是 cls ,那麼如果我想要在 linux 裡面也使用相同的命令呢?

答:很簡單,透過 clear 與 ls 來進行命令別名的建置:

[color=red]alias cls='clear'[/color]

[color=orange]alias dir='ls -l'[/color]

[size=large][b]歷史命令:history[/b][/size]

前面我們提過 bash 有提供命令歷史的服務!那麼如何查詢我們曾經下達過的命令呢?就使用 history 囉!當然,如果覺得 histsory 要輸入的字元太多太麻煩,可以使用命令別名來配置呢! 不要跟我說還不會配置呦! ^_^

[code="linux"]

# alias h='history'

[/code]

如此則輸入 h 等於輸入 history 囉!好了,我們來談一談 history 的用法吧!

[code="linux"]

# history [n]

# history [-c]

# history [-raw] histfiles

選項與引數:

n :數字,意思是『要列出最近的 n 筆命令列表』的意思!

-c :將目前的 shell 中的所有 history 內容全部消除

-a :將目前新增的 history 命令新增入 histfiles 中,若沒有加 histfiles ,

則預設寫入 ~/.bash_history

-r :將 histfiles 的內容讀到目前這個 shell 的 history 記憶中;

-w :將目前的 history 記憶內容寫入 histfiles 中!

範例一:列出目前記憶體內的所有 history 記憶

# history

# 前面省略

1017 man bash

1018 ll

1019 history

1020 history

# 列出的資訊當中,共分兩欄,第一欄為該命令在這個 shell 當中的**,

# 另乙個則是命令本身的內容喔!至於會秀出幾筆命令記錄,則與 histsize 有關!

範例二:列出目前最近的 3 筆資料

# history 3

1019 history

1020 history

1021 history 3

範例三:立刻將目前的資料寫入 histfile 當中

# history -w

# 在預設的情況下,會將歷史紀錄寫入 ~/.bash_history 當中!

# echo $histsize

1000

[/code]

在正常的情況下,歷史命令的讀取與記錄是這樣的:

當我們以 bash 登陸 linux 主機之後,系統會主動的由家目錄的 ~/.bash_history 讀取以前曾經下過的命令,那麼 ~/.bash_history 會記錄幾筆資料呢?[color=red]這就與你 bash 的 histfilesize 這個變數配置值有關了![/color]

假設我這次登陸主機後,共下達過 100 次命令,『等我登出時, 系統就會將 101~1100 這總共 1000 筆歷史命令公升級到 ~/.bash_history 當中。』 也就是說,歷史命令在我登出時,會將最近的 histfilesize 筆記錄到我的紀錄檔案當中啦!

當然,也可以用 history -w 強制立刻寫入的!那為何用『公升級』兩個字呢? 因為 [color=red]~/.bash_history 記錄的筆數永遠都是 histfilesize 那麼多[/color],舊的資訊會被主動的拿掉! 僅保留最新的!

[code="linux"]

# !number

# !command

# !!

選項與引數:

number :執行第幾筆命令的意思;

command :由最近的命令向前搜尋『命令串開頭為 command』的那個命令,並執行;

# history

66 man rm

67 alias

68 man history

69 history

# !66 <==執行第 66 筆命令

# !! <==執行上乙個命令,本例中亦即 !66

# !al <==執行最近以 al 為開頭的命令(上頭列出的第 67 個)

[/code]

經過上面的介紹,瞭乎?歷史命令用法可多了!如果我想要執行上乙個命令, 除了使用上下鍵之外,[color=red]我可以直接以『 !! 』 來下達上個命令的內容[/color],此外, 我也可以直接選擇下達第 n 個命令,『 !n 』來執行,也可以使用命令標頭,例如 『 !vi 』來執行最近命令開頭是 vi 的命令列!相當的方便而好用!

基本上 history 的用途很大的!但是需要小心安全的問題!尤其是 root 的歷史紀錄檔案,這是 cracker 的最愛!因為不小心的 root 會將很多的重要資料在執行的過程中會被紀錄在 ~/.bash_history 當中,如果這個檔案被解析的話,後果不堪吶!無論如何,使用 history 配合[color=red]『 ! 』[/color]曾經使用過的命令下達是很有效率的乙個命令下達方法!

**:[url]

第十一章 認識與學習 BASH 命令別名與歷史命令

命令別名與歷史命令 在 linux 裡面,使用 clear 來清除螢幕。命令別名配置 alias,unalias root www alias lm ls al more root www alias rm rm i root www alias alias cp cp i alias l.ls d...

命令別名與歷史命令

列出目前已有的命令別名 用法 1.alias dmtsai study alias parameter p 列印已經設定的命令別名 範例1 將來執行 rm i 命令就可以直接輸入 rm 進行使用 dmtsai study alias rm rm i 範例2 將清屏clear命名為cls dmtsai...

命令別名與歷史命令 alias,history

命令的別名 alias 命令別名是乙個很有趣的東西,特別是慣用指令特別長的時候!還有,增設預設的選項在一些慣用的指令上面,可以預防一些不小心誤殺檔案的情況發生的時候!舉個例子來說,如果你要查詢隱藏檔,並且需要長的列出與一頁一頁翻看,那麼需要下達 ls al more 這個指令,我是覺得很煩啦!要輸入...