linux常用命令
3.文件查看及處理命令
3.1查看文件內容
cat
+[選項]+[文件]
-b
對非空輸出行編號
-E
在每行結束處顯示$
-n
對輸出的所有行編號
-s
不輸出多行空行
標準輸入、標準輸出和標準錯誤
在 Linux 中,每個進程默認有三個文件描述符:
- 標準輸入(stdin):文件描述符為 0,用于向程序提供輸入。
- 標準輸出(stdout):文件描述符為 1,用于輸出正常信息。
- 標準錯誤(stderr):文件描述符為 2,用于輸出錯誤信息。
重定向標準輸出
cat file1 >file3 #將file1內容復制到file3文件中
注意:重定向標準輸出會把原文件內容覆蓋掉。
echo helo >file
cat file #輸出hello
echo world >file
cat file #輸出world
避免此類問題可以使用添加輸出
格式:>>
echo world >>file
重定向標準輸入
command < input_file
sort < names.txt #將 names.txt 文件的內容作為 sort 命令的輸入,并輸出排序結果。
錯誤重定向
2>
錯誤重定向用于將標準錯誤輸出重定向到文件或與其他輸出合并。
grep "error" log.txt 2> error.log#將 grep 命令的錯誤信息保存到 error.log 文件中。
錯誤和信息重定向
將標準輸出和標準錯誤同時重定向到同一個文件。
command &> output_file
ls -l * &> all_output.txt
#ls -l * 會列出所有文件,如果某些文件不存在,會產生錯誤信息。
#&> 將標準錯誤輸出重定向到標準輸出,因此錯誤信息也會被保存到 all_output.txt
linux 中創建空文件的四種方式
echo a.txt
touch b.txt
cat > c.txt
(按ctrl+c退出)vi d.txt
(:wq 退出)
3.2 顯示文件內容的前幾行
head - n
+行數值+文件名
3.3 顯示文件的后幾行
tail –n
+行數值 +文件名
3.4 單頁瀏覽文件
more
或者less
(很雞肋。查看大文件使用)、
3.5 對文件內容進行排序
sort
+文件名
3.6 查看文件內容類型
file
+文件名 (根據文件內容,判別文件類)
3.7 報告或刪除文件中重復的行
uniq
+文件名
-c
在輸出行前面加上每行在輸入文件中出現的次數。
-d
僅顯示重復行。
-u
僅顯示不重復的行
3.8 統計指定文件中的行數、字數、字節數
wc
+文件名
-c
統計字節數。
-l
統計行數。
-m
統計字符數。這個標志不能與 -c 標志一起使用。
-w
統計字數。一個字被定義為由空白、跳格或換行字符分隔的字符串
3.9 漢字編碼轉換
iconv -f
+原始編碼+-t
+目標編碼
iconv -f utf-8 -t gb2312 hanzi>hanzi1
#將hanzi文件內容以utf-8編碼轉化為gb2312編碼并保存到hanzi1文件中
3.10 搜索文件內容 grep
grep
+[選項]+[關鍵字或查找模式]+[文件名 1,文件名 2,……]
^
以什么開頭 ,例如 ls –l | grep ^d
顯示當前目錄下的所有子目錄的詳細信息。
$
以什么結尾 。例如 ls –l | grep c$
顯示當前目錄下以 c 結尾的文件。
- 常用的參數:
-F
每個模式作為固定的字符串對待
-c
只顯示匹配行的數量。
-i
比較式不區分大小寫。
-n
在輸出前加上匹配串所在的行號。 - grep 通配符
.*
一個或任意多個字符.
一個字符[]
范圍
4. 其他命令
4.1 管道與命令替換
管道:是重定向的一種,就像一個導管一樣,將一個程序或命令的輸出作為另一個程序或命令的輸入。
ls -l /etc| wc -l #統計etc目錄下個數(原理ls輸出該目錄下每個文件占一行的詳細信息,wc統計有多少行數因此知道有多少個文件)
4.2 文件或目錄的創建掩碼
umask
是一個掩碼值,用于限制新創建的文件和目錄的默認權限。它的作用是通過減法的方式,從文件或目錄的初始權限中“屏蔽掉”某些權限。
- 假設當前的
umask
值為002
:- 文件的初始權限:
666
- 屏蔽的權限:
002
。 - 最終權限:
666 - 002 = 664
- 文件的初始權限:
- 對于目錄:
- 目錄的初始權限:
777
- 屏蔽的權限:
002
- 最終權限:
777 - 072 = 775
- 目錄的初始權限:
- umask 的作用
- 安全性:通過限制新文件和目錄的默認權限,防止不必要的訪問。
- 一致性:確保所有用戶在創建文件和目錄時遵循統一的權限規則。
4.3 文檔管理
tar
+[主選項+輔選項] +目標文檔源文件或目錄
c
:創建新的檔案文件。
r
: 要把存檔的文件追加到檔案文件的末尾。
x
:從檔案文件中釋放文件。
f
:使用檔案文件或設備。
v
:在歸檔過程中顯示處理的文件。
z
:用 gzip 來壓縮/解壓縮文件,后綴名為.gz,加上該選項后可以將檔案文件進行壓縮。
需要注意,在linux系統下“打包”與“壓縮”是兩個操作步驟。
示例 1:創建一個未壓縮的歸檔文件
tar -cvf archive.tar file1 file2 directory1
-c
:創建歸檔文件。-v
:顯示詳細信息。-f
:指定歸檔文件的名稱為archive.tar
。(需注意第一個是目標文件,后面跟的是打包文件)file1
、file2
、directory1
:要歸檔的文件和目錄。
(僅歸檔不壓縮,相當于拿大箱子裝了一堆文件,一般來說箱子占內存要略大于總文件和)
示例 2:創建一個 gzip 壓縮的歸檔文件
tar -czvf archive.tar.gz file1 file2 directory1
-z
:使用gzip
壓縮。
示例 3:解壓未壓縮的歸檔文件
tar -xvf archive.tar
-x
:解壓歸檔文件
示例 4 :解壓 gzip 壓縮的歸檔文件
tar -xzvf archive.tar.gz
-z
:使用gzip
解壓。
4.4 scp 遠程 copy 文件命令
scp -r filename username@ip:path
filename
:文件名稱
username
:copy 到的目標主機的用戶名
ip
:目標主機 IP
path
:目標主機路徑
scp -r file3 king@192.168.4.52:~/ #從本機 copy 到其他機器
scp -r king@192.168.4.52:~/file3 . #從其他機器 copy 到本機 ,注意最后要加.表示下載當前文件夾
4.5 ssh遠程登錄
ssh 用戶名@IP
4.6 用來查看和配置網絡設備
ifconfig
查看網絡信息。
ifconfig 網卡名 down
關閉網絡
ifconfig 網卡名 up
開啟網絡
4.7 查看設置路由
route
當網絡不通時,通過執行 route 查看路由,查看網關配置是否正確。
5.vim編輯器
5.1 命令狀態和編輯狀態
vim剛進入時默認為命令狀態,鍵盤對應的按鍵為命令,需要輸入關鍵命令才能進入編輯狀態。
新增:
a
從光標后面開始添加文本。
A
從光標所在行的末尾開始添加文本。
插入:
i
從光標前面開始插入文本。(最常用)
I
從光標所在行的開始處插入文本。
在命令模式中輸入 gg=G
可以自動對齊
5.2 刪除與修改
x
刪除光標處的字符。
dd
刪除光標所在的整行。
3dd
刪除光標所在行以及下面的兩行(刪除 3 行)。
D
刪除光標到行尾的文本,常用語刪除注釋語句 (d$)。
yy
復制光標所在的整行。
[n]yy
從光標開始往下復制n行,[n]表示一個整數。
p
將復制后的文本粘貼到光標處。
u
撤銷上次操作。
5.3 光標移動
^
光標移動到行首
$
光標移動到行尾
Ctrl+d
向下翻半頁
Ctrl+f
向下翻一頁
Ctrl+u
向上翻半頁
Ctrl+b
向上翻一頁
gg
光標定位到文檔頭
G
光標定位到文檔尾
H
光標定位到當前頁首
L
光標定位到當前頁的最后一行的行首
w
光標往后移一個字
b
光標往前移一個字
[n]+
光標向后移動 n 行,[n]
表示一個整數 10+
[n]-
光標向前移動 n 行,[n]
表示一個整數
[n]G
10-光標定位到第 n 行行首, [n]
表示一個整數 20G
5.4 查找與替換
/[str]
查找字符串 str,[str]表示要查找的字符串回車后會加亮顯示所有找到的字符串,接著命令 n
移動到下一個找到的字符串。shift+n
移動到上一個匹配字符串
:s /[str1]/[str2]
把str1字符串替換為str2字符串。 /i
忽略大小寫 /g
全部匹配
- 部分替換
:3,6 s/[src]/[dst]/ig
(3-6 行中找src換成dst) - 全部替換
:%s/[src]/[dst]/g
將文檔中所有 src 的字符串替換為 dst 字符串
:%s/^ //g
將文檔每一行的行首的空格去掉
5.5 塊操作
v
可視化塊選擇狀態,選中塊之后,可以對塊進行刪除(d),復制(y),剪切(x),撤銷(u)
Ctrl +v
豎向選擇模式,主要用于批量注釋代碼,輸入步驟如下:
- 首先按
ctrl+v
,豎選選中要注釋的行 - 輸入
I
(注意是大寫的 I),然后輸入//
- 再輸入
esc
,就會看到選中的行被注釋了。
5.6 文檔保存及退出
結束編輯:
:q
在未修改文檔的情況下退出
:q!
放棄文檔的修改,強行退出
:w
文檔存盤
:wq
文檔存盤退出
其他:
:help
查看該命令的幫助提示(不常用,當不小心按 F1時,通過:q 進行退出)
ctrl+s
鎖死vim面板,需要按ctrl+q
來恢復。
6.sed
sed
: 管道查找替換程序
s/舊內容/新內容/選項
-i
選項表示直接修改文件內容,而不是將結果輸出到標準輸出(如終端)。如果沒有-i
,sed
會將結果輸出到終端,而不會修改文件。s
表示替換操作。g
表示全局替換
cat a.txt | sed 's/aa/bb/' > b.txt
#將 a.txt 中的 aa 替換成 bb 并重定向輸出到 b.txt 中。
sed -i "s/printf/puts/g" *.c
#對當前目錄下所有以 .c 結尾的文件進行批量替換操作
find . -name "*.c" |xargs sed -i "s/puts/printf/g"
# 遞歸查找當前目錄及其子目錄中所有以 .c 結尾的文件,并將這些文件中的 puts 替換為 printf,同時直接修改文件內容。