反向刪除文件, 參考這篇文章. http://blog.csdn.net/web_go_run/article/details/46009723 shopt是設置shell的全局選項 shopt -p 打印所有選項 shopt -s 打印已經打開on的選項 | shopt -s extglob 則是打開某個選項(extglob是在shell中可以使用 正則的意思) shopt -u 顯示off選項 | shopt -u extglob 關閉某個選項 shopt -s cdspell 即使拼寫錯誤也可以進入該目錄:
==================================================================
有些命令可以一次操作多個文件, 因此可誒使用通配符/正則, 而有些命令則不可以使用通配符, 如 rpm -e ab*(會報錯...)
命令中的參數通常使用 [大寫單詞], 允許使用多個參數或選項的, 用省略號表示: 如: rm [OPTION]... [FILE]...
!!!!!!!!!!!!!!!!!! 因此, 結合上面的兩點, 反向刪除某個目錄下的文件:
rm -rf !(install_flash...) rm -rf !(file1|file2)
=================================================================== xargs: 根據這個命令的名字, 就可以知道它的含義了:
x: transmit 傳遞, args: 多個參數, 正是: 向命令(不能帶多個參數的命令, 如rpm -e)傳遞多個參數, 循環遍歷處理. xargs 就相當於一個for循環.
反向刪除文件: ls | grep -v 'install_falsh' | xargs rm -rf
上面的ls命令, 可以用find來代替, 這樣就不只是局限在當前目錄了: find /opt/install_flash | grep -v 'install_flash' | xargs rm
=============================================================== !感嘆號執行歷史命令? 歷史命令的倒過來數是從最后一條的-1開始計算. strpos等函數都是這樣的; 在歷史命令列表中, 從頭開始數起, 某一條命令的排序數字是不變的. 感嘆后面不能加 空格, 否則, 會認為后面的數字是一個命令, 而報錯...
感嘆號的作用主要有倆個: [參考文章: https://linux.cn/article-5608-1.html]
是執行歷史命令: !-1 ==!!,
!str : 歷史命令中, 以str開頭的命令 !?str?: 用??來表示"引號"包含... 這個配合ctrl+r來調用歷史命令...
是獲取上次命令的參數: !^, !command_name:param_num
!!是執行上一次的命令. 這個特別是在"permission denied"的情況下切換root用戶執行剛才命令的時候有用!
- 當以普通用戶執行系統管理命令的時候, 會受到權限禁止, 這時候,就要切換到root;
- 但是切換到root用戶后, 你是無法用ctrl+p, up箭頭調出剛才執行的命令的,因為每個賬戶都有自己的bash_history文件 所以這時候, 可以在切換賬戶的同時, 附帶使用 -c !! (切換root的同時執行剛才普通用戶最后執行的命令)
su 如果不加用戶名的話, 默認的就是切換到root賬戶.
如下圖所是: if
??為什么使用su -c !!命令的時候會提示: "/etc/sudoers" 用戶不存在 如下圖所示:
- 可以看到參數-c說的是, 只能執行一個單命令 "a single command"
- 也就是說, -c后面只能有一個"參數", 只能有一個空格, 再后面空格后的那個參數就會當做是 "user".
- 因此, 如果你執行的命令中不只 包含 一個空格如 : vi /etc/sudoers, 那么, 它只執行vi命令, 而/etc/sudoers則會被當作用戶.
- 所以 如果你要執行像上面的命令時, 要用雙引號把命令括起來. 至於使用!! , 要看前面的命令時什么, 根據實際情況, 來決定是否添加雙引號.
- 因為shell會首先將命令進行替換, 然后再執行!
===========================================================
除了方向鍵上,還可以用“!!”代表上一條輸入的命令,用這個的好處在於可以將這兩個字符放在命令行任何位置以便於構成新的命令。
例如:
$./some-shell-command
$cat !!
則后一條命令就相當於cat ./some-shell-command,這樣做比先按方向鍵上回退一條命令,然后定位到開始,插入cat要快捷得多。