Linux 練習題-1 入門
2、過濾題1文件內容,只輸出以下內容
10.0.0.8 10.0.0.255 255.255.255.0
awk -F "[ :]+" '{print $3,$5,$7}' sxr.txt
3、將題1的test目錄移動到/tmp目錄下,並將/etc/passwd文件復制到/tmp/oldboy下
4、在題3基礎上,用awk取passwd文件的第
awk -F ":" 'NR>=5 && NR<=15 {print $3}' passwd > text.txt
5、在題3基礎上要求用命令rm刪除文件時提示如下禁止使用rm的提示,並使該效果永久生效
alias rm='echo You not use rm command' #別名裏不能有'號,如can't這種是不行的
永久生效需要將命令復制到/etc/profile /etc/bashrc裏
6、在題3的基礎上,刪除/tmp/test/
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 |
Linux 練習題-1 入門