Linux history 命令

Linux history 命令詳解

history 是 Linux 系統中一個非常實用的命令,用于查看、管理和操作當前 Shell 會話中執行過的命令歷史記錄。它可以幫助用戶快速重復執行命令、搜索歷史記錄、清除敏感命令等,極大地提高了命令行操作的效率。


一、基本用法
  1. 顯示歷史記錄

    • 直接輸入 history 命令,會列出當前 Shell 會話中執行過的所有命令及其對應的序號。

      $ history
      

      示例輸出:

       1  ls -l2  cd /var/log3  cat syslog
      
  2. 限制顯示條數

    • 顯示最近 n 條歷史記錄:

      $ history 10
      

二、常用選項
選項描述示例
-c清空當前會話的歷史記錄history -c
-d offset刪除指定偏移量處的命令(按序號)history -d 5(刪除第5條命令)
-a將當前會話的新命令追加到歷史文件(~/.bash_history)中history -a
-r從歷史文件中讀取命令并加載到當前會話中history -r
-w將當前會話的歷史記錄寫入歷史文件history -w
-n從歷史文件中讀取尚未讀取的新記錄history -n

組合命令 history -c && history -w 的作用

  • 完整流程:

    • history -c:清空當前會話的內存歷史記錄。

    • history -w:將空的歷史記錄寫入歷史文件,覆蓋原有內容。

  • 最終效果:

    • 當前會話的歷史記錄被清空。
    • 歷史文件(如 ~/.bash_history)也被清空,原有命令記錄被刪除。
  • 典型應用場景:

    • 防止敏感命令(如包含密碼的命令)被記錄到歷史文件中。
    • 在腳本中需要臨時清理歷史記錄時使用。

三、環境變量配置

通過修改環境變量,可以更靈活地管理歷史記錄:

  1. 設置歷史記錄數量

    • HISTSIZE:控制當前會話中保存在內存中的命令數。
    • HISTFILESIZE:控制歷史文件中保存的命令行數。
    export HISTSIZE=1000       # 內存中最多保存1000條命令
    export HISTFILESIZE=2000   # 歷史文件中最多保存2000條命令
    
  2. 忽略重復命令或特定命令

    • HISTCONTROL:定義如何處理重復命令或以空格開頭的命令。
      • ignoredups:忽略重復的連續命令。
      • ignorespace:忽略以空格開頭的命令。
      • ignoreboth:合并以上兩者。
    export HISTCONTROL=ignoreboth
    
  3. 排除特定命令

    • HISTIGNORE:指定不保存到歷史記錄中的命令(用冒號分隔)。
    export HISTIGNORE="ls:pwd:exit"  # 不保存 ls、pwd、exit 命令
    
  4. 顯示時間戳

    • HISTTIMEFORMAT:為每條歷史記錄添加時間戳。
    export HISTTIMEFORMAT="%F %T "  # 格式:YYYY-MM-DD HH:MM:SS
    

    示例輸出:

     1  2025-06-16 11:37:45 ls -l2  2025-06-16 11:38:00 cd /var/log
    
  5. 實時記錄命令

    • PROMPT_COMMAND:每次執行命令后立即追加到歷史文件。
    export PROMPT_COMMAND='history -a'
    

四、高級功能
  1. 搜索歷史記錄

    • 使用 Ctrl + R 反向搜索歷史命令(輸入關鍵字后按 ↑↓ 鍵選擇)。

    • 使用 grep 過濾歷史記錄:

      history | grep "ls"  # 搜索包含 "ls" 的命令
      
  2. 快速執行歷史命令

    • !!:執行上一條命令。
    • !n:執行第 n 條命令(如 !3 執行第3條命令)。
    • !string:執行以 string 開頭的最新命令(如 !cat 執行最近的 cat 命令)。
    • !-n:執行倒數第 n 條命令(如 !-2 執行倒數第2條命令)。
  3. 命令參數替換

    • !!:$:獲取上一條命令的最后一個參數。

      $ ls anaconda-ks.cfg
      $ vi !!:$  # 等價于 vi anaconda-ks.cfg
      
    • !^:獲取上一條命令的第一個參數。

      $ cp file1 file2
      $ rm !^  # 等價于 rm file1
      
    • !cmd:arg:從歷史中提取特定命令的參數(如 !cp:2 獲取 cp 命令的第二個參數)。

  4. 禁用歷史記錄

    • HISTSIZE 設置為 0,禁用歷史記錄功能:

      export HISTSIZE=0
      

