5 種方法重覆執行歷史命令

来源:https://www.cnblogs.com/yychuyu/archive/2020/06/14/13124624.html
-Advertisement-
Play Games

Linux 下,如果要執行一條或多條之前輸過的指令,要怎麼處理?很多人會想到使用上下箭頭去翻查歷史輸入的命令。這當然是可以了,除了這種方法,本文再介紹另外 5 種方法來實現這樣的效果。 在正式開始之前,我們先隨便執行幾條命令,便於後面演示。為了節約篇幅,執行結果暫時不列出來。 $ ls -l $ p ...


Linux 下,如果要執行一條或多條之前輸過的指令,要怎麼處理?很多人會想到使用上下箭頭去翻查歷史輸入的命令。這當然是可以了,除了這種方法,本文再介紹另外 5 種方法來實現這樣的效果。

在正式開始之前,我們先隨便執行幾條命令,便於後面演示。為了節約篇幅,執行結果暫時不列出來。

$ ls -l
$ pwd
$ date
$ uname -a

方法1:!!

沒錯,兩個嘆號也是一條命令,它會重覆執行最後執行的那條命令。

$ !!

這條命令等同於如下效果:

$ !!
uname -a
Linux VM_0_16_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

如果需要 root 許可權,同樣只需在前面加 sudo 即可。

$ sudo !!

方法2:!un

假如我們在操作的過程中輸入了非常多的命令,現在要重覆執行其中的一條,該怎麼處理?有一種簡單的方法,就是利用上下箭頭去翻查,但如果之前輸入了太多命令,翻查起來可以要找半天。

這時候,!un 這種命令就顯現出它的作用來了。記住,這個 un 不是固定的,它是代表你想要重覆輸入的命令的前幾個字元。

比如在這個常式中,我們想重覆執行 uname -a 這條命令,只需這樣執行:

$ !un
uname -a
Linux VM_0_16_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

如果你之前輸入的命令有多個是以 un 開頭的,那麼你可能需要多輸入幾個字元。

$ !uname

方法3:!-1

這個方法就比較靈活了,!-1 代表重覆執行最後一條命令,!-2 表示重覆執行倒數第二條命令,!-n 表示重覆執行倒數第 n 條指令。

$ !-1
uname -a
Linux VM_0_16_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ !-3	# 註意,前面的 !-1 也算一條指令,所以倒數第 3 條指令是 date ,而不是 pwd
date
Sun May 19 18:30:26 CST 2019

方法4:ctrl+r

ctrl+r 這個快捷鍵可以讓你搜索你之前輸入過的所有的命令。其實良許更喜歡這個快捷鍵,因為它會讓你看到你將要執行的命令。而如果是 !! 命令的話,它是直接執行最後一條命令。如果這條命令是安全的還好,要是像 rm -rf /* 這樣的命令,那就悲劇了。

假如我現在要重覆執行 uname -a ,我們可以先按一下 ctrl+r 這個組合鍵,然後再依次敲入 ‘u' 'n' 'a' ,如果之前輸入的命令比較少的話,基本只需敲一個 u 或 n 就可以找到你要輸入的命令了。

(reverse-i-search)`u': uname -a

找到之後,再敲一下回車,即可重覆執行你要輸入的命令了。

假如說你要對找到的那條命令進行一些小修改,那麼只需敲一下左或右的箭頭即可。

方法5:ctrl+p 或 ctrl+n 配合 ctrl+o

如果你是懶癌晚期,不想再敲任何字母,只想翻查找到想要的命令並執行,要怎麼操作?

前面提到,翻查歷史輸入的命令,可以使用上下箭頭。但這不是最高效的,我們可以使用 ctrl+p 和 ctrl+n 來達到同樣的效果。這樣更高效,因為你的手不用抬起來並移動到箭頭區。

通過 ctrl+p/n 的組合鍵找到想要的命令之後,我們可以按 ctrl+o 來執行這條命令。這個組合鍵與回車不太相同,因為它除了回車之外,還另外跳轉到最後一條命令。通過不斷地 ctrl+p/n ,然後 ctrl+o ,就可以高效的重覆執行你要執行的命令了。

小結

重覆執行之前執行過的命令在我們的工作中非常經常用到。如果命令比較短還好,再輸一遍也花不了多少時間。而如果命令很長,那再重覆輸入就比較耗時間了,效率也比較低。除了使用上下箭頭之外,我們還有很多方法去實現同樣的效果。將這些技巧掌握了,肯定會大大提升你的工作效率!


公眾號:良許Linux

有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 看了看原生UWP的ScrollViewer,滑動很流暢(例如 開始菜單),但是WPF自帶的ScrollViewer滾動十分生硬.. 突發奇想,今天來實現一個流暢滾動的ScrollViewer. 一、目標 查閱網上的實現方法,要麼直接重寫控制項,要麼一堆Storyboard..很是無奈,還有些許bug. ...
  • 無論是開發app還是網站,可能都需要一個廣告功能,比如我們常見的在首頁有個輪播廣告,裡面會輪播顯示多個圖片。還有比如一個新聞門戶網站 很常見的 banner橫幅廣告,還有js特效廣告等。本篇說說在abp(5.9)中如何實現廣告模塊。 源碼地址:https://gitee.com/bxjg1987/a ...
  • 一:背景 1. 講故事 上一篇跟大家聊到了Target-typed new 和 Lambda discard parameters,看博客園和公號里的閱讀量都達到了新高,甚是欣慰,不管大家對新特性是多頭還是空頭,起碼還是對它抱有一種極為關註的態度,所以我的這個系列還得跟,那就繼續開擼吧,今天繼續帶來 ...
  • 系列文章 基於 abp vNext 和 .NET Core 開發博客項目 - 使用 abp cli 搭建項目 基於 abp vNext 和 .NET Core 開發博客項目 - 給項目瘦身,讓它跑起來 基於 abp vNext 和 .NET Core 開發博客項目 - 完善與美化,Swagger登場 ...
  • 痞子衡剛剛拿到i.MXRT1170 B0版本的晶元,迫不及待地在上面跑了一些A0版本上早已驗證過的demo,功能一切正常,沒有什麼額外遷移工作。因為目前只有B0版本晶元,沒有配套EVK,所以痞子衡是在RT1170內部Validation板上做測試的(RT主晶元以及Flash晶元全部放在Socket里... ...
  • [root@minimal html]# locate mysql.log locate: 無法執行 stat () `/var/lib/mlocate/mlocate.db': 沒有那個文件或目錄 解決方案: updatedb 再次測試: [root@minimal html]# locate n ...
  • 上一篇文章講了 Nginx 中的變數和運行原理,下麵就來說一個主要提供變數並修改變數的值的模塊,也就是我們要講的防盜鏈模塊:referer 模塊。 簡單有效的防盜鏈手段 場景 如果做過個人站點的同學,可能會遇到別人盜用自己站點資源鏈接的情況,這就是盜鏈。說到盜鏈就要說一個 HTTP 協議的 頭部,r ...
  • 背景 Read the fucking source code! --By 魯迅 A picture is worth a thousand words. --By 高爾基 說明: Kernel版本:4.14 ARM64處理器,Contex-A53,雙核 使用工具:Source Insight 3. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...