@php
符號 | 做用 |
---|---|
「*」 | 匹配任意多個,單個字符。 (經常使用) |
? | 匹配一個字符。 (幾乎不用) |
[abcd] | 匹配其中的單個字符 |
[a-z] | 匹配其中的單個字符 |
[!abcd] | 匹配其中的單個字符 (取反) |
Linux特殊符號:路徑和位置相關 | |
~ | 用戶家目錄 |
. | 表明當前目錄 |
「-」 | 表明上一次(至關於當前路徑)用戶所在的路徑 |
.. | 表明上級目錄 |
Linux特殊符號:引用字符串命令相關 | |
單引號(’’) | 所見即所得,被 ’’的內容不會發生變化 |
雙引號(「」) | 會解析變量或命令,在輸出,和不加引號相同「」表示一個總體 |
反引號(``) | 引用命令能夠解析命令,至關與$() |
空格 | 賦值時,若是變量內容又空格會賦值不完整。而在輸出內容時,會將含有空格的字符串視爲一個總體輸出,若是內容中有命令(要反引下)、變量等,會先把變量、命令解析出結果,而後輸出最終內容,若是字符串中帶有空格等特殊字符,則有可能沒法完整的輸出,所以須要改加雙引號,通常連續的字符串、數字、路徑等能夠不加任何引號賦值和輸出,不過無引號的狀況最好用雙引號替代之,特別是變量賦值時 |
**Linux特殊符號:其餘 ** | |
; | 表示一個命令的結束,分隔命令 |
「#」 | 註釋 |
$ | 1. 字符串前加$,表明字符串變量內容 2. 普通用戶提示符 |
\ | 逃脫符,轉譯符 |
{} | 1. 生成序列 2. 變量中表示分割做用 |
! | 1)在Bash中表示非,取反的意思 同^ 2)在vi/vim中表示強制 3)「!ls」 表示找出最近一次以ls開頭的命令並運行 |
| | 將管道前邊的命令經過管道交給後邊的命令進一步處理 |
& | 將程序放入後臺運行符 |
&& | 前一個命令執行成功,在執行後面一個命令 |
Linux特殊符號:重定向系列特殊字符 | |
0 | 表示標準輸入(stdin),配合<或<<使用,數據流從右向左 |
1 | 表示標準輸出(stdou),配合>或>>使用,數據流從左向右 |
2 | 標準錯誤(stderr),配合>或>>使用,數據流從左向右 |
0<或< | 標準輸入重定向,清空已有內容,數據從文件流向處理的命令 |
0<<或<< | 追加輸入重定向,追加內容到底部,數據從文件流向處理命令 |
1>或> | 標準輸出重定向,正常輸出重定向到文件,會清空已有內容 |
1>>或>> | 標準輸出追加劇定向,將內容追加到文件底部,不清空已有內容 |
2> | 錯誤輸出重定向,將標準錯誤內容重定向到文件,如文件存在內容則清空 |
2>> | 錯誤輸出追加劇定向,將標準錯誤內容追加到文件底部,不會清空已有內容 |
「>/dev/null" | 黑洞 |
2>&1 &> | 錯誤正確一塊兒追加的符號 |
做用 命令的分隔符 分隔多條命令linux
無論前面的命令是否執行成功都會繼續日後執行shell
案例 如何在shell中用一行來執行 mkdir oldboy touch oldboy/test.txt rm oldboy/test.txtvim
[root@backup data]# mkdir -p /root/oldboy;touch /root/oldboy/test.txt;rm /root/oldboy/test.txt rm:是否刪除普通空文件 "/root/oldboy/test.txt"? [root@backup ~]# ll 總用量 4 drwxr-xr-x 2 root root 4096 1月 21 21:10 data drwxr-xr-x 2 root root 22 1月 21 21:17 oldboy
&&bash
做用 前面命令必須執行成功 在執行後面的命令 不然不會執行後面的命令code
錯誤進程
[root@backup ~]# ll 123 && mkdir old ls: 沒法訪問123: 沒有那個文件或目錄
正確ip
[root@backup ~]# ls data/ && mkdir old vmware-vmsvc.log ks-script-AShK6w.log vmware-network.1.log X.log ks-script-nf4aZ1.log vmware-network.2.log yum.log [root@backup ~]# ll 總用量 4 drwxr-xr-x 2 root root 4096 1月 21 21:10 data drwxr-xr-x 2 root root 6 1月 21 21:26 old drwxr-xr-x 2 root root 22 1月 21 21:17 oldboy
: 和&結合使用字符串
[root@backup ~]# touch oldboy.txt ; ll -d data/ && touch du.txt drwxr-xr-x 2 root root 4096 1月 21 21:10 data/ [root@backup ~]# ll 總用量 4 drwxr-xr-x 2 root root 4096 1月 21 21:10 data -rw-r--r-- 1 root root 0 1月 21 21:28 du.txt drwxr-xr-x 2 root root 6 1月 21 21:26 old drwxr-xr-x 2 root root 22 1月 21 21:17 oldboy -rw-r--r-- 1 root root 0 1月 21 21:28 oldboy.txt
做用 前面的命令必須執行失敗 在執行後面的命令it
[root@backup ~]# ll qwe || mkdir du ls: 沒法訪問qwe: 沒有那個文件或目錄 [root@backup ~]# ll 總用量 4 drwxr-xr-x 2 root root 4096 1月 21 21:10 data drwxr-xr-x 2 root root 6 1月 21 21:31 du
& Linux系統中 把當前的進程放入後臺使用
引號的區別:
不加引號 | 能夠解析變量 | 同加引號相同 |
---|---|---|
雙引號 | 能夠解析變量 | 把不連續的內容做爲一個字符串 |
單引號 | 不能夠解析變量 | 所見即所得 |
案例
[root@backup ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
案例
[root@backup ~]# echo "$PATH" /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
==案例 ==
[root@backup ~]# echo '$PATH' $PATH
==案例 ==
查找全部的任意字符開頭以.txt結尾的文件
[root@backup ~]# ls *.txt du.txt oldboy.txt 查找全部的old開頭的文件 [root@backup ~]# ls old* oldboy.txt old: oldboy: test.txt 查找全部以old開頭而且.txt結尾的 [root@backup ~]# ll old*.txt -rw-r--r-- 1 root root 0 1月 21 21:28 oldboy.txt [root@backup ~]# find ./ -type f -name 'old*.txt' ./oldboy.txt
[root@backup ~]# ll d?.txt -rw-r--r-- 1 root root 0 1月 21 21:28 du.txt
做用 匹配期中單個字符
[root@oldboy-lnb ~/20210118]#ll [a-z][a-z][a-z][0-9][0-9].txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu00.txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu01.txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu02.txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu03.txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu04.txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu05.txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu06.txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu07.txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu08.txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu09.txt -rw-r--r-- 1 root root 0 Jan 21 11:55 stu10.txt
做用 : 能夠生成系列 變量中表示分隔做用
[root@oldboy-lnb ~/20210118]#echo oldboy.txt{,.bak} oldboy.txt oldboy.txt.bak [root@oldboy-lnb ~/20210118]#cp oldboy.txt{,.bak} [root@oldboy-lnb ~/20210118]#ll oldboy.txt{,.bak} -rw-r--r-- 1 root root 0 Jan 21 12:06 oldboy.txt -rw-r--r-- 1 root root 0 Jan 21 12:21 oldboy.txt.bak
[root@backup ~]# ll [!ol]* -rw-r--r-- 1 root root 0 1月 21 21:28 du.txt data: 總用量 2536 -rw------- 1 root root 34270 1月 21 20:33 anaconda.log -rw------- 1 root root 427157 1月 21 20:33 audit.log -rw------- 1 root root 37274 1月 21 20:33 boot.log -rw------- 1 root root 5465 1月 21 20:33 ifcfg.log -rw------- 1 root root 1607656 1月 21 20:33 journal.log -rw------- 1 root root 0 1月 21 20:33 ks-script-AShK6w.log -rw------- 1 root root 0 1月 21 20:33 ks-script-nf4aZ1.lo [root@oldboy-lnb ~/20210118]#ll [!!so]* -bash: !so]*: event not found
[root@oldboy-lnb ~/20210118]#ll [!\!so]* -rw-r--r-- 1 root root 0 Jan 21 12:11 1 -rw-r--r-- 1 root root 0 Jan 21 12:11 123 -rw-r--r-- 1 root root 41 Jan 21 12:06 1.txt -rw-r--r-- 1 root root 0 Jan 21 12:06 awk-oldboy -rw-r--r-- 1 root root 0 Jan 21 12:06 lidao-oldboy.txt
標 通配符 匹配查找文件名稱 全部命令都支持
正則在普通命令中不支持 可是通配符在正則中有特殊含義
做用:對文件的內容進行處理操做
">" | 標準正確輸出重定向,先清空後寫入 |
---|---|
2> | 標準錯誤輸出重定向 |
">>" | 標準錯誤追加輸出重定向 |
2>> | 標準錯誤追加輸出重定向 |
0 | 表示標準輸入(stdin),配合<或<<使用,數據流從右向左 |
1 | 表示標準輸出(stdou),配合>或>>使用,數據流從左向右 |
2 | 標準錯誤(stderr),配合>或>>使用,數據流從左向右 |
0<或< | 標準輸入重定向,清空已有內容,數據從文件流向處理的命令 |
0<<或<< | 追加輸入重定向,追加內容到底部,數據從文件流向處理命令 |
1>或> | 標準輸出重定向,正常輸出重定向到文件,會清空已有內容 |
1>>或>> | 標準輸出追加劇定向,將內容追加到文件底部,不清空已有內容 |
2> | 錯誤輸出重定向,將標準錯誤內容重定向到文件,如文件存在內容則清空 |
2>> | 錯誤輸出追加劇定向,將標準錯誤內容追加到文件底部,不會清空已有內容 |
" >/dev/null" | 黑洞 |
2>&1 &> | 即標準錯誤和標準輸出同樣重定向到文件中 |
echo 標準正確輸出重定向,先清空後寫入
[root@cs /]# echo oldboy > oldboy.txt 輸入內容到文件中 [root@cs /]# cat oldboy.txt oldboy [root@cs /]# echo test > oldboy.txt [root@cs /]# cat oldboy.txt test 覆蓋了oldboy
echo 錯誤輸出重定向
[root@cs /]# ll hahha.txt > oldboy.txt ls: 沒法訪問hahha.txt: 沒有那個文件或目錄 [root@cs /]# ll 3.txt 2> oldboy.txt 錯誤輸出重定向 [root@cs /]# cat oldboy.txt ls: 沒法訪問3.txt: 沒有那個文件或目錄
echo 正確追加劇定向
[root@cs /]# echo oldboyjj >> oldboy.txt 追加內容到 oldboy.txt [root@cs /]# cat oldboy.txt ls: 沒法訪問3.txt: 沒有那個文件或目錄 oldboyjj
echo 錯誤追加劇定向
[root@cs /]# llll 1.txt 2>> oldboy.txt 把報錯內容追加到oldboy.txt [root@cs /]# cat oldboy.txt ls: 沒法訪問3.txt: 沒有那個文件或目錄 oldboyjj -bash: llll: 未找到命令
echo 同時接收正確和錯誤信息
[root@cs /]# echo hahch > oldboy.txt 2>oldboy.txt [root@cs /]# [root@cs /]# cat oldboy.txt hahch [root@cs /]# echo hahh >> oldboy.txt 2>> oldboy.txt lll [root@cs /]# cat oldboy.txt hahch hahh lll root@cs /]# ech gagag >> oldboy.txt 2>>oldboy.txt [root@cs /]# cat oldboy.txt hahch hahh lll -bash: ech: 未找到命令
第二種方式:
[root@cs /]# ech heheh >> oldboy.txt 2>&1 [root@cs /]# cat oldboy.txt hahch hahh lll -bash: ech: 未找到命令 -bash: ech: 未找到命令
第三種方法
[root@cs /]# echo hahah &>> oldboy.txt [root@cs /]# cat oldboy.txt hahch hahh lll -bash: ech: 未找到命令 -bash: ech: 未找到命令 hahah
Ps : 建議使用第三種