五、歷史文件操作
  1. 歷史文件位置

    • Bash:~/.bash_history
    • Zsh:~/.zsh_history
    • Fish:~/.local/share/fish/fish_history
  2. 手動清空歷史文件

    • 清空當前用戶的 .bash_history 文件:

      > ~/.bash_history
      
    • 或者:

      cat /dev/null > ~/.bash_history
      
  3. 保護隱私

    • 修改歷史文件權限,防止其他用戶讀取:

      chmod 600 ~/.bash_history
      

六、不同 Shell 的差異
Shell歷史命令歷史文件位置
Bashhistory~/.bash_history
Zshhistory~/.zsh_history
Fishhistory~/.local/share/fish/fish_history

七、總結

history 命令是 Linux 命令行用戶不可或缺的工具,通過合理配置和使用,可以顯著提升工作效率。以下是關鍵點總結:

  • 基礎用法history 顯示所有記錄,history n 顯示最近 n 條。
  • 管理記錄:使用 -c 清空、-d 刪除、-a 追加等選項。
  • 環境變量:通過 HISTSIZEHISTCONTROL 等控制記錄行為。
  • 高級技巧Ctrl + R 搜索、!! 重復命令、參數替換。
  • 隱私保護:清空歷史文件、設置權限、禁用記錄。

通過靈活運用這些功能,你可以更高效地管理 Linux 命令行操作!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909775.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909775.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909775.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

側信道分析中的簡單模板攻擊(TA)Python實現(帶測試)

一、模板攻擊原理 模板攻擊(Template Attacks, TA)是一種高效的側信道分析方法,利用密碼設備運行時的物理泄漏信息(如功耗)恢復密鑰。其核心思想是通過建模密鑰相關中間值的泄漏特征,構建攻擊模板。模板攻…

AI集群全光交換網絡技術原理與發展趨勢研究

? 引言 隨著人工智能技術的飛速發展,AI訓練集群對網絡互連的帶寬、延遲和能效提出了前所未有的挑戰。全光交換網絡作為一種新興技術,正在成為解決這些挑戰的關鍵方案。 全光交換網絡的基本概念 全光交換網絡(Optical Circuit Switch, OCS)是一種利用…

PHP Swoft2 框架精華系列:Validator 校驗器詳解

文章目錄 校驗器校驗器類型@Validate 注解屬性說明校驗器校驗主要流程系統校驗器每個屬性存儲結構校驗器規則定義,注解、注解解析器定義校驗器注解使用實現一個自定義的校驗器校驗器注解校驗器注解解析器校驗器規則系統校驗器Controller/Action 綁定校驗器校驗器 校驗器是 sw…

MySQL 類型轉換與加密函數深度解析

MySQL 類型轉換與加密函數深度解析 一、類型轉換函數詳解 1. 顯式類型轉換 CAST 函數 CAST(expression AS type)支持類型:BINARY, CHAR, DATE, DATETIME, TIME, DECIMAL, SIGNED [INTEGER], UNSIGNED [INTEGER]示例:SELECT CAST(2023-08-15 AS DATE);…

FPGA基礎 -- Verilog 行為級建模之條件語句

