1. 程式人生 > >Driver_C部落格地址請移步http://chenjingyu.cn

Driver_C部落格地址請移步http://chenjingyu.cn

history命令

簡介

基本

在Linux中,history命令是用於顯示歷史執行命令以及讀取命令歷史檔案中的歷史執行的命令到記憶體中,或者從記憶體中把執行命令的歷史寫入到儲存歷史執行命令的檔案中的內部命令

語法:history (選項) (引數)

選項-c: 清空命令歷史
-d n: 刪除歷史中指定的第n個命令
n: 顯示最近的n條歷史
-a: 追加本次會話新執行的命令歷史列表至歷史檔案
-n: 讀歷史檔案中未讀過的行到歷史列表
-r: 讀歷史檔案附加到歷史列表
-w: 儲存歷史列表到指定的歷史檔案
-p: 展開歷史引數成多行,但不存在歷史列表中
-s

: 展開歷史引數成一行,附加在歷史列表後

命令歷史儲存檔案 .bash_history

儲存命令歷史的檔案在

~/bash_history

當我們登陸shell的時候,系統會將儲存在檔案中的命令歷史讀取到記憶體中,所以我們直接鍵入 history 便可以查詢命令歷史。

[root@centos7 ~]# history   檢視記憶體中命令歷史記錄
    1  history
    2  reboot
    3  init 3
    4  history
    5  ls
    6  cd
    7  history
[root@centos7 ~]# 

直接鍵入history

查詢當前記憶體中已存在的歷史,那麼這個時候.bash_history檔案中的歷史也是這樣的嗎?

[root@centos7 ~]# cat .bash_history  檢視檔案中命令歷史記錄
history
reboot
[root@centos7 ~]# 

很明顯,在.bash_history中儲存的命令歷史截止到了reboot重啟命令。

當計算機正常執行命令關閉、重啟或者使用者正常退出的時候系統便會將記憶體中的命令歷史寫入到.bash_history中去,當用戶重新登陸後又會將之前儲存在.bash_history檔案中的命令歷史讀取到記憶體中。

[root@centos7 ~]# exit
logout [root@centos7 ~]# cat .bash_history history reboot init 3 history ls cd history cat .bash_history exit

重新登陸後便可以發現.bash_history檔案中的命令歷史已經更新了,截止到exit

選項

history -c

history -c命令用於清空命令歷史記錄。注意:這裡只是清理記憶體中的歷史記錄在.bash_history中的命令記錄不會被該命令清除,我將在下面做例項演示。

[[email protected] ~]# history
    1  reboot
    2  init 3
    3  history
    4  ls
    5  cd
    6  history
    7  cat .bash_history
    8  exit
    9  cat .bash_history 
   10  history
   11  history -d 1
   12  history
[[email protected] ~]# 

鍵入history後當前記憶體中的命令歷史如上所示。

[root@centos7 ~]# history -c   清除記憶體中的命令歷史記錄
[root@centos7 ~]# history      檢視記憶體中的命令歷史記錄
    1  history
[root@centos7 ~]# 

當鍵入history -c命令後再次鍵入history便可發現記憶體中的命令歷史已經清空,當前命令歷史只剩下history -c後的一條命令,那麼現在.bash_history中的命令歷史還在嗎?

[root@centos7 ~]# cat .bash_history  檢視檔案中的命令歷史記錄
history
reboot
init 3
history
ls
cd
history
cat .bash_history
exit
[root@centos7 ~]# 

由此可見history -c只是清除記憶體中的命令歷史,.bash_history中的命令歷史不會被清除。

history -d n

history -d n 用於刪除使用history查詢的記憶體中的命令歷史中指定的第n個命令,也就是說刪除的是記憶體中的命令歷史,與.bash_history 檔案無關。

[root@centos7 ~]# history
    1  history
    2  cat .bash_history
    3  history
[root@centos7 ~]# history -d 1 刪除第1條記錄
[root@centos7 ~]# history
    1  cat .bash_history
    2  history
    3  history -d 1
    4  history
