成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

誰動了我的Linux?原來History這么強大!

系統 Linux
在平時 Linux 操作過程中,很多命令是重復的,你一定不希望大量輸入重復的命令。如果你是系統管理員,你可能需要對用戶操作進行審計,管理好 Linux 命令歷史記錄顯得非常重要。

[[393898]]

當我們頻繁使用 Linux 命令行時,有效地使用歷史記錄,可以大大提高工作效率。

在平時 Linux 操作過程中,很多命令是重復的,你一定不希望大量輸入重復的命令。如果你是系統管理員,你可能需要對用戶操作進行審計,管理好 Linux 命令歷史記錄顯得非常重要。

今天我們來介紹一下,在 Linux 使用 history 來減少重復命令的幾個實用技巧。

1 基本原理

Linux 命令的歷史記錄,會持久化存儲,默認位置是當前用戶家目錄的 .bash_history 文件。

當 Linux 系統啟動一個 Shell 時,Shell 會從 .bash_history 文件中,讀取歷史記錄,存儲在相應內存的緩沖區中。

我們平時所操作的 Linux 命令,都會記錄在緩沖區中。包括 history 命令所執行的歷史命令管理,都是在操作緩沖區,而不是直接操作 .bash_history 文件。

當我們退出 Shell,比如按下 Ctrl+D 時,Shell 進程會把歷史記錄緩沖區的內容,寫回到 .bash_history 文件中去。

2 使用詳解

清楚了 history 的基本原理,我們來具體學習一下如何使用它。

(一)基礎用法

直接輸入 history 命令,可以看到最近操作的所有命令都顯示出來了

  1. $ history 
  2.    1  bash 
  3.    2  ls 
  4.    3  vim .bash_history 
  5.    4  cat .bash_history 
  6.    5  history 
  7.    6  bash 

有時候我不需要顯示所有的歷史命令,只顯示最后的 10 條歷史記錄,可以在命令后加數字 N 即可

  1. $ history 10 

正常情況下,只有在 Shell 正常退出時,才會將緩沖區內容保存到文件。如果你想主動保存緩沖區的歷史記錄,執行 -w 選項即可

  1. $ history -w 

當然,如果你執行了一些敏感的命令操作,可以執行 -c 將緩沖區內容直接刪除

  1. $ history -c 

(二)重復執行命令

如果要重復執行一些命令,可以使用 ! 來快速執行重復的命令。

舉個例子,重復執行第 1024 歷史命令,可以執行如下命令

  1. $ !1024 

1024 這個編號可以通過 history 查看哦

重復執行上一條命令

  1. $ !! 

重復執行倒數第 6 條歷史命令,可以通過負數表示,-6 表示倒數第 6 條記錄

  1. $ !-6 

(三)搜索歷史命令

有時候,需要重復執行某字符串開頭的最后一個命令,同樣可以通過 ! 來操作,然后按 Enter 執行即可

比如,剛才執行了一個很長命令,只記錄命令開頭是 curl,這時就可以通過 !curl 快速執行該命令

  1. $ !curl 

這個用法很高效,但存在不安全因素,因為有可能執行的命令不是你想要執行的,那就壞事了。可以通過 :p 來安全地執行。

  1. $ !curl:p 
  2. curl www.sina.com.cn 

加上 :p 后,只是打印出了搜索到的命令,如果要執行,請按 Up 鍵,然后回車即可。

如果你只知道某條命令包含了 x 信息,不是以 x 開頭,同樣可以通過 ? 來執行包含字符串的命令

  1. $ !?sina 

(四)交互式搜索歷史命令