Verilog 的行為級建模(Behavioral Modeling)中的條件語句(Conditional Statements),逐步從基礎到實際工程應用,適合有RTL開發基礎但希望深入行為建模的人。 一、行為級建模簡介 行為級建模(Beh…

linux618 NFS web.cn NFS.cn backup.cn

權限問題 推測 ssh root登錄失敗 root192.168.235.100s password: ???????? root192.168.235.100s password: ???????? root192.168.235.100s password: ???????? root192.168.235.100s password: ???????? root192.168.235.100s password: …

氧化鐿:稀土科技的“夜視高手”

氧化鐿(Yb?O?)是一種重要的稀土氧化物,這種略帶黃色的粉末,既不像黃金那樣耀眼,也不像稀土家族里的“明星”如釹、鋱那樣廣為人知,卻在背后默默支撐著許多高科技產業,特別是在紅外技術領域&am…

class對象【C#】2025復習

對象 西方思想是:復雜的事讓秘書去做就行。老板只需簡單的下達命令。 代碼格式如下 秘書類型 秘書A new 秘書類型(); . 秘書A.開始工作(); // 調用實例對象的方法。 特別注意的是,程序只會用到 秘書A,秘書B&…

Qt程序啟動動畫

一、Qt有3種方式實現程序啟動動畫(介紹) 1、QSplashScreen 靜態圖片(png、jpg等格式) 2、QMovie 動態圖片(gif格式) 3、QAxWidget 視頻(swf格式) 1.QSplashScreen 靜態圖片(png、jpg等格式) //創建啟動動畫類實例 QSplashScreen splash(QPixmap(&qu…

貪心算法經典問題

目錄 貪心思想 一、Dijkstra最短路問題 問題描述: 貪心策略: 二、Prim 和 Kruskal 最小生成樹問題 Prim 算法: Kruskal 算法: 三、Huffman樹問題 問題描述: 貪心策略: 四、背包問題 問題描述&a…

零知開源——STM32F4實現ILI9486顯示屏UI界面系列教程(一):電子書閱讀器功能

本教程將詳細介紹如何在零知增強板上使用3.5寸ILI9486顯示屏實現電子書閱讀器功能。我們將使用LVGL庫構建用戶界面,并實現翻頁、進度顯示等核心功能。 目錄 一、硬件連接 二、軟件UI組件實現 三、零知IDE配置 四、演示效果 五、常見問題解決 六、總結與擴展 一…

支持selenium的chrome driver更新到137.0.7151.119

最近chrome釋放新版本:137.0.7151.119 如果運行selenium自動化測試出現以下問題,是需要升級chromedriver才可以解決的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only s…

架構下的最終瓶頸:數據庫如何破局?

在分布式系統和云原生架構逐漸成熟的當下,我們已能夠靈活擴展計算資源、水平擴展服務節點、拆分業務模塊等。然而,在經歷過多輪架構優化之后,數據庫常常成為系統的“最后瓶頸”。尤其當數據量、并發量、實時性要求劇增時,數據庫即…

湖北理元理律師事務所小微企業債務重組方案:司法與經營的共生邏輯

小微企業債務問題常陷入“救企業還是保老板”的困局。湖北理元理律師事務所為某汽車零部件供應商設計的“經營性債務重組”方案,提供了創新解題思路。 核心矛盾拆解 該企業面臨三重困境: 矛盾類型 具體表現 法律風險等級 擔保鏈危機 老板個人擔保牽…

FastAdmin退出登錄不提示的修改方法

修改退出登錄后的提示行為 在FastAdmin中,默認退出登錄后會顯示"退出成功"的提示信息并跳轉頁面。要實現不顯示提示信息直接跳轉,可以通過以下方式修改: 方法一:修改控制器邏輯 找到application/admin/controller/Log…

工信部發布《中國工業軟件產業發展研究報告(2025)》:PLM壟斷加劇,Ai為國產PLM軟件發展契機

在6月17日上午舉行的2025南京軟件大會開幕式上,工信部電子第五研究所現場發布《中國工業軟件產業發展研究報告(2025)》(以下簡稱《研究報告》),并從工業軟件產業發展現狀、產業發展趨勢,以及我國…

Flutter JSON解析全攻略:使用json_serializable實現高效序列化

引言:為什么我們需要JSON序列化工具? 在現代移動應用開發中,與服務器進行數據交互是必不可少的功能。JSON(JavaScript Object Notation)作為一種輕量級的數據交換格式,因其易讀性、簡潔性和廣泛支持性&…

shelve模塊的使用

shelve模塊的使用 1. 什么是Shelve2. Shelve模塊的數據存儲與讀取3. Shelve的讀取數據4. Shelve模塊的高級操作_ Shelve的數據更新和刪除5. 刪除操作可以使用del語句:6. Shelve的數據查詢和處理_使用for循環來遍歷Shelve對象中的所有鍵值對:7. Shelve模塊…

python大學校園舊物捐贈系統

目錄 技術棧介紹具體實現截圖系統設計研究方法:設計步驟設計流程核心代碼部分展示研究方法詳細視頻演示試驗方案論文大綱源碼獲取/詳細視頻演示 技術棧介紹 Django-SpringBoot-php-Node.js-flask 本課題的研究方法和研究步驟基本合理,難度適中&#xf…

Python爬蟲實戰:研究eventlet庫相關技術

1. 引言 在當今信息爆炸的時代,網絡上的數據量呈現出指數級增長的趨勢。從海量的網絡信息中獲取有價值的數據并進行分析,對于企業決策、學術研究以及個人興趣等方面都具有重要意義。網絡爬蟲作為一種自動化獲取網頁內容的技術手段,應運而生并得到了廣泛的應用。 網絡爬蟲(…