Linux系統常見命令
Linux系統常見命令
記錄一下常用的linux命令,加深印象,鞏固理解。
1、替換文本里的關鍵字
sed -i "s/nnn/sss/g" `grep naw -rl .`
sed -i "s/kangkang/stephen/g" `grep kanghao -rl .`:替換文件夾中內容
2、壓縮與解壓文件
- zip命令:用于創建.zip格式壓縮文件
zip archive.zip file1 file2
- zip解壓文件
unzip archive.zip
gzip與tar結合使用:同時打包與壓縮為.tar.gz格式。
tar -czvf archive.tar.gz file1 file2
壓縮文件到指定路徑:
tar -czvf archive_name.tar.gz /path/to/directory
-
tar是用于打包和解壓文件的命令。 -
-c表示創建一個新的歸檔文件。 -
-x表示從歸檔文件中提取文件。 -
-z表示使用gzip壓縮或解壓縮。 -
-v表示在操作過程中顯示詳細信息。 -
-f表示后面跟歸檔文件的名稱。
注意:
-
壓縮時,
archive_name.tar.gz是你想創建的歸檔文件名,/path/to/directory是你想壓縮的文件夾路徑。 -
解壓時,
archive_name.tar.gz是歸檔文件的名稱,-C /target/directory用于指定解壓到的目標文件夾路徑。如果不使用-C參數,默認解壓到當前目錄。 - 解壓并解包文件
tar -xzvf archive.tar.gz
3、查找文件內容
LINUX中的搜索文件和目錄命令
find ./ -type l -ls | grep naw > 1.log ////把一個帶有名字的”naw”保存到log中
grep 信號 *.v ///查找信號以及所在.v文件,必須在信號所在目錄下搜素
grep 信號 -rl . ///搜素信號在此根目錄下所有文件
find . -name 'latest' ///查找latest名字以及所在文件夾(限于查找此目錄以及下面的子目錄)
find / -name mswin.vim 2>/dev/null(查找根目錄里mswin.vim所在文件里)
cat Makefile |grep showcase ///查找makefile里面含有showcase的字段