在 Linux 搜索歷史命令,還可以通過交互式的搜索方式,簡直高效直接。在命令行輸入 Ctrl+R 后,進入交互界面,鍵入需要搜索的關鍵字,如果匹配到多條命令,可以多次鍵入 Ctrl+R 來切換上一條匹配的命令。

  1. (reverse-i-search)`sina': echo sina 

可以看到,我輸入了 sina 后,就自動匹配到最近一次和 sina 匹配的命令,這時按下回車就可以執行該命令。

(五)重復執行上條命令

在這里總結下多種重復執行上條命令的方式,你可以選擇一種自己喜歡的就可以啦

  • !!
  • !-1
  • Ctrl+p
  • Up
  • Ctrl+R

(六)顯示時間戳

有時候需要對 Linux 系統做審計,那為歷史記錄添加時間戳,顯示非常有用。

  1. $ export HISTTIMEFORMAT='%F %T ' 
  2. $ history 3 
  3.   46  2021-04-18 15:21:33 curl baidu.com 
  4.   47  2021-04-18 15:21:35 pwd 
  5.   48  2021-04-18 15:21:39 history 3 

可以看到,歷史記錄已經顯示了時間戳。其實這些對于審計需求,還不夠,可以加上更詳細的信息:

  1. $ export HISTTIMEFORMAT="%F %T `who -u am i 2>/dev/null| awk '{print $NF}'|sed \-e 's/[()]//g'` `whoami` " 
  2.   6  2021-04-18 16:07:48 113.200.44.237 root ls 
  3.   7  2021-04-18 16:07:59 113.200.44.237 root pwd 
  4.   8  2021-04-18 16:08:14 113.200.44.237 root history 

(七)控制歷史記錄總數

默認情況下,Linux 系統最多存儲 1000 條歷史記錄,可以通過 HISTSIZE 環境變量查看

  1. $ echo $HISTSIZE 
  2. 1000 

對于需要做審計的場景,1000 條歷史記錄可能會太少了,我們可以修改為合適的值

  1. $ export HISTSIZE=10000 

注意,HISTSIZE 變量只能控制緩沖區中的歷史記錄數量,如果需要控制 .bash_history 文件存儲的最大記錄數,可以通過 HISTFILESIZE 進行控制

上述命令行修改只在當前 Shell 環境生效,如果需要永久生效,需要寫入配置文件

  1. $ echo "export HISTSIZE=10000" >> ~/.bash_profile 
  2. $ echo "export HISTFILESIZE=200000" >> ~/.bash_profile 
  3. $ source ~/.bash_profile 

(八)更改歷史記錄文件名

有時,為了方便管理和備份,需要更改歷史記錄文件的路徑和名稱。簡單,同樣可以通過環境變量 HISTFILE 更改它的文件名稱

  1. $ echo "export HISTFILE=/data/backup/chopin.bash_history" >> ~/.bash_profile 
  2. $ souce ~/.bash_profile 

(九)禁用歷史記錄

處于某種特殊環境,我們需要禁用歷史記錄

  1. $ echo "export HISTSIZE=0" >> ~/.bash_profile 
  2. $ echo "export HISTFILESIZE=0" >> ~/.bash_profile 
  3. $ source ~/.bash_profile 

哈哈,直接把上述兩個變量的值設置為 0,就實現了禁用歷史記錄的功能

(十)黑客必知的一個小技巧

最后分享一個不為人知的,黑客必知的小技巧。

在命令前額外多加一個空格,這樣的命令是不會被記錄到歷史記錄的,感覺是不是很酷

這個技巧如果在你的系統不管用,請查看下環境變量 HISTCONTROL 是否包含 ignorespace,貌似 centos 系統默認沒有設置這個值。

3 總結時間

在 Linux 系統,history 命令可以非常方便,幫助我們管理歷史命令,平時我們命令都會先記錄在緩存區,在 Shell 退出時才會記錄到文件中。

history 命令提供了很方便的管理功能,合理去配置和管理歷史記錄,可以讓你的 Linux 系統更加健壯和安全。

好了,老規矩,貼心的肖哥還是來總結一下 history 命令常用方法

  • history n:只顯示最近的 n 條歷史記錄
  • history -c:清除緩存區中的歷史記錄
  • history -w:將緩存區的歷史記錄保存到文件
  • history -d N:刪除第 N 條歷史記錄

幾種重復執行命令的方法:!!、!-1、!N、!string 等

交互式歷史命令搜索,請使用 Ctrl+R 快捷鍵

合適使用幾個相關的環境變量,讓你的 Linux 系統更安全:

  • HISTSIZE:控制緩沖區歷史記錄的最大個數
  • HISTFILESIZE:控制歷史記錄文件中的最大個數
  • HISTIGNORE:設置哪些命令不記錄到歷史記錄
  • HISTTIMEFORMAT:設置歷史命令顯示的時間格式
  • HISTCONTROL:擴展的控制選項

如果在生產環境,這些環境變量需要持久化到配置文件 ~/.bash_profile

  1. export HISTCONTROL=ignoreboth 
  2. # ignorespace: 忽略空格開頭的命令 
  3. # ignoredups: 忽略連續重復命令 
  4. # ignoreboth: 表示上述兩個參數都設置 
  5.  
  6. # 設置追加而不是覆蓋 
  7. shopt -s histappend 
  8.  
  9. export HISTSIZE=1000 
  10. export HISTFILESIZE=200000 
  11. export HISTTIMEFORMAT="%F %T " 
  12. export HISTIGNORE="ls:history" 

本文轉載自微信公眾號「編程修養」,可以通過以下二維碼關注。轉載本文請聯系編程修養公眾號。

 

責任編輯:武曉燕 來源: 編程修養
相關推薦

2021-04-26 10:24:52

Linux 開發操作系統

2021-01-08 09:35:41

LinuxHistory命令

2017-06-03 16:26:05

2020-01-10 09:06:10

Activity系統 通信

2012-12-12 09:56:40

EC2AWSAmazon

2016-10-19 11:00:26

2010-08-26 15:34:12

2023-12-13 10:36:38

Long算法代碼

2015-06-05 15:47:47

2014-06-11 10:06:09

2010-05-20 09:29:14

谷歌微軟云計算

2025-01-28 00:00:00

OpenFeign接口依賴

2015-10-09 11:02:02

2011-12-30 14:35:20

2011-01-25 09:24:00

2011-04-14 13:39:15

jar包

2022-07-25 09:40:41

內存00M

2016-05-04 10:14:32

2020-03-24 14:57:05

戴爾

2017-02-14 14:23:52

大數據春晚
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久国产精品 | 精品一区二区在线观看 | 久久久精 | 秋霞在线一区 | 国产精品久久久久久婷婷天堂 | 日韩成人在线观看 | 中文字幕一区二区三区四区 | 久热久热 | 国产一区二区电影 | 国内精品久久久久久久 | 91精品国产欧美一区二区 | 欧美精品一区二区三区四区 在线 | 日韩精品一区二区三区视频播放 | 国产精品一区二 | 亚洲精品久久久久avwww潮水 | 91小视频在线 | 国产日韩精品视频 | 国产一二区免费视频 | 国产成人免费视频 | 久久精品小视频 | 久久久影院 | 国产精品一区二区免费 | 综合久久99 | 91欧美精品成人综合在线观看 | 国产精品久久国产精品 | 日韩成人在线网站 | 超碰导航 | 精品一区二区三区在线观看国产 | 婷婷狠狠 | 久久久久久久亚洲精品 | 在线免费国产 | 黄色一级大片在线免费看产 | 精品国产91久久久久久 | 久久久精品一区 | 国产a区 | 精品日韩一区二区 | 成年人免费看 | 免费观看国产视频在线 | 欧美精品一区二区免费 | 视频1区2区 | 成人视屏在线观看 |