1. 程式人生 > >linux bash shell set 命令詳解

linux bash shell set 命令詳解

        使用set命令可以設定各種shell選項或者列出shell變數.單個選項設定常用的特性.在某些選項之後使用-o引數將特殊特性開啟.在某些選項之後使用+o引數將關閉某些特性,不帶任何引數的set命令將顯示shell的全部變數.除非遇到非法的選項,否則set總是返回ture.

        當BASH shell被呼叫時,可以列出全部的選項.當前的選項集列在$-中.在option引數被處理後,其他的引數被賦值到位置引數中($1,$2,...,$n)

        set [--abefhkmnptuvxldCHP] [-o option name] [arguments ...]

選項            說明
-a              自動向已經修改的變數或為匯出後序命令的變數作出標誌
-b              不是在原提示符之前,而是立即引發終止後臺任務的狀態表表
-e              如果命令帶非零值返回,立即退出
-f              禁止帶副檔名的路徑
-h              定義函式時,定位和儲存函式命令,當函式被執行時,通常查詢
                函式命令
-k              所有的關鍵詞引數,而不只是那些命令名前的關鍵詞引數,被放
                在環境命令中
-m              監視器模式,啟動任務控制.此選項預設支援系統shell互動.後
                臺程序以單獨的程序組執行,在每次完成任務時顯示包含退出的
                狀態行
-n              讀取命令但不執行命令.通常監查shell指令碼的句法錯誤.互動
                shell被忽略

-o option-name 選項名可以是下列之一:
選項    說明
allexport       同-a選項
braceexpand     shell執行花括號擴充套件,在預設情況下起作用
emacs           使用emacs風格命令列編輯介面.除非shell以-noline-editing
                選項啟動,否則當shell互動時,通過預設啟動該選項
errexit         同-e選項
histexpand      同-H選項
ignoreeof       其結果是好像shell命令IGNOREEOF=10被執行
interactive     允許單詞前帶#號,以使得在互動shell中忽略命令列的全部字元
-commands
monitor         同-m選項
noclobber       同-C選項
noexec          同-n選項
noglob          同-f選項
nohash          同-d選項
notify          同-b選項
nounset         同-u選項
physical        同-p選項
posix           改變BASH屬性以匹配標準,預設操作不同於POSIX1003.2標準
verbose         同-v選項
vi              使用vi風格的命令列編輯器
XTRACE          同-x選項,如果沒有給出選項名,顯示當前選項值
-p              開啟特權模式(在此模式,$ENV檔案被處理,不能從環境中繼承
                shell函式.如果是有效使用者ID而不是實使用者組則自動啟動.關閉
                此選項將使得有效使用者和組IDs設定實使用者和組IDs)
-t              在讀取命令並執行之後退出
-u              當執行引數括展時,把非設定變數作為錯誤處理(如果擴充套件企圖
                出現在非設定變數中,shell顯示錯誤資訊.如果不是互動式,則
                帶非凌值退出)
-v              輸入行被讀取時,顯示shell輸入行
-x              在每個簡單命令被擴充套件之後,顯示PS4擴充套件值,之後是要執行的命令
-l              儲存和恢復繫結在命令中的名稱
-d              禁止執行查詢雜湊命令(通常,命令被儲存在散列表中,一旦被找到
                就不再繼續查詢)
-C              效果好像是執行了noclobber=shell命令
-H              使用!風格的歷史替代(當shell互動時,在預設情況下,此選項有效)
-P              如果設定此引數,當執行改變目錄命令cd時,不遵循符號連結,而是
                使用實際的目錄
--              如果在選項後沒有引數,不設定位置引數.否則,即使一些引數以a
                選項開始,也要把位置引數設定為argument
-               結束選項的訊號,將引發其餘的引數被賦值到位置引數中(-x和-v
                選項被關閉.如果沒有argument,位置引數將保留未改變的引數)

轉自:http://www.linuxsir.org/bbs/thread51901.html

今天學習eval命令時,發現了這個問題:

echo "Last argument is $(eval echo \$$#)" a b c d e
這句話本意列印:Last argument is e
但實際列印的是:Last argument is -bash a b c d e

$#一般用在指令碼中的,用在命令列的話就要先使用set設定位置引數,因此修改為如下:

set - a b c d e
echo "Last argument is $(eval echo \$$#)"
Last argument is e

相關推薦

linux bash shell set 命令

        使用set命令可以設定各種shell選項或者列出shell變數.單個選項設定常用的特性.在某些選項之後使用-o引數將特殊特性開啟.在某些選項之後使用+o引數將關閉某些特性,不帶任何引數的set命令將顯示shell的全部變數.除非遇到非法的選項,否則set總是

shell set 命令

用set命令可以設定各種shell選項或者列出shell變數.單個選項設定常用的特性.在某些選項之後-o引數將特殊特性開啟.在某些選項之後使用+o引數將關閉某些特性,不帶任何引數的set命令將顯示shell的全部變數.除非遇到非法的選項,否則set總是返回ture.

Linux shell join命令

