01 系統(tǒng)特殊符號(hào)
網(wǎng)站設(shè)計(jì)制作過(guò)程拒絕使用模板建站;使用PHP+MYSQL原生開(kāi)發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺(tái)管理系統(tǒng);成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營(yíng)了十多年的成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。
02 系統(tǒng)通配符號(hào)
03 系統(tǒng)正則符號(hào)
說(shuō)明: 查詢信息的時(shí)候,會(huì)帶來(lái)便利
1) 基礎(chǔ)符號(hào)系列
? $?
? a 調(diào)取變量信息
? b 區(qū)分用戶類型? $ 普通用戶
? c 結(jié)合awk對(duì)文件進(jìn)行取列 ?
xargs -n 2 test01.txt|awk '{print $2}'
!
a 強(qiáng)制的作用? wq!
b 可以實(shí)現(xiàn)取反
awk '!/oldgirl/' test02.txt (排除oldgirl)
find /oldboy_dir/ ! -type f (排除文件)
c !信息? 可以快速調(diào)取執(zhí)行歷史命令(慎用)
cat ~/.bash_history? -- 記錄歷史命令信息, 但是不會(huì)實(shí)時(shí)記錄
history? ? ? ? ? ? ? -- 顯示所有輸入過(guò)的歷史命令
|
a 實(shí)現(xiàn)管道功能
將前一個(gè)命令執(zhí)行的結(jié)果交給管道后面的命令進(jìn)行處理
一般管道符號(hào) 會(huì)經(jīng)常和xargs命令配合使用
批量刪除操作
find /oldboy -type f -name "oldboy*.txt"|xargs rm
find /oldboy_dir/ -type f -delete
find /oldboy_dir/ -type f -exec rm -f {} \;
查找指定數(shù)據(jù)信息進(jìn)行復(fù)制
find /oldboy -type f -name "oldboy*.txt" |xargs -i cp {} /oldgirl/
find /oldboy -type f -name "oldboy*.txt" |xargs cp -t /oldgirl/
find /oldboy -type f -name "oldboy*.txt" -exec cp -a {} /oldgirl \;
查找指定數(shù)據(jù)信息進(jìn)行移動(dòng)
find /oldboy -type f -name "oldboy*.txt" |xargs -i mv {} /oldgirl/
find /oldboy -type f -name "oldboy*.txt" |xargs mv -t /oldgirl/
find /oldboy -type f -name "oldboy*.txt" -exec mv {} /oldgirl \;
xargs(火眼金睛)后面跟的命令,不識(shí)別別名信息
#
a 表示對(duì)配置文件信息進(jìn)行注釋
b 表示用戶的身份信息 超級(jí)管理員用戶
2) 引號(hào)符號(hào)系列
? "" 基本上和單引號(hào)功能類似 但是可以對(duì)一些特殊符號(hào)做出解析? $ `命令`==$(命令)
? '' 里面編寫的什么內(nèi)容就輸出什么內(nèi)容? 所見(jiàn)即所得
作用:
01. 指定需要輸出的信息
02. 利用引號(hào)將空格分隔的信息匯總為一個(gè)整體
``($()) 將引號(hào)里面命令執(zhí)行結(jié)果,交給引號(hào)外面命令進(jìn)行使用 ?
3) 重定向符號(hào)
/1? 標(biāo)準(zhǔn)輸出重定向符號(hào)
/1 標(biāo)準(zhǔn)輸出追加重定向符號(hào)
2 錯(cuò)誤輸出重定向符號(hào)
2 錯(cuò)誤輸出追加重定向符號(hào)
標(biāo)準(zhǔn)輸入重定向符號(hào)
? tr xargs
標(biāo)準(zhǔn)輸入追加重定向符號(hào)
4) 邏輯符號(hào)系列
邏輯: 在完成一件事情的時(shí)候,有合理先后順序
前一個(gè)命令操作執(zhí)行成功了,再操作執(zhí)行后面的命令
||? 前一個(gè)命令操作執(zhí)行失敗了,再操作執(zhí)行后面的命令
mkdir /old_dir echo "create dir sucess" || echo "create dir failed"
? create dir sucess
? mkdi /old_dir echo "create dir sucess" || echo "create dir failed"
? -bash: mkdi: command not found
? create dir failed
什么通配符號(hào): 用于匹配文件名稱信息, 便于快速查找文件信息 find
*? 匹配所有信息
? find /oldboy -type f -name "oldboy*"? ---以oldboy開(kāi)頭的信息都查詢出來(lái)
find /oldboy -type f -name "*oldboy"? ---以oldboy開(kāi)頭的信息都查詢出來(lái)
find /oldboy -type f -name "oldgirl*oldboy"?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ---以oldgirl 開(kāi)頭的信息
以oldboy? 結(jié)尾的信息都查詢出來(lái)
{} 產(chǎn)生序列信息
連續(xù)序列:
echo {01..05}
? ? echo {a..z}
? ? echo {A..Z}
生成不連續(xù)序列
a 有規(guī)律的不連續(xù)序列
echo {01..05..2}
? ? 01 03 05
? ? echo {a..z..2}
? b 沒(méi)規(guī)律的不連續(xù)序列
echo {www,bbs,blog}
? ? www bbs blog
生成組合序列
? ? echo {1,2}{a,b}
? ? 1a 1b 2a 2b
? ? echo {1,2}{a,b}{A,B}
? ? 1aA 1aB 1bA 1bB 2aA 2aB 2bA 2bB
echo A{a,b}
? ? Aa Ab ?
A=oldboy.txt
? echo oldboy.txt{a,b} ?
? oldboy.txta oldboy.txtb ?
echo A{,b}
? A Ab
A=oldboy.txt
b=.bak
cp oldboy.txt{,.bak} == cp oldboy.txt oldboy.txt.bak
快速備份文件命令
cp oldboy.txt{,.bak}
快速還原數(shù)據(jù)方法
cp oldboy.txt{.bak,}
echo A{B,}
? AB A
oldboy.txt{.bak,} == cp oldboy.txt.bak oldboy.txt
基礎(chǔ)正則符號(hào):basic regular expression? ? (BRE)
擴(kuò)展正則符號(hào):extended regular expression (ERE)
基礎(chǔ)正則符號(hào):
a 尖角符號(hào):^
? 以什么開(kāi)頭的信息進(jìn)行過(guò)濾出來(lái)
grep -v "^#" nginx.conf.default nginx.conf(對(duì)不需要關(guān)注的信息取反)
常見(jiàn)錯(cuò)誤
find / -type f -name "^oldboy"? 錯(cuò)誤
find / -type f -name "oldboy*"? 正確
b 美元符號(hào):$
以什么結(jié)尾的信息進(jìn)行過(guò)濾出來(lái)
以m結(jié)尾信息, 并且顯示上1行 和 下2行的信息
? grep "m$" -A 2 -B 1 test.txt
? 常見(jiàn)錯(cuò)誤:
如果過(guò)濾不出來(lái),確認(rèn)每行結(jié)尾是否有空格信息
方法一:
cat -A test.txt
方法二
? vim 底行模式輸入命令 --- :set list
c 尖角美元符號(hào):^$
? 取出文件中空行信息
? grep "^$" test.txt
? grep -v "^$" test.txt
d 點(diǎn)符號(hào): .
表示匹配任意一個(gè)且只有一個(gè)字符
grep "." test.txt? -o(更直觀的顯示過(guò)程)
e 星號(hào)符號(hào): *
匹配星號(hào)前面一個(gè)字符連續(xù)出現(xiàn)0次或多次
f 點(diǎn)和星號(hào)組合: .*
? 匹配所有信息
說(shuō)明: 正則符號(hào)在匹配數(shù)據(jù)信息的時(shí)候具有貪婪特性
避免貪婪特性的方法,是在指定一行信息中唯一節(jié)點(diǎn)信息
g 轉(zhuǎn)譯符號(hào): \
1) 將一些有意義的符號(hào)進(jìn)行轉(zhuǎn)譯, 變?yōu)橐粋€(gè)普通符號(hào)
grep "\.$" ~/oldboy_test.txt
2) 將一些沒(méi)有意義的符號(hào)進(jìn)行轉(zhuǎn)譯,變?yōu)橛幸饬x符號(hào)
\n? 換行符號(hào) linux
3) 可以將擴(kuò)展正則符號(hào)轉(zhuǎn)換成普通正則讓grep sed命令可以直接識(shí)別'
grep "o\?" test.txt
h 括號(hào)符號(hào):[]
匹配括號(hào)中每一個(gè)字符,并且匹配的關(guān)系是或者的關(guān)系
需求: 找出文件中oldboy 和 oldbey兩個(gè)單詞信息
? grep "oldb[oe]y" test.txt
? 企業(yè)應(yīng)用: 找尋文件中字母 數(shù)字信息
? grep "[0-9a-zA-Z]" test.txt
i 尖號(hào)和中括號(hào)組合使用 : [^]
對(duì)中括號(hào)里面匹配的字符信息進(jìn)行排除
grep? "[^0-9a-zA-Z]" test.txt? --- 將字母數(shù)字都排除,只留下符號(hào)信息
尖號(hào)和中括號(hào)組合使用 : ^[]
以中括號(hào)里面匹配的字符作為一行開(kāi)頭的字符
? grep "^[zx]" test.txt
正則符號(hào)注意事項(xiàng)
按照每行信息進(jìn)行過(guò)濾處理
注意正則表達(dá)符號(hào)禁止中文
附上顏色信息進(jìn)行正則過(guò)濾 --color=auto/--color
基礎(chǔ)正則符號(hào)可以被三劍客命令直接識(shí)別 grep sed awk
擴(kuò)展正則符號(hào)不可以被三劍客命令中老二和老三直接識(shí)別
sed命令想識(shí)別正則符號(hào): sed -r
grep命令想識(shí)別正則符號(hào): egrep / grep -E
a 加號(hào)符號(hào):+
匹配加號(hào)前面一個(gè)字符連續(xù)出現(xiàn)1次或者多次
b 豎線符號(hào):|
或者關(guān)系符號(hào)
egrep "oldboy|oldbey" test.txt
c 括號(hào)符號(hào):()
將多個(gè)字符信息進(jìn)行匯總為一個(gè)整體
egrep "(oldboy)" test.txt
進(jìn)行后向引用前向的一個(gè)操作(sed)
echo "123456"|sed -r "s#(..)(..)(..)#\1\2\3#g"
修改配置文件內(nèi)容
sed -rn "s#(^S.*UX=).*#\1enforcing#gp" /etc/selinux/config
SELINUX=enforcing
d 括號(hào)符號(hào):{}
指定花擴(kuò)號(hào)前一個(gè)字符連續(xù)匹配多少次
* 連續(xù)匹配 0 次 或 多次
+ 連續(xù)匹配 1 次 或 多次
1) {n,m}? n表示最少連續(xù)匹配多少次? m表示最多連續(xù)匹配多少次
2) {n}? n表示只連續(xù)匹配n次
3) {n,}? n表示至少連續(xù)匹配n次,至多沒(méi)有限制
4) {,m}? m表示至多連續(xù)匹配n次,至少0次
e 問(wèn)號(hào)符號(hào):?
表示匹配問(wèn)號(hào)前面一個(gè)字符出現(xiàn)0次或者1次
* .* 在linux命令中是什么意思?
表示任意幾個(gè)字符串,其他具體的參考如下:
1. 重定向輸出符號(hào)。
2. 重定向輸出符號(hào),但有追加的功能。
3. 2錯(cuò)誤重定向輸出符號(hào),覆蓋原文件內(nèi)容。
4. 2錯(cuò)誤重定向輸出符號(hào),有文件內(nèi)容追加的功能。重定向:I/O。Linux Shell 環(huán)境中支持輸入輸出重定向,用符號(hào)和來(lái)表示。0、1和2分別表示標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤信息輸出,可以用來(lái)指定需要重定向的標(biāo)準(zhǔn)輸入或輸出,比如 2a.txt 表示將錯(cuò)誤信息輸出到文件a.txt中。
5. * 代表0個(gè)或者多個(gè)特殊字符
6. ?匹配任意一個(gè)字符。
7. | 管道符號(hào)。解釋:mand1|mand2,將mand1的輸出作為mand2的輸入,比如ls -al|less,表示將ls -al的輸出作為less的輸入,即將la -al的輸出分頁(yè)。管道命令只接受標(biāo)準(zhǔn)輸入(standoutput)。
8. 后臺(tái)進(jìn)程符。
9. l邏輯與符號(hào)。用法:命令1 命令2 表示如果命令1執(zhí)行成功,繼續(xù)執(zhí)行命令2。
10.|| 邏輯或符號(hào)。用法:命令1 | | 命令2 表示如果命令1執(zhí)行成功,不執(zhí)行命令2;但如果命令1執(zhí)行失敗才執(zhí)行命令2。
與||,命令執(zhí)行是順序進(jìn)行的,沒(méi)有優(yōu)先級(jí)
11.!邏輯非符號(hào)。排除指定范圍。例:ls a[!0-9]
12.[x-y]表示一定的范圍。
13.# 注釋符;符合替換文字最短的那一個(gè)。
14.” ” 雙引號(hào)表示把它所包含的內(nèi)容作為普通字符,但` ` $ \ ‘ ‘ 幾個(gè)符號(hào)除外。
15.’ ’ 單引號(hào)表示把它所包含的內(nèi)容作為普通的字符,無(wú)特殊例外。
16.$ 變量符,提取變量,如echo $HOME,查看變量;正則表達(dá)式中表示行首。
17.\ 轉(zhuǎn)義字符,就是將特殊字符轉(zhuǎn)換成其本來(lái)的普通字符的意思。
18.``反單引號(hào),表示它所包含的內(nèi)容。一般作為嵌入的命令使用,此命令將先執(zhí)行。
19.;命令分隔符。
20. 重定向輸入符。
21.()表示整體執(zhí)行命令。
22.^反向選擇符,例:grep -n '^[^a-zA-Z]' wokao.txt,[]內(nèi)的叫反向選擇符,[]外的則表示定位在行首。查找行首不是英文字母的行。
23. . 點(diǎn)該表任意字符串
*:代表0或任意;
.:代表任意一個(gè)字符,這里應(yīng)該純粹指.;
所以*.*應(yīng)該是帶有.的文件,比如A.B,AA.BB,.B,A.,泛指有擴(kuò)展名的文件。
tcpdump在linux命令中是什么意思
你使用tcpdump抓包的話它會(huì)一直監(jiān)聽(tīng)你需要監(jiān)聽(tīng)的端口,如果你想退出的話輸入:ctrl + c可以強(qiáng)制退出。
linux命令中su是什么意思
切換到其他系統(tǒng)用戶
比如:
su - root
su - mysql
切換回root一般需要輸入密碼
linux命令中$#各是什么意思
Linux命令中, $一般表示變量, #一般表示注釋。
linux命令 $- 是什么意思
$ 符號(hào)在Linux系統(tǒng)里面用于獲取一個(gè)變量的值,例如:
#!/bin/bash --------指定編譯shell環(huán)境為bash
STR="Hello World!"----設(shè)置STR的變量值為Hello World!
echo $STR ------ 用echo命令讀取STR變量的數(shù)值。這里如果不加$, 輸出結(jié)果是STR,加上$,輸出結(jié)果就是Hello World!。
linux命令中ps -ef是什么意思
以下是man手冊(cè) -f 的注釋
does full-format listing. This option can be bined with many other UNIX-style options to add additional columns. It also causes the mand arguments to be printed. When used with -L, the NLWP (number of threads) and LWP (thread ID) columns will be added. See the c option, the format keyword args, and the format keyword m.
ps -ef的執(zhí)行結(jié)果就是打印所有進(jìn)程的以下內(nèi)容:
UID PID PPID C STIME TTY TIME CMD
這些命令試試就知道結(jié)果了.
linux命令man是什么意思
man是查看一個(gè)命令詳細(xì)說(shuō)明文檔用的。
比如man cp就會(huì)顯示cp(復(fù)制)這個(gè)命令的詳細(xì)說(shuō)明文件。包括每個(gè)參數(shù)的意思用法等等。
tab:文本分隔符,相當(dāng)于四個(gè)空格,在命令行界面可以用來(lái)自動(dòng)補(bǔ)齊命令與目錄。
ESC:esc+. ,上一條命令的選項(xiàng)參數(shù),vim恢復(fù)到命令模式。
~:家目錄
`:反引號(hào),編程中調(diào)用shell命令
!:調(diào)用前面的命令,!!調(diào)用上一條,!23調(diào)用前面低23條。
@:at符,后面接IP地址。
#:Linux文件中注釋行,表示不起作用。
$:文件行結(jié)尾標(biāo)識(shí)符,變量標(biāo)識(shí)符。
%:格式化文本。
^:文件行首標(biāo)識(shí)符
:任務(wù)放到后臺(tái)
*:通配符,代表一個(gè)字符或者很多個(gè)字符。
\:用來(lái)轉(zhuǎn)義,\t表示制表符,\n表示換行符。
:數(shù)據(jù)流的流入方向,表示輸入,將數(shù)據(jù)傳入給左側(cè)軟件。
|:管道,改變數(shù)據(jù)流的方向,將數(shù)據(jù)傳入給另外的軟件。
:數(shù)據(jù)流的流出方向,表示輸出,將屏幕輸出的內(nèi)容寫入一個(gè)文件。
2:數(shù)據(jù)流的流出的第二個(gè)方向,表示錯(cuò)誤輸出,報(bào)錯(cuò)信息會(huì)寫入到這個(gè)文件中。
:表示追加寫入
/:根目錄,目錄分隔符
‘’:雙引號(hào),支持轉(zhuǎn)義
‘:?jiǎn)我?hào),不支持轉(zhuǎn)義
():shell編程中使用,命令行用的不多
[]:索引
{}:代碼塊
::vim或者less命令中,表示可以輸入命令
;:分割不同命令
-:短選項(xiàng)標(biāo)識(shí)符-h
--:長(zhǎng)選項(xiàng)標(biāo)識(shí)符--help
如果一個(gè)名稱用%括起來(lái),那么就是用的它的賦值,而不是本身的字母
比如
echo time echo %time%
以上兩個(gè)前者顯示time這個(gè)字母,后者顯示系統(tǒng)時(shí)間 19:42:12:02
還有%diskdiver%=系統(tǒng)盤等。
可以用set自己設(shè)定,有一些是系統(tǒng)默認(rèn)的比容上面說(shuō)的time;diskdiver
----------------------------------------------------------------------
FOR這條命令基本上都被用來(lái)處理文本,我們這次除了要說(shuō)他處理文本的作用外還要講他的其他一些好用的功能!
看看他的基本格式(這里我引用的是批處理中的格式,直接在命令行只需要一個(gè)%號(hào))
FOR 參數(shù) %%變量名 IN (相關(guān)文件或命令) DO 執(zhí)行的命令
參數(shù):FOR有4個(gè)參數(shù) /d /l /r /f 他們的作用我在下面用例子解釋
%%變量名 :這個(gè)變量名可以是小寫a-z或者大寫A-Z,他們區(qū)分大小寫哦~
FOR會(huì)把每個(gè)讀取到的值給他!
IN:命令的格式,照寫就是了!
(相關(guān)文件或命令) :FOR要把什么東西讀取然后賦值給變量,不懂的話看下面的例子
do:命令的格式,照寫就是了!
執(zhí)行的命令:對(duì)每個(gè)變量的值要執(zhí)行什么操作就寫在這.
看不懂我的這些說(shuō)明,可以在CMD輸入for /?看系統(tǒng)提供的幫助!我這里也給出來(lái)吧,大家對(duì)照
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一個(gè)單一字母可替換的參數(shù)。
(set) 指定一個(gè)或一組文件??梢允褂猛ㄅ浞?/p>
command 指定對(duì)每個(gè)文件執(zhí)行的命令。
command-parameters
為特定命令指定參數(shù)或命令行開(kāi)關(guān)。
現(xiàn)在開(kāi)始講每個(gè)參數(shù)的意思
/d
僅為目錄
如果 Set (也就是我上面寫的 "相關(guān)文件或命令") 包含通配符(* 和 ?),將對(duì)與 Set 相匹配的每個(gè)目錄(而不是指定目錄中的文件組)執(zhí)行指定的 Command。
這個(gè)參數(shù)其實(shí)我也沒(méi)弄太懂...有錯(cuò)誤希望各位糾正!
系統(tǒng)幫助的格式:FOR /D %%variable IN (set) DO command
他主要用于目錄搜索,不會(huì)搜索文件,看這樣的例子
@echo off
for /d %%i in (*) do @echo %%i
pause
把他保存放在C盤根目錄執(zhí)行,就會(huì)把C盤目錄下的全部目錄名字打印出來(lái),而文件名字一個(gè)也不顯示!
在來(lái)一個(gè),比如我們要把當(dāng)前路徑下文件夾的名字只有1-3個(gè)字母的打出來(lái)
@echo off
for /d %%i in (???) do @echo %%i
pause
這樣的話如果你當(dāng)前目錄下有目錄名字只有1-3個(gè)字母的,就會(huì)顯示出來(lái),沒(méi)有就不顯示了
這里解釋下*號(hào)和?號(hào)的作用,*號(hào)表示任意N個(gè)字符,而?號(hào)只表示任意一個(gè)字符
知道作用了,給大家個(gè)思考題目!
@echo off
for /d %%i in (window?) do @echo %%i
pause
保存到C盤下執(zhí)行,會(huì)顯示什么呢?自己看吧!
/D參數(shù)只能顯示當(dāng)前目錄下的目錄名字,這個(gè)大家要注意!
/R
遞歸
進(jìn)入根目錄樹(shù) [Drive:]Path,在樹(shù)的每個(gè)目錄中執(zhí)行 for 語(yǔ)句。如果在 /R 后沒(méi)有指定目錄,則認(rèn)為是當(dāng)前目錄。如果 Set 只是一個(gè)句點(diǎn) (.),則只枚舉目錄樹(shù)。
系統(tǒng)幫助的格式:FOR /R [[drive:]path] %%variable IN (set) DO command
上面我們知道,/D只能顯示當(dāng)前路徑下的目錄名字,那么現(xiàn)在這個(gè)/R也是和目錄有關(guān),他能干嘛呢?放心他比/D強(qiáng)大多了!
他可以把當(dāng)前或者你指定路徑下的文件名字全部讀取,注意是文件名字,有什么用看例子!
@echo off
for /r c:\ %%i in (*.exe) do @echo %%i
pause
咋們把這個(gè)BAT保存到D盤隨便哪里然后執(zhí)行,我會(huì)就會(huì)看到,他把C盤根目錄,和每個(gè)目錄的子目錄下面全部的EXE文件都列出來(lái)了!!!!
再來(lái)一個(gè)
@echo off
for /r %%i in (*.exe) do @echo %%i
pause
參數(shù)不一樣了吧!這個(gè)命令前面沒(méi)加那個(gè)C:\也就是搜索路徑,這樣他就會(huì)以當(dāng)前目錄為搜索路徑,比如你這個(gè)BAT你把他防災(zāi)d:\test目錄下執(zhí)行,那么他就會(huì)把D:\test目錄和他下面的子目錄的全部EXE文件列出來(lái)!!!
這個(gè)參數(shù)大家因該理解了吧!還是滿好玩的命令!
/L
迭代數(shù)值范圍
使用迭代變量設(shè)置起始值 (Start#),然后逐步執(zhí)行一組范圍的值,直到該值超過(guò)所設(shè)置的終止值 (End#)。/L 將通過(guò)對(duì) Start# 與 End# 進(jìn)行比較來(lái)執(zhí)行迭代變量。如果 Start# 小于 End#,就會(huì)執(zhí)行該命令。如果迭代變量超過(guò) End#,則命令解釋程序退出此循環(huán)。還可以使用負(fù)的 Step# 以遞減數(shù)值的方式逐步執(zhí)行此范圍內(nèi)的值。例如,(1,1,5) 生成序列 1 2 3 4 5,而 (5,-1,1) 則生成序列 (5 4 3 2 1)。語(yǔ)法是:
系統(tǒng)幫助的格式:for /L %% Variable in (Start#,Step#,End#) do Command
看著這說(shuō)明有點(diǎn)暈吧!咋們看例子就不暈了!
@echo off
for /l %%i in (1,1,5) do @echo %%i
pause
保存執(zhí)行看效果,他會(huì)打印從1 2 3 4 5 這樣5個(gè)數(shù)字
(1,1,5)這個(gè)參數(shù)也就是表示從1開(kāi)始每次加1直到5終止!
大會(huì)暈,就打印個(gè)數(shù)字有P用...好的滿足大家,看這個(gè)例子
@echo off
for /l %%i in (1,1,5) do start cmd
pause
執(zhí)行后是不是嚇了一跳,怎么多了5個(gè)CMD窗口,呵呵!如果把那個(gè) (1,1,5)改成 (1,1,65535)會(huì)有什么結(jié)果,我先告訴大家,會(huì)打開(kāi)65535個(gè)CMD窗口....這么多你不死機(jī)算你強(qiáng)!
當(dāng)然我們也可以把那個(gè)start cmd改成md %%i 這樣就會(huì)建立指定個(gè)目錄了!!!名字為1-65535
看完這個(gè)被我賦予破壞性質(zhì)的參數(shù)后,我們來(lái)看最后一個(gè)參數(shù)
/f
\迭代及文件解析
使用文件解析來(lái)處理命令輸出、字符串及文件內(nèi)容。使用迭代變量定義要檢查的內(nèi)容或字符串,并使用各種 ParsingKeywords 選項(xiàng)進(jìn)一步修改解析方式。使用 ParsingKeywords 令牌選項(xiàng)指定哪些令牌應(yīng)該作為迭代變量傳遞。請(qǐng)注意:在沒(méi)有使用令牌選項(xiàng)時(shí),/F 將只檢查第一個(gè)令牌。
文件解析過(guò)程包括讀取輸出、字符串或文件內(nèi)容,將其分成獨(dú)立的文本行以及再將每行解析成零個(gè)或更多個(gè)令牌。然后通過(guò)設(shè)置為令牌的迭代變量值,調(diào)用 for 循環(huán)。默認(rèn)情況下,/F 傳遞每個(gè)文件每一行的第一個(gè)空白分隔符號(hào)。跳過(guò)空行。
系統(tǒng)幫助的格式:
for /F "ParsingKeywords" %% Variable in (FileNameSet) do Command
有沒(méi)有發(fā)現(xiàn)這個(gè)參數(shù)說(shuō)明比上面幾個(gè)都多...沒(méi)辦法,人們用FOR命令主要也就是用/f參數(shù),FOR的主場(chǎng)啊!大家得好好看!
先來(lái)解釋下那個(gè)多出來(lái)的"ParsingKeywords"
他表示4個(gè)參數(shù)
eol=c - 指一個(gè)行注釋字符的結(jié)尾(就一個(gè))
skip=n - 指在文件開(kāi)始時(shí)忽略的行數(shù)。
delims=xxx - 指分隔符集。這個(gè)替換了空格和跳格鍵的
默認(rèn)分隔符集。
tokens=x,y,m-n - 指每行的哪一個(gè)符號(hào)被傳遞到每個(gè)迭代
的 for 本身。這會(huì)導(dǎo)致額外變量名稱的分配。m-n
格式為一個(gè)范圍。通過(guò) nth 符號(hào)指定 mth。如果
符號(hào)字符串中的最后一個(gè)字符星號(hào),
那么額外的變量將在最后一個(gè)符號(hào)解析之后
分配并接受行的保留文本。
usebackq - 指定新語(yǔ)法已在下類情況中使用:
在作為命令執(zhí)行一個(gè)后引號(hào)的字符串并且一個(gè)單
引號(hào)字符為文字字符串命令并允許在 filenameset
中使用雙引號(hào)擴(kuò)起文件名稱。
先別暈了!我這就舉個(gè)例子幫助大家來(lái)理解這些參數(shù)!
usebackq這個(gè)參數(shù)不用理解了,系統(tǒng)默認(rèn)會(huì)給我們加上!
為了能使用這個(gè)例子,我們先新建一個(gè)文本文件,在里面打上這些內(nèi)容保存為test.txt:
;郁悶啊!
您好! 歡迎來(lái)到, 非常批處理
我們的網(wǎng)站 bbs.verybat.org
完畢!
@echo off
FOR /F "eol=; tokens=1 delims= " %%i in (test.txt) do @echo %%i
pause
我們把這個(gè)BAT保存到和你的test.txt相同的目錄下面然后執(zhí)行
我們會(huì)看到屏幕上會(huì)顯示
您好!
我們的網(wǎng)站
完畢!
為什么會(huì)這樣?我來(lái)解釋
這個(gè)命令會(huì)讀取在當(dāng)前目錄下名為test.txt文件中的內(nèi)容,將每一行的內(nèi)容賦值給變量%%i,忽略掉以;號(hào)開(kāi)頭的行,并且以空格做為分隔符號(hào),打印每行以空格做分隔符號(hào)的第一列
結(jié)果就是這樣了!!
如果改成
當(dāng)然我們想要把全部文件內(nèi)容直接打印出來(lái)就可以這樣
@echo off
FOR /F "delims=" %%i in (test.txt) do @echo %%i
pause
另外/F參數(shù)還可以以輸出命令的結(jié)果看這個(gè)例子
@echo off
FOR /F "delims=" %%i in ('net user') do @echo %%i
pause
這樣你本機(jī)全部帳號(hào)名字就出來(lái)了把擴(kuò)號(hào)內(nèi)的內(nèi)容用兩個(gè)單引號(hào)引起來(lái)就表示那個(gè)當(dāng)命令執(zhí)行,FOR會(huì)返回命令的每行結(jié)果,加那個(gè)"delims=" 是為了讓我空格的行能整行顯示出來(lái),不加就只顯示空格左邊一列!
基本上講完了FOR的基本用法了...如果你看過(guò)FOR的系統(tǒng)幫助,你會(huì)發(fā)現(xiàn)他下面還有一些特定義的變量,這些我先不講.大家因該都累了吧!你不累我累啊....
這個(gè)符號(hào)叫做管道符號(hào)。
管道命令符的作用能用一句話來(lái)概括:“把前一個(gè)命令原本要輸出到屏幕的數(shù)據(jù)當(dāng)作是后一個(gè)命令的標(biāo)準(zhǔn)輸入”。
輸入方法是同時(shí)按下鍵盤的“shift”與“\”鍵,執(zhí)行格式為“命令a
|
命令b”。
如:history
|
grep
date指從history這條命令運(yùn)行的結(jié)果中顯示包含有
“date”
的命令。
1.cd/home/fleety/Diagserver/log
cd到指定的目錄
2.tail -f day.log
實(shí)時(shí)讀取指定目錄下的日志(一直中,不停止)
3.grep -a 'mdtId' day.log 或 grep -v 'mdtid' day.log
指定條件下查找mdtid文件的記錄
4.tar -zcvf day.log.tgz day.log 或 tar -zcvf day.log.tgz
分別是四個(gè)參數(shù)
x : 從 tar 包中把文件提取出來(lái)
z : 表示 tar 包是被 gzip 壓縮過(guò)的,所以解壓時(shí)需要用 gunzip 解壓
v : 顯示詳細(xì)信息
f xxx.tar.gz : 指定被處理的文件是 xxx.tar.gz
5.mkdir -p/home/fkeety/Diagserver/log
在home下建一個(gè)fleeety的子目錄,在fleety下建一個(gè)DiagServer的子目錄,在DiagServer建一個(gè)log的子目錄
6.mv day.log day.log.bak
mv,移動(dòng)文件到另一個(gè)文件,備份
7.rm -rf day.log
刪除這個(gè)文件
8.vi day.log
打開(kāi)或新建day.log文件,并將光標(biāo)置于第一行首
9.pwd
顯示工作目錄
10. In -s aa bb
為bb文件在aa文件上建立一個(gè)同步的鏈接
11.unzip day.log.zip
解壓到當(dāng)前目錄下
12. find/home/fleety/Diagserver -name ' zwyc' -print**
查找名稱為XXX的內(nèi)容并打印
13.ssh -l root 180.168.34.250 -p 9222
root權(quán)限連接主機(jī),端口是9222
14.telnet 192.168.0.22 23
建立遠(yuǎn)程tcp連接
15. sed -n '100.2720p'1159857_20150506_2159857_20150506_2_2
將字符串'100,2720p' 寫入文件15..._2文件里 并重定向到15..._2_2文件里
16.chmod fleety.fleety aaa
給fleety.fleety設(shè)置權(quán)限
17.chown 755 aaa
給aaa 添加
7 擁有者有 讀取,寫入,執(zhí)行權(quán)限
7 組用戶有 讀取,寫入,執(zhí)行權(quán)限
5 其他用戶有 讀取,執(zhí)行權(quán)限
18.cp -r /home/fleety/Diagserve/log ./
將log文件下的所有內(nèi)容 復(fù)制到當(dāng)前目錄下
19.ftp 192.168.0.218 21
ftp模式連接遠(yuǎn)程主機(jī) ,服務(wù)器會(huì)詢問(wèn)用戶名和密碼
20.more day.log
查看day.log日志,分頁(yè)形式打開(kāi), more 一頁(yè)頁(yè)顯示文件內(nèi)容 空白鍵下一頁(yè) b鍵上一頁(yè)
21.ps -ef
查看系統(tǒng)進(jìn)程
22.top
主要用于查看進(jìn)程的相關(guān)信息,同時(shí)它也會(huì)提供系統(tǒng)平均負(fù)載,cpu 信息和內(nèi)存信息