[root@centos7 ~]# 

由上面的例項可以看到,我第一次查詢命令歷史第1條命令是history,當執行history -d 1後第1條命令歷史變成了cat .bash_history,在第1次查詢命令歷史的時候該命令是第2條。當history -d n執行成功後被刪除的那條歷史命令就會被後面的歷史所替代,後面的命令歷史都向前靠攏。

history n

history n用於顯示最近n條命令。

例項:

[root@centos7 ~]# history
    1  cat .bash_history
    2  history
    3  history -d 1
    4  history
[root@centos7 ~]# history 2  顯示最近兩條記錄
    4  history
    5  history 2
[root@centos7 ~]# 

history -a

history -a用於將記憶體中的命令歷史記錄追加到.bash_history中而不是覆蓋。

第一步先看看歷史檔案中有哪些命令歷史

[[email protected] ~]# cat .bash_history
history
reboot
init 3
history
ls
cd
history
cat .bash_history
exit

然後執行命令後再次檢視

[root@centos7 ~]# history -a
[root@centos7 ~]# cat .bash_history
history
中間省略
exit
cat .bash_history
history
history -d 1
history
history 2
cat .bash_history
history -a
[root@centos7 ~]# 

命令生效。注意:這裡是追加在後面而不是覆蓋整個檔案內容。

history -n

history -n用於將.bash_history中不存在於記憶體中的命令歷史讀取到記憶體中去。這裡注意是隻讀取記憶體中命令歷史沒有的命令歷史,如果記憶體中已經存在的相同命令歷史就不會再次讀取。

例項:
因為現在記憶體中命令歷史比.bash_history中的多,所以我先執行history -c命令刪除記憶體中的命令然後再執行history -n檢視效果。

[root@centos7 ~]# history -c
[root@centos7 ~]# history
    1  history
[root@centos7 ~]# 

以上為清除記憶體中命令歷史的操作

[root@centos7 ~]# history -n 讀取檔案中未讀取過的記錄
[root@centos7 ~]# history
    1  history
    2  history -n
    3  init 3
    4  history
    5  ls
  中間省略
   18  cat .bash_history
   19  history -a
   20  history
[root@centos7 ~]# 

由上可見history -n命令是直接把.bash_history中的命令歷史讀取到記憶體中已存在的命令歷史後面,而不是前面。

history -r

history -r 讀歷史檔案附加到歷史列表,也就是把.bash_history中的命令歷史記錄直接加到記憶體中命令歷史記錄後面,與history -n不同的是history -n只讀取沒有讀過的內容。
那麼為了實驗我還是要先執行history -c清理一下記憶體中的歷史記錄然後再執行history -r,清理操作我就不再做演示。

[[email protected] ~]# cat .bash_history
history
reboot
init 3
中間省略
cat .bash_history
histroy -a
history -a

先檢視.bash_history檔案確認記錄內容

[root@centos7 ~]# history -r 讀取歷史檔案到記憶體中命令歷史記錄
[root@centos7 ~]# history
    1  history
    2  history -r
    3  history
    4  reboot
    5  init 3
    中間省略
   17  cat .bash_history
   18  histroy -a
   19  history -a
   20  history
[root@centos7 ~]# 

如上所示.bash_history中的記錄已讀取

history -w

history -w用於用記憶體中的命令歷史記錄覆蓋.bash_history中的記錄,直接覆蓋毫不留情。

[root@centos7 ~]# history -c 清空記憶體中的記錄
[root@centos7 ~]# history
    1  history
[root@centos7 ~]# history -w 將記憶體中的記錄覆蓋到檔案中
[root@centos7 ~]# cat .bash_history 
history
history -w
[root@centos7 ~]# 

如上所示,記憶體中的記錄覆蓋到了檔案中。

history -p

history -p 可以展開歷史引數成多行,但不存在歷史列表中

[root@centos7 ~]# history -c
[root@centos7 ~]# history -p aa bb 
aa
bb
[root@centos7 ~]# history
    1  history