4、變量$0,$1,$2,$*,$@,$#,$$,$?含義解釋
$0:指腳本本身的名字
$1:指傳遞給該shell腳本的第一個參數
$2:指傳遞給該shell腳本的第二個參數
$*:顯示所有向腳本傳遞的參數
$@:顯示所有向腳本傳遞的參數
$#:傳給腳本的參數個數
$$:腳本運行的當前進程ID號
$?:顯示最后命令的退出狀態,0表示沒有錯誤,其它表示有錯誤
[root@kibana ~]# cat dollar.sh
#!/bin/bash
num=$#
name=$0
echo "傳給腳本的參數個數:" $num
echo "腳本名稱:" $name
echo "第一個參數為:$1"
echo "第二個參數為:$2"
echo
echo "\"\$*\"顯示所有向腳本傳遞的參數"
for key in $*
do
echo $key
done
echo
echo "\"\$@\"顯示所有向腳本傳遞的參數"
for key in $@
do
echo $key
done
echo
echo "process id:$$"
echo "process result status:$?"
[root@kibana ~]# sh dollar.sh 1 2
傳給腳本的參數個數: 2
腳本名稱: dollar.sh
第一個參數為:1
第二個參數為:2
"$*"顯示所有向腳本傳遞的參數
1
2
"$@"顯示所有向腳本傳遞的參數
1
2
process id:2822
process result status:0
[root@kibana ~]#
5、awk用法
5.1、基本用法
- 處理格式
awk的用法如下所示:
$awk 動作 文件名
$awk '{print $0}' 111.txt
說明:demo.txt是awk要處理的文本文件。單引號內部有大括號,里面就是每行要處理的動作print $0, 其中print是打印命令,$0代表當前樣,執行結果為將文件原樣輸出。
$ echo 'this is my name'|awk '{print $0}'
this is a my name
說明:上面的代碼就是將this is my name, 重新打印一遍。
- 字段分割
awk默認使用空格和制表符,將每一行數據分成若干字段,字段依次使用$1、$2、$3 …依次代表第一個字段、第二個字段、第三個字段,其中需要$0入上文所描述,代表整行數據。
$ echo 'this is my name' | awk '{print $2}'
$ is
說明:上述代碼作用是使用空格分割this is my name, 打印第2個域字段。
- F參數
默認情況下awk使用tab和空格對數據進行分段,當需要指定自定義分割符時,可以使用-F參數進行指定。
$ echo 'root:x:0:0:root:/usr/bin/zsh' | awk -F':' '{print $3}'
$ 0
5.2、變量
- awk內置變量列表
| 符號 | 作用 |
|---|---|
| NF | 表示當前行有多少字段,因此使用$NF表示最后一段 |
| NR | 表示當前處理是多少行 |
| FS | 字段分割符,默認是空格和制表符 |
| OFS | 輸出字段的分割符 |
| ORS | 輸出記錄的分割符,用于打印是分割記錄,默認為換行符 |
| OFMT | 數字輸出格式 |
- FS 實例
以文本文件passwd為例,文本文件內容如下所示:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
1.通過FS可以實現修改分割字段的字符
$ awk '{print $1,$2,$3}' FS=':' /etc/passwd
root x 0
daemon x 1
bin x 2
sys x 3
sync x 4
games x 5
man x 6
lp x 7
2.通過FS指定多個分割符
為了方便對比我們先指定一個分割符效果如下
$ awk '{print $1,$2,$NF}' FS=[:] /etc/passwd
root x /bin/bash
daemon x /usr/sbin/nologin
bin x /usr/sbin/nologin
sys x /usr/sbin/nologin
sync x /bin/sync
games x /usr/sbin/nologin
man x /usr/sbin/nologins
同時指定兩個分割字符的效果如下
$ awk '{print $1,$2,$NF}' FS=[:/] /etc/passwd
root x bash
daemon x nologin
bin x nologin
sys x nologin
sync x sync
games x nologin
man x nologin
3.OFS 實例
awk '{print $1,$2,$NF}' FS=[:/] OFS='|' /etc/passwd
root|x|bash
daemon|x|nologin
bin|x|nologin
sys|x|nologin
sync|x|sync
games|x|nologin
man|x|nologin
說明:上述實例指定輸入分割符為:/,指定輸出分割符為|,輸出第一列、第二列、最后一列時,使用|分割輸出的結果。
5.3、awk內置函數
- 常用原函數
| 函數名稱 | 作用 |
|---|---|
| gsub(r,s) | 在整個$0中用s替代r |
| gsub(r,s,t) | 在整個t中用s替代r |
| tolower() | 字符轉為小寫 |
| toupper() | 字符轉為小寫 |
| length() | 返回字符串長度 |
| index(s,t) | 返回s中字符串t的第一位置 |
| match(s,r) | 測試s是否包含匹配r的字符串 |
| split(s,a,fs) | 將字符串s使用fs分割并存儲在數組a中 |
| sprint(fmt,exp) | 返回經fmt格式化后的exp |
| substr(s,p) | 返回字符串s中從p開始的后綴部分 |
| substr(s,p,n) | 返回字符串s中從p開始長度為n的后綴部分 |
- gsub(r,s)及- gsub(r,s,t) 在整個$0中用s替代r用法示例
依然以上述提供文本為例:
$ cat passwd.txt | awk -F: '{gsub("root","boot", $1); print $0}'
boot x 0 0 root /root /bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
1.將上述文件中用:分割個第一列中的root替換為boot
$ cat passwd.txt | awk -F: '{gsub("root","boot", $1); print $0}'
boot x 0 0 root /root /bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
2.將上述文件中的root替換為boot
$ cat passwd.txt | awk -F: '{gsub("root","boot", $0); print $0}'
boot:x:0:0:boot:/boot:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
- tolower() 字符轉為小寫示例
$ cat passwdUpper.txt
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
DAEMON:X:1:1:DAEMON:/USR/SBIN:/USR/SBIN/NOLOGIN
BIN:X:2:2:BIN:/BIN:/USR/SBIN/NOLOGIN
SYS:X:3:3:SYS:/DEV:/USR/SBIN/NOLOGIN
SYNC:X:4:65534:SYNC:/BIN:/BIN/SYNC
$ cat passwdUpper.txt | awk -F: '{ print tolower($0)}'
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
- length() 返回字符串長度示例
$ cat passwd.txt | awk -F: '{ print length($1)}'
4
6
3
3
4
- index(s,t) 返回s中字符串t的第一位置示例
cat passwd.txt | awk -F: '{ print $0;print index("root",$1)}'
root:x:0:0:root:/root:/bin/bash
1
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
0
bin:x:2:2:bin:/bin:/usr/sbin/nologin
0
sys:x:3:3:sys:/dev:/usr/sbin/nologin
0
sync:x:4:65534:sync:/bin:/bin/sync
0
- match(s,r) 測試s是否包含匹配r的字符串示例
$ cat passwd.txt | awk -F: '{ print $0;print match($0,"root")}'
root:x:0:0:root:/root:/bin/bash
1
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
0
bin:x:2:2:bin:/bin:/usr/sbin/nologin
0
sys:x:3:3:sys:/dev:/usr/sbin/nologin
0
sync:x:4:65534:sync:/bin:/bin/sync
0
- split(s,a,fs) 將字符串s使用fs分割并存儲在數組a中示例
split (s,a) 如果第三個參數沒有提供,awk就默認使用當前FS值
$ cat passwd.txt | awk '{print $0;split($0,arry,":");print length(arry),arry[1],arry[2],arry[3]}'
root:x:0:0:root:/root:/bin/bash
7 root x 0
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
7 daemon x 1
bin:x:2:2:bin:/bin:/usr/sbin/nologin
7 bin x 2
sys:x:3:3:sys:/dev:/usr/sbin/nologin
7 sys x 3
sync:x:4:65534:sync:/bin:/bin/sync
7 sync x 4
5.4、條件語句
awk允許指定輸出條件,只輸出符合條件的行
$ awk ‘條件 動作’ 文件名
- 正則表達式匹配指定的行
$ cat passwd.txt
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
$ cat passwd.txt | awk '/sys/ {print $1}'
sys:x:3:3:sys:/dev:/usr/sbin/nologin
- 輸出偶數行
$ cat passwd.txt | awk -F: 'NR % 2 == 0 {print $1}'
daemon
sys
- 輸出字段等于特定值
$ cat passwd.txt | awk -F: '$1 == "bin" {print $0}'
bin:x:2:2:bin:/bin:/usr/sbin/nologin
- if語句
$ cat passwd.txt | awk -F: '{if($1 >= "r") print $0}'
root:x:0:0:root:/root:/bin/bash
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
$ cat passwd.txt | awk -F: '{if($1 >= "r") print $0 ;else print $1}'
root:x:0:0:root:/root:/bin/bash
daemon
bin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
$ cat passwd.txt | awk -F: '{if($1 >= "r") print $0 ;else if($1<"r") print $1}'
root:x:0:0:root:/root:/bin/bash
daemon
bin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
6、sed用法
6.1、刪除多行
在Linux中,如果你想通過命令行復制或處理一個文件的特定行范圍,你可以使用sed或awk工具。以下是使用sed命令來選擇從第N行到第M行的方法:
例如有一個文件名newddddd.txt,內容如下,我想保留前1~5000行的數據,其他行數據不想要

