Linux中10個有用的命令行補齊命令

本文由 極客范 - 踏雁尋花 翻譯自 Balakrishnan Mariyappan。歡迎加入極客翻譯小組,同我們一道翻譯與分享。轉載請參見文章末尾處的要求。

在Linux系統中,輸入一個命令,再按兩次TAB鍵,就會列出所有以輸入字符開頭的可用命令。這并不新鮮,很可能你已經知道了這個。這個功能被稱作命令補全。默認情況下,bash命令行可以自動補全文件或目錄名稱。不過,我們可以使bash命令行補全執行更多的操作,通過補全命令可以讓它成就下一個輝煌。

這個教程說明了我們是怎樣使用可編程的命令行補全功能(programmable completion)把自動補全的功能應用于選項或者命令行參數。

例如:在輸入write 命令之后,如果你按兩次TAB按鍵,自動補全功能會提供執行write操作的列表。

在下面的例子中,輸入telnet命令將會顯示可用了主機名:

要讓可編程命令補全功能在你的終端起作用 ,你只需要執行/etc/bash_completion即可,就像下面展示出來的操作:

你也可以取消/etc/bash.bashrc(對于Ubuntu Linux 13.04系統)下面的注釋,這樣,你就可以不需要執行上面的命令了,

如果你沒有發現這些代碼,也沒有找到/etc/bash_completion文件,那么你只需要通過使用apt-get命令來安裝bash_completion 包即可。

1、查看現有的bash補全命令

啟用可編程的bash命令行補全功能,就可以定義一套bash補全命令。命令行補全可以用來定義bash補全命令。

來看一下現有的bash補全功能,使用完整的命令,如下:

選項 -p 是可選擇的。

2、Bash中標準補全的列表

Bash為linux用戶默認提供了下面的標準補全命令。

  1. 變量名補全(Variablename completion)
  2. 用戶名補全(Username completion)
  3. 主機名補全(Hostname completion)
  4. Path路徑補全(Pathname completion)
  5. 文件名補全(Filename completion)

我們已經在更早的一篇文章bash standard completion?中討論了這些。

3、為獲取命令定義補全命令

使用-c參數定義一個補全命令來獲得可使用的命令列表。在下面的例子中,為which命令定義了補全命令,

就像上面看到的,如果按”y”,所有的命令都會顯示出來。

4、為獲得目錄定義補全命令

使用參數d,定義一個只獲得目錄名稱的補全命令,下面的例子中,定義了ls的補全命令

就像上面看到的,連續按兩次TAB,就可以看到目錄名稱。

5、為獲得后臺作業名稱獲得補全命令

通過使用complete命令,把獲得job名稱作為參數是允許的。參數j用來把job名稱作為參數傳到命令行,展示如下:

想要了解更多的后臺任務,可以通過這些案例來了解下如何管理Linux 后臺任務。

6、使用前綴和后綴補全命令

補全命令可以通過被前綴(在后面添加)和后綴(添加在后面)來定義。在下面的例子中,前綴和后綴在list_job_attrib.sh中被定義。

7、具有排除功能的文件名和目錄補全

看看下面的腳本,輸出output 目錄下面的文件:

在上面的例子中,如果你想要排除以.tmp和.o為后綴的文件,實現ls命令的自動補全功能,可以這樣:

FIGNORE 是一個shell變量,它包含了排除在自動補全隊列中的文件的文件名的后綴。

8、通過IFS變量分割String字符串,得到被分割后的值。

單詞表可以通過使用w參數被IFS 變量中定義的字符串分割成多個單詞。最終每個單詞都會被分開,被顯示出來。

如上所述,被IFS分割之后,單詞就會被擴展開,所以也可能有下面展示的這些變量。

9、編寫你自己的函數以實現自動補全功能

你可以聲明一個函數來定義補全功能。使用 -F 參數,被傳入到補全命令的函數名,可以執行并。例如,函數可以寫成下面的樣式。

在上面的函數中,

  1. COMPREPLY :存儲在按下[TAB][TAB]之后打印信息的數組。
  2. COMP_WORDS :在命令行輸入的單詞數組
  3. COMP_CWORD :COMP_WORDS 數組的索引,可以訪問命令行中不用位置的單詞。
  4. compgen :使用-W參數,持有current_arg變量中盡可能完整的、分開的內容。