[root@centos7 ~]# 

history -s

history -s這個命令相當於直接在記憶體記錄中新增一條內容。

例項:

[root@centos7 ~]# history -c
[root@centos7 ~]# history -s rm -rf /*  Linux上最好玩的命令
[root@centos7 ~]# history
    1  rm -rf /1 /app /bin /boot /dev /etc /home /lib /lib64 /media /mnt /opt /path /proc /root /run /sbin /srv /sys /tmp /usr /var 
    2  history
[root@centos7 ~]# 

如上所示,雖然記憶體歷史記錄裡面有這麼一條,但是並沒有執行過。

呼叫歷史引數

簡介

cmd代表任意命令

cmd !^ : 利用上一個命令的第一個引數做cmd的引數
cmd !$ : 利用上一個命令的最後一個引數做cmd的引數
cmd !* : 利用上一個命令的全部引數做cmd的引數
cmd !:n : 利用上一個命令的第n個引數做cmd的引數
cmd !n:^ 呼叫第n條命令的第一個引數
cmd !n:$ 呼叫第n條命令的最後一個引數
cmd !n:m 呼叫第n條命令的第m個引數
cmd !n:* 呼叫第n條命令的所有引數
cmd !st:^ 從命令歷史中搜索以 st 開頭的命令 ,並獲取它的第一個引數
cmd !st:$ 從命令歷史中搜索以 st 開頭的命令 ,並獲取它的最後一個引數
cmd !st:n 從命令歷史中搜索以 st 開頭的命令 ,並獲取它的第n個引數
cmd !st:* 從命令歷史中搜索以 st 開頭的命令 ,並獲取它的所有引數

所有例項均省略不必要內容

cmd !^

利用上一個命令的第一個引數做cmd的引數

例項:

[root@centos7 ~]# ll /
[root@centos7 ~]# cd !^
cd /
[root@centos7 /]#

cmd !$

利用上一個命令的最後一個引數做cmd的引數

例項:

[root@centos7 ~]# ls /bin /dev
[root@centos7 ~]# cd !$
cd /dev
[root@centos7 dev]# 

cmd !*

利用上一個命令的全部引數做cmd的引數

例項:

[root@centos7 ~]# ls /bin /dev
[root@centos7 dev]# ll !*
ll /bin /dev
[root@centos7 dev]#

cmd !:n

利用上一個命令的第n個引數做cmd的引數

例項:

[[email protected] dev]# history
    1  cd
    2  cd /boot
    3  cd ~
    4  ll ~
[[email protected] dev]# ls !2
ls cd /boot
[[email protected] dev]# 

cmd !n:^

呼叫第n條命令的第一個引數

[root@centos7 ~]# history
   13  ls /bin /dev
   14  cd /dev
   15  ls /bin /dev
[root@centos7 ~]# cd !13:^
cd /bin
[root@centos7 bin]# 

cmd !n:$

呼叫第n條命令的最後一個引數

[root@centos7 ~]# history
   13  ls /bin /dev
   14  cd /dev
   15  ls /bin /dev
[root@centos7 ~]# cd !13:$
cd /dev
[root@centos7 dev]# 

cmd !n:m

呼叫第n條命令的第m個引數

[root@centos7 ~]# history
   13  ls /bin /dev
   14  cd /dev
   15  ls /bin /dev
[root@centos7 ~]# cd !13:2
cd /dev
[root@centos7 dev]# 

cmd !n:*

呼叫第n條命令的所有引數

[root@centos7 ~]# history
   13  ls /bin /dev
   14  cd /dev
   15  ls /bin /dev
[root@centos7 ~]# ll !13:*
ll /bin /dev
[root@centos7 ~]# 

cmd !st:^

從命令歷史中搜索以 st 開頭的命令 ,並獲取它的第一個引數

[root@centos7 app]# touch a b 在/app下建立 a b兩個檔案
[root@centos7 app]# history
   26  cd /app
   27  touch a b
   28  history