可以使用如下命令,會將保留的數據打印到操作界面
sed '5000,65536d' newddddd.txt
也可以加入-i會直接修改文本,保留修改后的文件
sed -i '5000,65536d' newddddd.txt
6.2、文本內容替換
在Linux系統中,可以使用sed命令來替換文本文件中的內容。sed是一種流編輯器,能夠執行文本替換的基本命令。
基本語法如下:
sed 's/要替換的文本/新文本/g' 文件名
-
s表示替換操作。
g表示全局替換,即在每一行中替換所有匹配的文本。
如果你想要直接修改原文件,可以使用-i選項:
sed -i 's/要替換的文本/新文本/g' 文件名
例如,要將文件example.txt中的所有apple替換為orange,可以使用以下命令:
sed -i 's/apple/orange/g' example.txt
如果只想替換第一次出現的文本,可以去掉g:
sed -i 's/apple/orange/' example.txt
如果需要對變量進行替換,可以使用雙引號:
old_text="apple"
new_text="orange"
sed -i "s/$old_text/$new_text/g" example.txt
請注意,如果你的替換文本中包含了特殊字符,如/、&、\等,你需要對它們進行轉義。
7、查看文件占用內存情況
在Linux中,可以使用du命令來查看當前路徑所占用的磁盤空間。以下是一個基本的命令
du -h //查看文件占用內存
du -sh
這里的參數解釋如下:
-
-s:表示匯總每個參數的總用量。 -
-h:表示以人類可讀的格式顯示(例如,KB、MB、GB)。
運行 df -h 可以快速了解磁盤使用情況,顯示每個掛載點的使用百分比
查看文件每個文件占用內存情況:
du --max-depth=1 -h
8、配置終端提示符顏色
在 Linux 中,當前的 Bash 提示設置保存在一個名為 PS1 的 shell 變量中,它表示【提示語句】(Prompt Statement)
這個變量保存的路徑通常在$HOME/.bashrc 文件中(或者 /etc/bashrc)
# 查看當前 bash shell 的 PS1 值
[root@localhost ~]# echo $PS1
[\[\e[33m\]\u\[\e[0m\]@\[\e[31m\]\h\[\e[0m\] \[\e[35m\]\w\[\e[0m\]]\$
然后在.bashrc文件里增加
PS1='\[\033[1;32m\]\u\[\033[1;37m\]@\[\033[1;36m\]\h\[\033[00m\]:\[\033[1;34m\]\w\[\033[00m\]\$ '
然后生效一下
source /etc/bashrc
或
source ~/.bashrc
可以看到生效了
9、SVN的使用
查看svn提交記錄
svn log --limit 3 ##查看最近三天svn記錄
查看最新版本與指定·版本差異
svn diff -r2655
查看代碼與庫上提交版本差異
svn st -u

浙公網安備 33010602011771號