Bash Shell 學習記錄三

2021-07-31 21:39:52 字數 2603 閱讀 8817

配置別名 :[root@www ~]# alias lm='ls -al | more'刪除別名 :[root@www ~]# unalias lm檢視所有別名 :[root@www ~]# alias

[root@www ~]# history [n]

[root@www ~]# history [-c]

[root@www ~]# history [-raw] histfiles

選項與引數:

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

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

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

則預設寫入 ~/.bash_history

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

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

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

[root@www ~]# history

# 前面省略

1017 man bash

1018 ll

1019 history

1020 history

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

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

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

[root@www ~]# history 3

1019 history

1020 history

1021 history 3

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

[root@www ~]# history -w

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

[root@www ~]# echo $histsize

1000

當我們以 bash 登陸 linux 主機之後,系統會主動的由家目錄的

~/.bash_history 讀取以前曾經下過的命令,那麼 ~/.bash_history 會記錄幾

筆資料呢?這就與你 bash 的 histfilesize 這個變數配置值有關了!

假設我這次登陸主機後,共下達過 100 次命令,『等我登出時, 系統就會將

101~1100 這總共 1000 筆歷史命令公升級到 ~/.bash_history 當中。』 也就是

說,歷史命令在我登出時,會將最近的 histfilesize 筆記錄到我的紀錄檔案當中啦!

當然,也可以用 history -w 強制立刻寫入的!那為何用『公升級』兩個字呢? 因為

~/.bash_history 記錄的筆數永遠都是 histfilesize 那麼多,舊的資訊會被主

動的拿掉! 僅保留最新的!

[root@www ~]# !number

[root@www ~]# !command

[root@www ~]# !!

選項與引數:

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

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

[root@www ~]# history

66 man rm

67 alias

68 man history

69 history

[root@www ~]# !66 <==執行第 66 筆命令

[root@www ~]# !! <==執行上乙個命令,本例中亦即 !66

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

同一賬號同時多次登陸的 history 寫入問題

a. 當同時開好幾個 bash 介面,會有 ~/.bash_history 的寫入問題。因為這些 bash 在同時以 root(或使用者) 的身份登陸, 因此所有的 bash 都有自己的 1000 筆記錄在記憶體中。因為等到登出時才會公升級記錄檔案,所以囉, 最後登出的那個 bash 才會是最後寫入的資料。唔!如此一來其他 bash 的命令操作就不會被記錄下來了 (其實有被記錄,只是被後來的最後乙個 bash 所覆蓋公升級了) 。

b. 由於多重登陸有這樣的問題,所以很多朋友都習慣單一 bash 登陸,再用工作控制 (job control, 第四篇會介紹) 來切換不同工作! 這樣才能夠將所有曾經下達過的命令記錄下來,也才方便未來系統管理員進行命令的 debug 啊!

無法記錄時間

歷史命令還有乙個問題,那就是無法記錄命令下達的時間。由於這 1000 筆歷史命令是依序記錄的, 但是並沒有記錄時間,所以在查詢方面會有一些不方便。如果讀者們有興趣,其實可以透過 ~/.bash_logout 來進行 history 的記錄,並加上 date 來新增時間引數,也是乙個可以應用的方向喔! 有興趣的朋友可以先看看情境模擬題一吧!

Bash Shell學習筆記四

set commond 將位置引數設定為後面的命令輸出 shell命令中 在 後面的語句將會不再解釋後面的 cal 萬年曆 bc 計算器 histsize 歷史大小 random 隨機數 basename pathname 去除路徑字首的最後部分 空變數 1 1 沒有賦值或申明的變數 1 1 字元變...

Bash Shell學習筆記一

1.在linux中執行指令碼檔案時 以 執行的 或者普通方式 輸入檔名 執行時是啟動子shell執行的,所以,一切環境變數設定在推出後失效 因此在指令碼中設定 path將失效,如果一定要以指令碼方式來設定,需要 空格 檔名或者 source 指令碼檔案的形式執行.2.linux中的 和 雙引號和單引...

學習記錄(三)

new出來的空間都會給個預設值 基本型別預設值是0,引用型別預設值是null,布林型別預設值是false 方法內的new沒給預設值的確沒有,物件內沒給會有預設值 陣列的資料空間是連續的,申請的時候預設連續 一般連續放資料,但比如桶排序會不按順序放入 導線互相匯聚,網路通過電訊號傳播 電壓,高電壓1,...