csdn彙總
文件的操作命令(增刪改查)
-
touch 文件名稱: 文件的創建(增)
-
cat/more/less/tail 文件名稱 文件的查看(查)
-
cat: 查看顯示文件內容
- more: 可以顯示百分比,回車可以向下一行, 空格可以向下一頁,q可以退出查看
- less: 可以使用鍵盤上的PgUp和PgDn向上 和向下翻頁,q結束查看
-
tail-10 : 查看文件的後10行,Ctrl+C結束 ####注意:命令 tail -f 文件 可以對某個文件進行動態監控,例如tomcat的日誌文件, 會隨着程序的運行,日誌會變化,可以使用tail -f catalina-2016-11-11.log 監控 文 件的變化(這裏可以實現動態觀察日誌文件的作用)
- vim 文件: 修改文件的內容(改)
vim編輯器是Linux中的強大組件,是vi編輯器的加強版,vim編輯器的命令和快捷方式有很多,但此處不一一闡述,大家也無需研究的很透徹,使用vim編輯修改文件的方式基本會使用就可以了。
在實際開發中,使用vim編輯器主要作用就是修改配置文件,下面是一般步驟:
vim 文件——>進入文件—–>命令模式——>按i進入編輯模式—–>編輯文件 ——->按Esc進入底行模式—–>輸入:wq/q! (輸入wq代表寫入內容並退出,即保存;輸入q!代表強制退出不保存。)
- rm -rf 文件: 刪除文件(刪)
同目錄刪除:熟記 rm -rf 文件 即可
shell幾個特殊字符用來處理參數:
參數處理 | 說明 |
:——- | ———————————: |
$# | 傳遞到腳本的參數個數 |
$* | 以一個單字符串顯示所有向腳本傳遞的參數。 |
如”$*“用「”」括起來的情況、以”$1 $2 … $n”的形式輸出所有參數。 | |
$$ | 腳本運行的當前進程ID號 |
$! | 後臺運行的最後一個進程的ID號 |
$@ | 與$*相同,但是使用時加引號,並在引號中返回每個參數。 |
如”$@”用「”」括起來的情況、以”$1” “$2” … “$n” 的形式輸出所有參數。 | |
$? | 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。 |
$- | 顯示Shell使用的當前選項,與set命令功能相同。 |
進程前後臺切換
和前端有交互的不能放後臺,否則就暫停不能執行。
- ⑴把進程放後臺的方法
- 命令 &
- 按下ctrl+z快捷鍵,放在後臺暫停
- ⑵jobs-l 查看後臺工作
- ⑶fg %工作號 將後臺暫停的工作恢復到前臺執行
- ⑷bg %工作號 將後臺暫停的工作恢復到後臺執行
- ⑸後臺命令脫離終端的方法
- 加入到/etc/rc.local文件
- 使用nohup
解壓縮
.tar.gz結尾的 壓縮 tar -zcvf 打包文件名(可以加絕對路徑) 被打包的文件 解壓縮 tar -zxvf tar -zxvf 解壓縮文件 -C 目標位置 .tar.bz2結尾的 壓縮 tar -jcvf 打包文件名(可以加絕對路徑) 被打包的文件 解壓縮 tar -jxvf tar -jxvf 解壓縮文件 -C 目標位置
Linux 系統中查看 inode 號可使用命令 stat 或 ls -i
|stat /home/harris/source/glibc-2.16.0.tar.xz File: `/home/harris/source/glibc-2.16.0.tar.xz’ Size: 9990512 Blocks: 19520 IO Block: 4096 regular file Device: 807h/2055d Inode: 2485677 Links: 1 Access: (0600/-rw——-) Uid: ( 1000/ harris) Gid: ( 1000/ harris) … … |# mv /home/harris/source/glibc-2.16.0.tar.xz /home/harris/Desktop/glibc.tar.xz |# ls -i -F /home/harris/Desktop/glibc.tar.xz 2485677 /home/harris/Desktop/glibc.tar.xz
硬鏈接和軟鏈接
若一個 inode 號對應多個文件名,則稱這些文件爲硬鏈接。換言之,硬鏈接就是同一個文件使用了多個別名
link oldfile newfile ln oldfile newfile
由於硬鏈接是有着相同 inode 號僅文件名不同的文件,因此硬鏈接存在以下幾點特性:
- 文件有相同的 inode 及 data block;
- 只能對已存在的文件進行創建;
- 不能交叉文件系統進行硬鏈接的創建(因爲不同文件系統可能含有相同 inode號的不同文件);
- 不能對目錄進行創建,只可對文件創建;
- 刪除一個硬鏈接文件並不影響其他有相同 inode 號的文件。
硬鏈接不能對目錄創建是受限於文件系統的設計(見 清單 4.對目錄創建硬 鏈接將失敗)。現 Linux 文件系統中的目錄均隱藏了兩個個特殊的目錄: 當前目錄(.)與父目錄(..)。查看這兩個特殊目錄的 inode 號可知其實 這兩目錄就是兩個硬鏈接(注意目錄 /mnt/lost+found/ 的 inode 號)。若系統允許對目錄創建硬鏈接,則會產生目錄環。
軟鏈接與硬鏈接不同,若文件用戶數據塊中存放的內容是另一文件的路徑名的指向,則該文件就是軟連接。軟鏈接就是一個普通文件,只是數據塊內容有點特殊。軟鏈接有着自己的 inode 號以及用戶數據塊(見 圖 2.)。因此軟鏈接的創建與使用沒有類似硬鏈接的諸多限制:
- 軟鏈接有自己的文件屬性及權限等;
- 可對不存在的文件或目錄創建軟鏈接;
- 軟鏈接可交叉文件系統;
- 軟鏈接可對文件或目錄創建;
- 創建軟鏈接時,鏈接計數 i_nlink 不會增加;
- 刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱爲死鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復爲正常的軟鏈接)。
使用命令 find 查找軟鏈接與硬鏈接
// 查找在路徑 /home 下的文件 data.txt 的軟鏈接
# find /home -lname data.txt
/home/harris/debug/test2/a
// 查看路徑 /home 有相同 inode 的所有硬鏈接
# find /home -samefile /home/harris/debug/test3/old.file
/home/harris/debug/test3/hard.link
/home/harris/debug/test3/old.file
# find /home -inum 660650
/home/harris/debug/test3/hard.link
/home/harris/debug/test3/old.file
// 列出路徑 /home/harris/debug/ 下的所有軟鏈接文件
# find /home/harris/debug/ -type l -ls
656662 0 lrwxrwxrwx 1 harris harris 1 Sep 1 14:37 /home/harris/debug/test2/b -> a
656627 0 lrwxrwxrwx 1 harris harris 8 Sep 1 14:37 /home/harris/debug/test2/a ->
data.txt
789467 0 lrwxrwxrwx 1 root root 8 Sep 1 18:00 /home/harris/debug/test/soft.link ->
old.file
789496 0 lrwxrwxrwx 1 root root 7 Sep 1 18:01
/home/harris/debug/test/soft.link.dir -> old.dir
Linux查看日誌命令
- 第一種:查看實時變化的日誌(比較吃內存)
最常用的:
tail -f filename (默認最後10行,相當於增加參數 -n 10)
Ctrl+c 是退出tail命令
其他情況:
tail -n 20 filename (顯示filename最後20行)
tail -n +5 filename (從第5行開始顯示文件)
- 第二種:搜索關鍵字附近的日誌
最常用的:
cat -n filename |grep "關鍵字"
其他情況:
cat filename | grep -C 5 '關鍵字' (顯示日誌裏匹配字串那行以及前後5行)
cat filename | grep -B 5 '關鍵字' (顯示匹配字串及前5行)
cat filename | grep -A 5 '關鍵字' (顯示匹配字串及後5行)
-
第三種:進入編輯查找:vi(vim)
- 1、進入vim編輯模式:vim filename
- 2、輸入“/關鍵字”,按enter鍵查找
- 3、查找下一個,按“n”即可
退出:按ESC鍵後,接着再輸入:號時,vi會在屏幕的最下方等待我們輸入命令
wq! 保存退出;
q! 不保存退出;
其他情況:
/關鍵字 注:正向查找,按n鍵把光標移動到下一個符合條件的地方
?關鍵字 注:反向查找,按shift+n 鍵,把光標移動到下一個符合條件的
vim相關
:set nu 設置行號
:set nonu 取消行號
😒/a/b/g 替換當前行所有 a 爲 b
dd 刪除所在行
/string 搜索指定字符串(不需要獨立成一個完整單詞),忽略大小寫 :set ic 找下一個出現位置 n
:w 保存修改
:wq 保存退出
q!不保存退出
:wq!保存修改退出(文件所有者和root用戶)
在VIM中進行文本替換:
1. 替換當前行中的內容: :s/from/to/ (s即substitude)
:s/from/to/ : 將當前行中的第一個from,替換成to。如果當前行含有多個
from,則只會替換其中的第一個。
:s/from/to/g : 將當前行中的所有from都替換成to。
:s/from/to/gc : 將當前行中的所有from都替換成to,但是每一次替換之前都
會詢問請求用戶確認此操作。
注意:這裏的from和to都可以是任何字符串,其中from還可以是正則表達式。
2. 替換某一行的內容: :33s/from/to/g
:.s/from/to/g : 在當前行進行替換操作。
:33s/from/to/g : 在第33行進行替換操作。
:$s/from/to/g : 在最後一行進行替換操作。
3. 替換某些行的內容: :10,20s/from/to/g
:10,20s/from/to/g : 對第10行到第20行的內容進行替換。
:1,$s/from/to/g : 對第一行到最後一行的內容進行替換(即全部文本)。
:1,.s/from/to/g : 對第一行到當前行的內容進行替換。
:.,$s/from/to/g : 對當前行到最後一行的內容進行替換。
:'a,'bs/from/to/g : 對標記a和b之間的行(含a和b所在的行)進行替換。
其中a和b是之前用m命令所做的標記。
4. 替換所有行的內容: :%s/from/to/g
:%s/from/to/g : 對所有行的內容進行替換。
5. 替換命令的完整形式: :[range]s/from/to/[flags]
5.1 s/from/to/
把from指定的字符串替換成to指定的字符串,from可以是正則表達式。
tail顯示後幾行
- -f 循環讀取
- -n 顯示行數 不加-n默認是顯示後10行
行數>
tail -n 1000:顯示最後1000行 tail -n +1000:從1000行開始顯示,顯示1000行以後的
kill 殺死進程
- kill -1 進程號 重啓進程
- kill -9 進程號 強制殺死進程
- kill -15 進程號 默認的,正常結束進程,如果發生問題,就會嘗試kill -9
grep
把匹 配的行打印出來
-
-i 不區分大小寫
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -i 'line2' grep.txt grep line2 grep LINE2
-
-c統計匹配到的次數
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -c 'line1' grep.txt
-
-n顯示行號
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -n 'line1' grep.txt 1:grep line1 6:grep line1
-
-v查找不包含指定內容的行
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -v 'line1' grep.txt
-
-r逐層遍歷目錄查找
grep -r 字符串 文件名 -A -B -C 後多少行,前多少行,前後多少行 mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -A1 'line2' grep.txt mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -B1 'line2' grep.txt mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -C1 'line2' grep.txt
-
-w 精確匹配單詞
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -w 'line1' grep.txt grep line1 grep line1 mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep 'line1' grep.txt grep line1 grep line1 grep line1line
-
-e 與/或
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ cat grep.txt grep line1 grep LINE2 grep line1line // 與 mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -e 'line1\+line' grep.txt grep line1line // 或 mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -e 'line1\|line2' grep.txt grep line1 grep line1line
-
找到以grep開頭的行
grep$ grep '^grep' grep.txt
-
找到以line1結尾的行
grep 'line1$' grep.txt
-
找到空行
grep '^$' grep.txt
-
將grep的輸出到指定文件
grep 'line1$' grep.txt > heidou.txt