[root@centos7 app]# ll !tou:^
ll a
[root@centos7 app]# 

cmd !st:$

從命令歷史中搜索以 st 開頭的命令 ,並獲取它的最後1個引數

[root@centos7 app]# touch a b 
[root@centos7 app]# history
   26  cd /app
   27  touch a b
   28  history
[root@centos7 app]# ll !tou:$
ll b
[root@centos7 app]# 

cmd !st:n

從命令歷史中搜索以 st 開頭的命令 ,並獲取它的第n個引數

[root@centos7 app]# touch a b 
[root@centos7 app]# history
   26  cd /app
   27  touch a b
   28  history
[root@centos7 app]# ll !tou:2
ll b
[root@centos7 app]# 

cmd !st:*

從命令歷史中搜索以 st 開頭的命令 ,並獲取它的所有引數

[root@centos7 app]# touch a b 
[root@centos7 app]# history
   26  cd /app
   27  touch a b
   28  history
[root@centos7 app]# ll !tou:*
ll a b
[root@centos7 app]# 

命令歷史相關環境變數

HISTSIZE:命令歷史記錄的條數,預設1000 HISTFILE:指定歷史檔案,預設為~/.bash_history

HISTFILESIZE:命令歷史檔案記錄歷史的條數

HISTIGNORE=“str1:str2:… “ 忽略string1,string2歷史 控制命令歷史的記錄方式:

環境變數:HISTCONTROL
ignoredups 預設,忽略重複的命令,連續且相同為“重複“

ignorespace忽略所有以空白開頭的命令

ignoreboth 相當於ignoredups, ignorespace的組合

export 變數名=”值“ 存放在 /etc/profile 或 ~/.bash_profile

相關推薦

Driver_C部落地址移步http://chenjingyu.cn