文件中parser_option 函數通過source執行如下:

這個函數鏈接到腳本解析器如下:

就像上面所看到的,解析器的參數可以通過_parser_options函數生成。

注意:查看/etc/bash_completion文件,了解更多的可編程的命令行補全功能函數。

10、當第一規范沒有進行匹配時,就需要執行第二規范

通過定義的補全規范,沒有進行匹配,那么通過-o參數定義的completion 就會執行。

同上,通過使用_count_files 文件中定義的_count_files 函數定義的completion ,如果_count_files函數沒有進行匹配,那么就會執行目錄補全。
1
2
3
4
5
$ ls
countfiles.sh????dir1/??????dir2/??????dir3/
$./countfiles.sh [TAB][TAB]
dir1????dir2????dir3

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

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

相關文章

分布式開放消息系統 ( RocketMQ ) 的原理與實踐

分布式消息系統作為實現分布式系統可擴展、可伸縮性的關鍵組件,需要具有高吞吐量、高可用等特點。而談到消息系統的設計,就回避不了兩個問題: 消息的順序問題消息的重復問題RocketMQ作為阿里開源的一款高性能、高吞吐量的消息中間件&#xff…

數據結構02-鏈表

說明:由于該數據結構是由java并且是原生實現,所以與C有一些出入,不過原理是相同的 1.鏈表的定義 為了表示線性表元素a與a1的邏輯關系,存儲數據時,除了存儲元素本身的信息之外,還存儲了直接后繼元素的位置信…

第四章 面向對象

第四章 面向對象 1. 基本格式 定義:當函數(業務功能)比較多,可以使用面向對象來進行歸類,如果有一個凡事使用的公共值,也可以放到對象中 #格式&關鍵字 class 類名:def __inti__(self,x)self.x xdef 方法名(self,name):print(…

洛谷P2347 砝碼稱重 某一年noip提高組原題

可以轉化為01背包求方案數的問題&#xff0c;dp數組f[][]表示第幾個砝碼能稱出的重量,可壓縮至一維 轉移方程為f(i,j)f(i-1,j-w[i]) 當前我們可以稱出的重量必定是由之前的砝碼重量轉移過來的 #include<bits/stdc.h> using namespace std; const int N550; const int max…

解決:-bash: unzip: command not found (Linux 中 unZip/Zip 的安裝及使用)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Linux系統沒有自帶的壓縮解壓工具&#xff1b;需要我們自己安裝&#xff1b; 當用到zip或者unzip如果沒有安裝就會出現 unzip: Command…

云計算時代IT專業人員需具備的10項技能

摘要&#xff1a;IT專業人員需要不斷的學習&#xff0c;才能確保自己的工作能力跟上時代的步伐。云時代IT專業人員不僅需要具備一定的專業技能&#xff0c;比如快速運用自身知識快速在互聯網上構建應用程序&#xff0c;還必須具備商業、金融、業務需求分析等等。 【編者按】談…

java自定義注解學習筆記

注解學習筆記之自定義注解 Target&#xff08;{1,2,3,4,5,6,7}&#xff09; 1.ElementType.CONSTRUCTOR:用于描述構造器2.ElementType.FIELD:用于描述域3.ElementType.LOCAL_VARIABLE:用于描述局部變量4.ElementType.METHOD:用于描述方法5.ElementType.PACKAGE:用于描述包6.Ele…

[xsy3132]數表

題意&#xff1a;一個$n\times m$的數表&#xff0c;數值$\in[0,4)$&#xff0c;你可以任意次選擇一行或一列$1,\text{mod }4$&#xff0c;要最小化所有數的和 因為$n\leq10$&#xff0c;所以數表可以看成$m$個$n$位$4$進制數$a_{1\cdots m}$&#xff0c;以下使用不進位加法 定…

linux 下載、安裝 maven

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 創建maven的文件夾并下載maven的tar包到此文件夾中 //進入一個目錄 cd /usr/local//創建一個文件夾 mkdir maven//下載maven的tar包…