Linux join命令 2012-02-09 17:49:00| 分類: SHELL | 標籤:linux join 檔案連線 |字號 訂閱 join命令 功能:“將兩個檔案裡指定欄位同樣的行連線起來”,即依照兩個檔案裡共有的某一列,將相應的行拼接成一行。 join [o

Shell find命令

一個 打印 文件訪問 perm mtime -o 多次 所有者 cut 查找文件find ./ -type f查找目錄find ./ -type d查找名字為test的文件或目錄find ./ -name test查找名字符合正則表達式的文件,註意前面的‘.*’(查找到的文

LinuxLinux定時任務Crontab命令

星期幾 ima 默認 定時 最好 表示 時間 path 配置文件 linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。另 外, 由於使用者自己也可以設置計劃任務,所以, Lin

Linux基礎進程命令

linux運維學習進程有關基礎命令一、進程定義1、進程就是CPU未完成的工作,而且它是其中運行著一個或多個線程的地址空間和這些線程所需要的系統資源。二、Linux系統進程和一些有關進程的命令1、ps命令 ps [options] 1》ps - report a snapshot of the c

【轉載】linux下的mount命令

文件的 flag 自動加載 網絡文件系統 解決問題 選項 lock home 多個參數 以下內容來自:http://blog.csdn.net/clozxy/article/details/5299054 http://linux.chinaunix.net/techdo

Linux上的free命令-收藏

cnblogs sed () 回收 dha 二維數組 版式 nbsp shared 解釋一下Linux上free命令的輸出。   下面是free的運行結果,一共有4行。為了方便說明,我加上了列號。這樣可以把free的輸出看成一個二維數組FO(Free Output)。例如

Linux crontab 定時任務命令

-1 data new ubuntu 時間間隔 服務 run back use Linux Crontab 定時任務 命令詳解 [日期:2016-02-13] 來源:Linux社區 在工作中需要數據庫在每天零點自動備份所以需要建立一個定時任務.我選擇在Linux下使用

Linux定時任務Crontab命令

自動 monthly ons 命名 維護 我們 周期 你在 腳本文件 linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。另 外, 由於使用者自己也可以設置計劃任務,所以, L

Linux文件管理命令及練習

Linux文件管理命令Windows裏對於文件的管理比較直觀,但Linux呢?如何在Linux系統裏創建、復制、移動、刪除文件與目錄呢?這其實是個問題,但隨著學習的進行,這將不再是個問題;一:文件管理類命令名稱?命令的歸納:1、創建文件:? touch? ? ? ? ? ? ? ? ? ? ? ? ? 2、查

Linux自學筆記(4):Linux獲取幫助的命令

Linux獲取幫助的命令詳解 man linux命令幫助的獲取 外部命令:都有一個可執行程序,位於文件系統都目錄下; echo (COMMAND) 內部命令: help COMMAND 外部命令幫助:(1)幫助手冊 COMMAND --help # COMMAND -

Linux三劍客值awk命令

數據處理 程序 package mysq regular 邏輯與 body 相同 導致 一、awk介紹 AWK是一種優良的文本處理工具。它不僅是 Linux 中也是任何環境中現有的功能最強大的數據處理引擎之一。這種編程及數據操作語言(其名稱得自於它的創始人 Alfred A

Linux監控工具vmstat命令

原帖地址:http://www.ha97.com/4512.html 一、前言 很顯然從名字中我們就可以知道vmstat是一個檢視虛擬記憶體(Virtual Memory)使用狀況的工具,但是怎樣通過vmstat來發現系統中的瓶頸呢?在回答這個問題前,還是讓我們回顧一下Linux

Linux之檔案查詢命令

find 查詢檔案 find ./ -type f 查詢目錄 find ./ -type d 查詢名字為test的檔案或目錄 find ./ -name test 查詢名字符合正則表示式的檔案,注意前面的‘.*’(查詢到的檔案帶有目錄) find ./ -regex .*so.*\.gz 查詢目

【轉載】Linux下安裝軟體命令

【轉載日期】2018.09.11 【轉載標題】Linux下安裝軟體命令詳解 ----------------------------------------------------------------------------------------------

linux find和locate命令

linux中find命令優點是能實現精確查詢,缺點對系統資源耗費大。 一:檔案查詢命令,按檔名稱查詢. 官方要求檔名需要加雙引號,保證搜尋的完整性。 find 目錄 -iname " init "(不區分大小寫) find 目錄 -name “init

Linux系統中ls命令

ls命令是linux下最常用的命令。ls命令就是list的縮寫 1. 命令格式: ls [選項,常用引數] [目錄名] 2. 命令功能: 列出目標目錄中所有的子目錄和檔案。 3. 常用引數: -a, –all 列出目錄下的所有檔案,包括以 . 開

Linux 備份壓縮 : zip命令

zip命令可以用來解壓縮檔案,或者對檔案進行打包操作。zip是個使用廣泛的壓縮程式,檔案經它壓縮後會另外產生具有“.zip”副檔名的壓縮檔案。 語法 zip(選項)(引數) 選項 -A:調整可執行的自動解壓縮檔案; -b<工作目錄>:指定暫時存放檔案的目錄

Linux 系統設定 : enable 命令

enable命令用於臨時關閉或者啟用指定的shell內部命令。若要執行的檔名稱與shell內建命令相同,可用enable -n來關閉shell內建命令。若不加-n選項,enable可重新啟動關閉的命令。 linux shell命令執行時,shell總是先在自己的shell