1、建立目錄/data/test ,在該目錄下建立文件your_name.txt,在文件裏寫入內容"inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0 "(不含引號)linux
2、過濾題1文件內容,只輸出如下內容正則表達式
10.0.0.8 10.0.0.255 255.255.255.0bash
awk -F "[ :]+" '{print $3,$5,$7}' sxr.txtide
3、將題1的test目錄移動到/tmp目錄下,並將/etc/passwd文件複製到/tmp/oldboy下spa
4、在題3基礎上,用awk取passwd文件的第5行到15行的第三列重定向到/tmp/test/test.txt文件裏操作系統
awk -F ":" 'NR>=5 && NR<=15 {print $3}' passwd > text.txt命令行
5、在題3基礎上要求用命令rm刪除文件時提示以下禁止使用rm的提示,並使該效果永久生效code
alias rm='echo You not use rm command' #別名裏不能有'號,如can't這種是不行的orm
永久生效須要將命令複製到/etc/profile /etc/bashrc裏blog
6、在題3的基礎上,刪除/tmp/test/下除passwd之外的其餘文件
find /tmp/data/ -type f ! -name "passwd" | xargs rm -f
7、在題3基礎上,打印/etc/passwd文件中的第2-5行(最少三種方法)
head -5 passwd | tail -4
tail -n +2 passwd | head -4
sed -n '2,5p' passwd
awk 'NR>1 && NR<6 {print $0}' passwd
8、在題3基礎上,用命令調換passwd文件裏root位置和/bin/bash位置,即將第一行的第一列和最後一列位置調換
awk -F":" 'NR==1{print $7":"$2":"$3":"$4":"$5":"$6";"$1}' passwd
head -1 /etc/passwd | \sed -nr 's#([^:]+)(:.*:)(/.*$)#\2#gp'
9、把/test目錄及其子目錄下全部以擴展名.txt結尾的文件中包含sorry的字符串所有替換爲thank
find /data/test -type f -name "*.txt" | xargs sed -i 's/sorry/thank/g'
find /data/test -type f -name "*.txt" | xargs -i sed -i 's/sorry/thank/g {}'
10、查找/test 下全部7天之前以log結尾的大於1M的文件移動/tmp下
find /data/test -type f -name "*.log" -mtime +7 -size +1M | xargs -i mv {} /tmp
注:ls -l 顯示的文件修改時間是mtime
rename .txt .log * #將全部.txt文件修改成.log文件
11、什麼是Linux的運行級別,描述linux的運行級別不一樣數字的含義
運行級別就是操做系統運行的功能級別。不一樣的運行級別在功能上會有所差別
inux下有7個運行級別 0123456
0系統停機模式
1單用戶模式
2多用戶模式
3完整的多用戶文本模式
4系統未使用
5圖形化模式
6重啓模式
12、描述buffer和cache的區別
總結1:
cache 是爲了彌補高速設備和低速設備的鴻溝而引入的中間層,最終起到**加快訪問速度**的做用。
buffer 的主要目的進行流量×××,把突發的大數量較小規模的 I/O 整理成平穩的小數量較大規模的 I/O,以**減小響應次數**
總結2:
cache的核心做用是加快取用的速度。好比你一個很複雜的計算作完了,下次還要用結果,就把結果放手邊一個好拿的地方存着,下次不用再算了。加快了數據取用的速度。
Buffer的核心做用是用來緩衝,緩和衝擊。好比你每秒要寫100次硬盤,對系統衝擊很大,浪費了大量時間在忙着處理開始寫和結束寫這兩件事嘛。用個buffer暫存起來,變成每10秒寫一次硬盤,對系統的衝擊就很小,寫入效率高了
總結3:
cache的數據沒了,還能在算一遍獲得,buffer空間的數據沒了可能就真沒了。並且一般buffer會順序讀取,而cache會隨機、反覆讀取/處理。
cache還有一個就是用來保持冗餘的、能夠被重複計算的、計算後的數據的,這個你叫buffer就不行。
13、區別並總結linux通配符和正則表達式
通配符和正則表達式是不同的。通配符用在用戶命令行bash環境。而Linux 正則表達式用於三劍客grep,sed,awk(還有一些其餘命令,如find,ergrep等,主要仍是三劍客)
通配符總結
* |
通配符,表明任意(0到多個)字符 |
ls *.txt #顯示全部.txt文件 |
? |
通配符,表明任意1個字符 |
|
; |
連續不一樣命令的分隔符(在前一個命令結束時,而忽略其返回值,繼續執行下一個命令) |
seq 10 > a.txt ; cat a.txt #結果輸出 seq 10 的結果 |
# |
配置文件註釋 |
|
| |
管道,傳遞上個命令的輸出給下個命令 |
|
~ |
用戶的家目錄 |
|
- |
上次的目錄 |
|
$ |
變量前需加的符號 |
|
/ |
路徑分隔符號 |
|
>或1> |
重定向,覆蓋原有內容 |
|
>> |
追加劇定向 |
|
< |
輸入重定向 |
cat < 1.txt |
<< |
標準限制符輸入 |
<<EOF 輸入到EOF時,中止 |
' |
單引號,不具備變·量置換功能,輸入所見即所得 |
echo '$(date)' #結果輸出'$(date)' |
" |
雙引號,具備變量置換功能,解析變量後輸出。不加引號至關於雙引號 |
echo "$(date)"=echo "~date~"=echo ~date~ #輸入結果是當前時間 |
~ |
tab上面的鍵,反引號。兩個~ ~中間爲命令,會先執行,等價於$() |
|
{} |
中間爲區塊組合或內容序列。與seq命令比,{}裏能夠加字符 |
touch {1..5}.txt #建立1.txt到5.txt文件 |
! |
邏輯運算中的非(not) |
|
&& |
and,並且。前一個命令成功,執行後一個命令 |
|
|| |
or,或,前一個命令失敗,執行後一個命令 |
|
.. |
上層目錄 |
|
. |
當前目錄 |
|
\ |
轉義符,去除其後緊跟的特殊字符意義 |
|
= |
設定變量 |
a=file1 |
[123] |
匹配[]中任意單一字符 |
|
[!123]或[^123] |
匹配除了[]中任意單一字符 |
|
[0-9] 或[a-z] |
匹配[]範圍內任意單一字符 |
|
[!c1-c2]或[^c1-c2] |
匹配除了[]範圍內任意單一字符 |
|
{string1,string2,...} |
匹配 sring1 或 string2 |
正則表達式總結
^word |
搜索以word開頭的 |
wods$ |
搜索以word結尾的 |
^$ |
表示空行 |
* |
重複0個或多個前面的一個字符。例如o* |
. |
表明且只能表明任意一個字符 |
.* |
匹配全部字符。^.*以任意多個字符開頭 |
\ |
轉義符。\.表明.自己 |
[abc] |
匹配字符集內任意一個字符 |
[^abc] |
匹配不包含^後的任意字符的內容 |
擴展正則表達式總結
grep,sed 使用時有些地方須要轉義字符轉義
egrep(grep -E),sed -r不須要
+ |
表示重複"一個或一個以上"前面的字符(*是0個或多個) |
? |
表示重複「0個或一個」前面的字符 |
| |
表示同時過濾多個字符串 |
() |
分組過濾,後向引用 當在前面的匹配部分用小括號的時候,第一個括號內容,能夠在後面部分用\1輸出。第二個括號內容,能夠用\2輸出 |
{n} |
必須匹配n次 grep使用時,需轉義:\{n\} |
{n,} |
必須匹配>=n |
{n,m} |
匹配次數在n與m間 |
{,m} |
匹配次數<=m |