history命令 簡介 基本 在Linux中,history命令是用於顯示歷史執行命令以及讀取命令歷史檔案中的歷史執行的命令到記憶體中,或者從記憶體中把執行命令的歷史寫入到儲存歷史執行命令的檔案中的內部命令。 語法:history (選項

個人部落地址http://oldchen.iwulai.com

直接上程式碼:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

CSDN 官方部落(歡迎加入部落 QQ 群:374041348,加群註明 CSDN 部落地址。)

這些年,我們讀過的技術經典圖書 極限程式設計創始人Kent Beck說過“每個有思想的軟體開發人員,書架上都應該有這樣一本書”,你的書架上又都有些什麼書呢?CSDN眾博主們用一起分享了自己學程式設計過程中讀過的技術經典。

【nzf_001的專欄nzf_001的專欄nzf_001的專欄nzf_001的專欄nzf_001的專欄】歡迎加入部落 QQ 群:631873947,加群註明 CSDN 部落地址。歡迎加入部落 QQ 群:631873947,加群註明 CSDN 部落地址

歡迎加入部落格 QQ 群:631873947,加群請註明 CSDN 部落格地址。歡迎加入部落格 QQ 群:631873947,加群請註明 CSDN 部落格地址。歡迎加入部落格 QQ 群:631873947,加群...

【zylzb的專欄】該部落使用部落搬家功能從http://haohaoxuexi.iteye.com搬遷過來,發現搬遷過來的效果不好,決定陸續手動搬遷到新地址http://blog.csdn.net/elim168

該部落格使用部落格搬家功能從http://haohaoxuexi.iteye.com搬遷過來,發現搬遷過來的效果不好,決定陸續手動搬遷到新地址http://blog.csdn.net/elim168...

部落轉移到網易部落大家移步--------------------------------->>

我們都知道 windows 有 subst 命令,可以把一個資料夾對映成一個磁碟。如: subst z: c:/afolder 但是很少有人知道 mountvol 命令,他的功能剛好相反,把一個磁碟對映到一個資料夾命令用起來稍微有點複雜 首先 鍵入 mountvol,除了顯示

部落地址http://www.cnblogs.com/millionsmultiplication/

演算法篇-用棧來求解漢諾塔問題 閱讀了java版的《程式設計師程式碼面試指南 IT名企演算法與資料結構題目最優解》後,用c++以自己的想法完成了這道題 完整題目 在漢諾塔規則的基礎上,限制不能從最左的塔移動到最右的塔上,必須經過中間的塔,移動的跨度

部落地址永久遷移到】:http://zhengxiaoyong.me

顧名思義,AndroidEventBus是一個Android平臺的事件匯流排框架,它簡化了Activity、Fragment、Service等元件之間的互動,很大程度上降低了它們之間的耦合,使我們的程式碼更加簡潔,耦合性更低,提升了我們的程式碼質量。但它能做的卻不僅限

記錄一些經常看的部落地址

Spring Cloud教程 http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/  Spring Cloud教程 https://blog.csdn.net/colu

Android大神的部落地址

這一篇文章我覺的很有用:[譯]開發安卓Apps,我所努力學習到的三十多條寶貴經驗 所知的Android大神的部落格地址(部落格名,內附地址) Hongyang 巫山老妖 郭霖的專欄 老羅的Android之旅 xyz_lmn hellogv的專欄 eclipse_x

Python 學習部落地址

Alex  https://www.cnblogs.com/alex3714林海峰 https://www.cnblogs.com/linhaifeng武佩奇 https://www.cnblogs.com/wupeiqi小馬哥 https://www.cnblogs.com/m

部落地址:blog.songchunmin.com

0. Core Image 作為設計和體驗方面的領導者,蘋果自己對圖片效果和圖片處理的支援一定是非常好的,在iOS平臺上,5.0之後就出現了Core Image的API。Core Image的API被放在CoreImage.framework庫中。 在iOS和OS

部落地址:www.yizhen-blog.com 歡迎交流

在學習深度學習相關知識,無疑都是從神經網路開始入手,在神經網路對引數的學習演算法bp演算法,接觸了很多次,每一次查詢資料學習,都有著似懂非懂的感覺,這次趁著思路比較清楚,也為了能夠讓一些像我一樣疲於各

部落已遷移至 http://chenzz.me

以這個頁面(需要翻牆)為例,我的Ubuntu 14.04更換完字型之後 Web頁面效果是這樣的: Shell顯示效果是這樣的: 我採用的字型方案是,Monaco雅黑混合字型 下面是具體更換步驟: 一、下載安裝字型 1.1 下載 下載

部落地址:https://my.oschina.net/hebaodan/blog/

思路: 按代價大小從高到低排序,代價一樣則最後期限早的在前, 按排序順序遍歷,事件安排進終止日期那一天,如果該日期已被那排,就在往前推, 如果最後安排不下,就扣分。 #include<iostream> #include<algorithm> us

【不積跬步,無以至千里】個人部落地址:https://lewky.cn

/*** * --------------攻城獅-------------- * ,%%%%%%%%, * ,%%/\%%%%/\%% * ,%%%\c "" J/%%% * %. %%%%/

不積跬步,無以至千里(個人部落地址:https://lewky.cn

/*** * --------------攻城獅-------------- * ,%%%%%%%%, * ,%%/\%%%%/\%% * ,%%%\c "" J/%%% * %. %%%%/

部落已搬遷到http://www.cnblogs.com/cniwoq/

簡單計算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 18056    Accepted Submiss

部落已遷移至http://www.laokboke.com

當我正在家裡寫部落格為上傳圖片速度慢而抓狂的時候,大洋彼岸傳來Google千兆寬頻啟動,最低每月70美元的訊息。這讓我們的所謂的寬頻提速情何以堪啊!MD,啥時我們也能享受70元1000M的寬頻?這樣買火車票該有多爽啊!剛又看到一則新聞,[url=http://miit.cci

網路部落地址留檔

記錄一些網上值得學習的部落格地址和教程 This is the web home of Ferdy Christant, a web developer, software engineer and architect from the Netherlands. N