ELK4之進階學習

1.精確查找和模糊查找(term和match的區別) match經過分析(analyer)的, term是不經過分詞,直接去倒排索引中查找精確的值. 2.建議器的簡介(最左前綴或者自帶的做) (1)直接用現成的 (2)不只是糾錯,還有建議等等. (3)優點:用戶體驗,服務器減少請求(減少壓力,太耗電了,熱量太大) (4…

女人必知 教你認清6種隱性壞男人

周圍不乏有女朋友喜歡歷數往事、追憶曾擦肩而過的男人&#xff0c;有的說如果不是自己太苛求提早要見他家人引起反感&#xff0c;早就和心愛的人儷影雙雙甜蜜快樂了&#xff0c;還有的說暗戀的男生那一夜向他表露情感、她萬分感動、可男生最后提出上床她拒絕了、因而錯失了一段…

c# 編程學習(二)

2019獨角獸企業重金招聘Python工程師標準>>> 標識符是對程序中的各個元素進行標識的名稱。 ? 只能使用字母(大寫和小寫)、數字和下劃線 ? 標識符必須以字母或下劃線開頭 變量是容納值的存儲位置。可將變量想象成容納臨時信息的容器 命名變量的建議&#xff1a; …

linux 中的 nohup 命令(設置后臺進程): nohup: ignoring input and appending output to ‘nohup.out’

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、Linux 下使用 nohup Unix/Linux下一般比如想讓某個程序在后臺運行&#xff0c;很多都是使用 & 在程序結尾來讓程序自動運行。 …

PowerDesigner表結構和字段大小寫轉換

原文&#xff1a;https://www.cnblogs.com/zhzhang/p/3946609.html 【轉】PowerDesigner表結構和字段大小寫轉換 【轉自】http://blog.csdn.net/xysh1991/article/details/8016192 使用方法&#xff1a;進入PowerDesigner&#xff0c;打開一個PDM&#xff0c;在菜單欄找到&…

解決:Could not find or load main class org.apache.rocketmq.example.quickstart.Producer

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.情景描述 &#xff1a;我只是想安裝運行 rocketmq&#xff0c;執行命令&#xff1a; sh bin/tools.sh org.apache.rocketmq.example.…

深入理解C++ 虛函數表

目錄 深入理解C 虛函數表虛函數表概述單繼承下的虛函數表派生類未覆蓋基類虛函數派生類覆蓋基類虛函數多繼承下的虛函數表無虛函數覆蓋派生類覆蓋基類虛函數鉆石型虛繼承總結幾個原則安全性問題深入理解C 虛函數表 ? C中的虛函數的作用主要是實現了多態的機制。關于多態&#…

react-native-baidu-map使用及注意問題

使用組件&#xff1a; react-native-baidu-map 獲取百度地圖API_KEY 地址&#xff1a;lbsyun.baidu.com&#xff0c;在控制臺成功創建應用后&#xff0c;就可以看到應用的api key了 安裝 yarn add react-native-baidu-map 復制代碼原生部分 Android配置 react-native link reac…

簡單掃清身體垃圾

“我們的身體在被‘設計’之初&#xff0c;就擁有了自主掃除體內垃圾的功能。只不過&#xff0c;這需要我們按照正確的方法去激發它 。”美國暢銷書作者喬斯卡曼和朱莉佩萊斯&#xff0c;在她們去年合著的《自我清潔》一書中強調了養成良好生活習慣可為身體排毒的重要性。 近日…

linux (阿里云 CentOS7) 中安裝配置 RocketMQ

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 JDK1.8的安裝&#xff1a; 1.檢查系統的JDK版本 根目錄下操作&#xff1a;cd java -version 2.檢測JDK安裝包 rpm -qa | grep ja…

Bootstrap簡介

1.使用準備 1.1 Bootstrap的下載 http://www.bootcss.com&#xff0c;下載用于生產環境的Bootstrap即可。 1.2 Bootstrap包含的內容 ● 全局CSS&#xff1a;基本的 HTML 元素均可以通過 class 設置樣式并得到增強效果&#xff1b;還有先進的柵格系統。 ● 組件&#xff1a;無數…