主頁 > 作業系統 > 學習Linux的第七天

學習Linux的第七天

2020-09-12 02:42:35 作業系統

services.msc Windows服務視窗命令
#####
ctrl+alt 釋放滑鼠
ip address show 網路Ip查詢
ctrl + alt + f1/f2 圖形與命令視窗切換
#####

Ctrl + alt + f1~f7 表示七個終端,也就是七個螢屏的含義

ssh [email protected] (遠程連接命令)
touch 觸摸
cd
date 時間
which 在哪
echo 列印 語法 echo "內容 " 螢屏顯示 內容
cat 查看
stat 查看檔案詳細資訊
whereis
file

*********************************************************************************************************************************************************************************************************************************************************************************************************************
Linux命令列常用快捷鍵方式
Ctrl+c cancel 取消當前操作
+l 清屏
+d 退出當前用戶
+a 游標移到到行首
+e 游標移到到行尾
+u 洗掉游標到行首內容

**********************************************************************************************************************************************************************************************************************************************************************************************************************

 

Linux命令列:
命令+空格+引數(可寫可不寫)+空格+檔案,檔案夾(可寫可不寫)
基本命令用法如上:1.一般情況下Linux命令的引數,都是可選的,可寫可不寫,不同的引數作用也不一樣 2.Linux命令之間,必須得有一個或者多個空格

whoami 我是誰 ,顯示當前登錄的用戶
hostname 顯示當期機器的主機名
pwd 顯示當前的作業目錄絕對路徑

[root@Luffycity opt] Linux的命令提示符含義分別表示 root:登錄的用戶 @:占位符 Luffycity:當前機器的名字 空格 opt:當前你所在的作業目錄

Linux目錄結構:
/
/dev存放抽象硬體 dev boot /boot存放內核與啟動檔案
/lib存放系統庫檔案 lib bin /bin存放二進制檔案(可執行命令)binary 二進制的縮寫含義 只要發現目錄中有bin相關的字,說明這個檔案夾里面存放可執行檔案
/sbin 存放特權級二進制檔案 sbin usr /存放安裝程式(軟體默認目錄)
/var 存放經常變化的檔案(/var/log/ 日志存放 ) var mnt /mnt檔案掛載目錄(U盤,光驅)
/home 普通用戶目錄 home root /root特權用戶目錄
/etc 存放組態檔目錄(/etc/nginx.conf 或者 etc/my.cnf) etc opt /opt大型軟體存放目錄(非強制) 如;/opt/python36 /opt/mysql /opt/redis
/sys 系統檔案 srv /服務相關資料
/run 里面的東西是系統運行時需要的, 不能隨便洗掉. 但是重啟的時候應該拋棄. 下次系統運行時重新生成
/proc 記憶體系統檔案 tmp / 臨時檔案夾


etc重要組態檔
/etc/sysconfig/network-scripts/ifcfg-ens33 (網卡組態檔)
/etc/profile.d用戶登錄后執行的腳本所在的目錄


linux核心命令與檔案管理:

Linux的命令引數可以簡寫 如 ls -l -h 等于ls -lh

cd命令 change directory的縮寫 更改目錄的意思
cd語法:cd 可選的引數 檔案夾

幾個特殊目錄:
.當前的作業目錄
..上一級的作業目錄
-上一次的作業目錄
~當前系統登錄的用戶家目錄
.當前目錄 /根目錄 ./ 當前目錄下的某內容

************************************************************************************************************************************************************************************************************************************************************************************************************************


【ls命令】
list 列出檔案夾中的內容
ls語法:ls 可選引數 可選的的檔案夾物件
-a all的意思顯示所有的目錄及隱藏目錄 【】
-l 詳細輸出檔案夾中內容 【】
-h 以人類可閱讀的方式輸出檔案大小 【】
--full-time 已完整的時間格式輸出 【】
-t 根據最后修改的時間排序檔案
-F 在不同的檔案結尾,輸出不同的特殊符號
以/結尾的是檔案夾 以*結尾的就是可執行檔案 以@結尾的是軟連接,快捷方式 普通檔案型別,結尾什么都沒有
-d顯示檔案夾本身資訊,不輸出其中的內容
-r reverse 逆轉排序
-S 大寫的S,針對檔案大小進行排序,默認是從大到小
-i 顯示出檔案的inode資訊(檔案的身份證號,存盤了檔案的元資訊,檔案的大小,位置,權限等等)

pwd命令
print work directory 列印作業目錄的意思
會輸出當前所處的一個絕對路徑

 

su命令
su 命令用戶切換
語法:su - 用戶名 # 完全的環境變數用戶切換

 

logout 退出當前系統用戶


【mkdir 】
make directory 【創建檔案夾 】
語法 mkdir 檔案夾名字
引數用法:
-p 遞回創建檔案 【】
mkdir -p /opt/lodboy-linux/yuchao/chaoge # 遞回創建檔案夾,絕對路徑是/opt/oldboy_linux/yuchao/chaoge


絕對相對路徑與touch
/opt/lodboy/alex 從根目錄開始尋找,就是絕對路徑寫法 ,只要不是從根目錄開始尋找,就是相對路徑./lodboy/alex

【touch 命令】
1用法:touch{選項}...檔案...
將每個檔案的訪問時間和修改時間改為當前時間

touch有兩個作用
1.創建普通檔案,在Linux下檔案的后綴格式僅僅是一個名字而已,通過touch創建的檔案都是普通檔案
1.修改檔案的時間

不存在的檔案將會被創將為空檔案夾,除非使用-或者-h 選項

touch {連續數字或者字母} 創建多個檔案系列【】
如:touch {1..10} 或touch {a..z}

-c ,--no-create 不創建任何檔案
-t STAMP 使用{{CC}YY}MMDDhhmm{.ss} 格式的時間代替當前時間
-r,reference=檔案 使用指定檔案的時間屬性代替當前檔案時間
touch -t 修改檔案的時間 touch -t 2002010808 .fangfang.txt


********************************************************************************************************************************************************************************************************************************************************************************************************************************
復制加粘貼
【cp命令】
用法:cp [選項]...[-T] 源檔案 目標檔案
或:cp [選項]...源檔案...目錄
或:cp [選項]...-t 目錄 源檔案...
將源檔案復制至目標檔案,或將多個源檔案復制至目標目錄

-r 遞回式復制目錄,即復制目錄下的所有層級的子目錄及檔案 【】
-p 復制的時候保持屬性不變
-d 復制的時候保持軟連接(快捷方式)
-a 等于-pdr
-p 等于--preserve=模式,所有權,時間戳,復制檔案時保持源檔案的權限,時間屬性
-i,--interactive 覆寫前詢問提示

案例
1.復制普通檔案
cp命令 + 你想復制哪個檔案 + 復制之后的檔案名
2.復制普通檔案,且改名,放入到另一個檔案夾中
cp. mjj.txt ./oldboy/ #復制放入其他檔案夾,保留源檔案名
cp. mjj.txt ./lodboy/ mjj.txt2 # 復制檔案放入其他檔案夾,且改名

3.一次性復制多個檔案,放入另一個檔案夾中
cp mjj.exe mjj.gif ./mjj/

4.復制整個檔案夾,必須加上-r引數 【】
cp -r mjj mjj2

5.復制且保持檔案屬性不變,-p 引數用法
cp -p chaoge.txt chaoge.txt.3

6.拷貝軟連接的時候,保持連接屬性不變 -d 引數

7.-i 引數的用法,覆寫檔案前提示
cp -i 檔案1 檔案2 # 如果檔案2已經存在,則會覆寫,-i會讓用戶進行輸入y確認覆寫 備注:默認系統做了 alisa別名功能,讓我們輸入cp的時候,其實cp是 -i 引數

【mv命令】
mv命令就是move的縮寫,作用是移動或是重命名檔案
用法:mv[選項]...[-t]...源檔案 目標檔案
或:mv[選項]...源檔案...目錄
或:mv[選項]...-t 目錄 源檔案...
將源檔案重命名為目標檔案,或將源檔案移動至指定目錄
-f,--forcr 覆寫前不詢問
-i,--interactive 覆寫前詢問

案例:
1.移動檔案到另一個檔案夾
mv ./mjj.jj ./oldboy #把當前的mjj.jj檔案 移動到oldboy檔案夾中

2.移動多個檔案,放到另一個檔案夾中
mv luffy* ./oldboy/ #將當前目錄所以以luff開頭的檔案,檔案夾,都移動到oldboy目錄下去

3.重命名用法
mv 舊的檔案名 新的檔案名
mv mjj.txt mjj.txxxt

4.-i引數的有用法,覆寫前詢問
mv 在直接輸入的時候,系統做了別名alias,其實敲的是mv -i
語法是:如果修改后的檔案名,已經存在,則會詢問,是否要覆寫該檔案
mv mjj.txt mjj.exe #如果mjj.exe 已經存在了,則會詢問是否覆寫它

5.強制性覆寫 -f

【rm命令】
mr命令就是remove 的含義,洗掉一個或者多個檔案,這是Linux系統的重要命令
-f, --foree 強制洗掉,忽略不存在的檔案,不提示確認
-i, 在洗掉前需要確認
-T 在刪出超過三個檔案或者遞回洗掉前要求確認
-d, --dir 洗掉空目錄
-r,-R -- 遞回洗掉目錄及其內容 【】
--help 顯示此幫助資訊并退出
--version 顯示版本資訊并退出

案例:
1.洗掉普通檔案,就是默認添加了-i引數,詢問是否洗掉
rm change.txt ,洗掉前會提問,是否洗掉
2.一次性洗掉多個檔案
rm chaoge.txt.2 chaoge.txt.3 #洗掉多個檔案,寫入多個名字,【空格分隔】
3. 洗掉檔案夾,必須給rm【添加-r引數】才行,默認rm只能洗掉檔案型別
rm -r mjj #洗掉mjj檔案夾以及里面內容
4.-d 引數,只能用于洗掉空檔案夾
rm -d llovlinux/
5.強制洗掉檔案,且不提示
rm -f mjj* #強制洗掉以及mjj開頭的檔案,檔案夾無法洗掉
6.強制洗掉所有檔案和檔案夾 【】
rm -f -r ./* #一定要看清楚此命令,寫的是否正確

【】
.當前目錄 /根目錄 ./ 當前目錄下的某內容
rm -rf / * #強制性洗掉 根目錄下所有內容,非常危險,嚴禁敲打,洗掉機器所有內容
rm -rf ./* #強制性洗掉,相對路徑 ,當前目錄下所有內容
7.-v 引數,顯示洗掉的程序
[root@luffyycity opt]# rm -rfv ./* #強制性洗掉當前目錄所有內容 ,且顯示程序


Linux幫助命令
man 命令 --help info
語法 :
如:man ls 如 :rm --help 如:info 命令


Linux開關機命令
shutdown 重啟或者關機
語法
重啟
1. -r #-reboot :shutdown -r 10 或者10:30(時間)now立刻重啟
關機
2.shutdown -h 10 十分鐘后關機,0,now 立刻關機
3.reboot 重啟 poweroff 關機 int 0 切換運行級別為0 ,0 表示關機,6表示重啟 logout注銷退出當前用戶 exit 注銷快捷鍵ctrl+date


************************************************************************************************************************************************************************************************************************************************************************************************************************************


Linux的環境變數
查看Linux下的PATH環境變數
執行命令 echo $PATH
echo $PATH $符號后面跟上PATH,表示輸出PATH的變數
PATH (一定是大寫)這個變數是由一堆目錄組成,分隔符是“:“,不同于Windows的”;“





*******************************************************************************************************************************************************************************************************************************************************************************************************************************************




【 vim的使用】
vi filename 進入命令模式,
vim 使用流程:
vim 默認機器是不安裝的,需要手動安裝這個工具命令
yum install vim -y #通過yum軟體管理工具,安裝命令vim,且默認是yes,這個命令得保證機器能夠上網
當vim 打開不存在的檔案的時候,默認會創建檔案
#語法:
1.vim 檔案名 #打開檔案
2.輸入字母 i ,進入編輯模式,代表insert
輸入字母o,在游標下一行開始編輯
3.寫完代碼之后,按下esc,退出編輯模式
4.此時輸入冒號,進入底線命令模式,然后輸入
:wq! 強制寫入檔案內容且退出vim,write quit ! 強制的
:q! 不報錯直接退出
5.注意輸入的冒號得是英文輸入法的狀態

vim快捷鍵
vim 提供的上下左右
h向左 j向下 k向上 I右 游標移到本行開頭home 移到本行末尾 end

移動游標的快捷鍵盤
w(e)移動到下一個單詞
b 移動到上一個單詞

數字0移動到行首
字符$移動到行尾
ctrl + f 下一頁 ctrl+b 上一頁
`. 移動游標到上一次的修改行

按下gg 移動到文章的開頭 G移動到文章的結尾
按下H 移動到螢屏的開頭 L移動到文章的結尾 M移動到螢屏的中間

命令模式的查找 【】
向下查找 語法: /+你要找的內容,
如: /love 我要查找love相關的資訊,按下n跳轉到下一個單詞

向上查找 ?你要找的內容, 按下n 尋找下一個單詞
*或者# 查找整個檔案,匹配游標所在的所有單詞,按下n查找下一處,N上一處
:n 把游標定位到檔案的第n 行,


命令模式下的復制,粘貼,洗掉
輸入 yy 復制游標所在行
輸入 4yy 復制4行內容
輸入 p 列印粘貼的內容
輸入 dd 洗掉游標當前行
輸入 D 洗掉游標當前位置到行尾的內容
輸入 x 洗掉游標當前字符,向后洗掉
輸入 X 洗掉游標當前字符,向前洗掉 洗掉一行 dd ndd 洗掉一個單詞 dw
輸入 u 撤銷上一步的動作
輸入 . 重復上一次操作


快捷操作
洗掉游標所在位置,直到行尾內容,且進入編輯模式,輸入大寫C
輸入o 在當前游標的下一行開始編輯
輸入 A 快速進入行尾,且進入編輯模式
輸入 ZZ 快捷保存退出


批量快捷操作【】
步驟:
1.輸入ctrl+v 進入可是塊模式
2.用上下左右命令,選擇你選操作的塊
3.選中塊后,輸入d ,洗掉內容

快捷插入多行
4.選中塊后,輸入大寫的I,進行寫代碼
5.按下esc兩次,會自動生成多行代碼

行號
:set nu 顯示行號
:set nonu 關閉顯示行號

注釋添加與洗掉:
1.ctrl+v 進入可視化模式
2.移動游標上移或者下移,選中多行的開頭
3.選擇完畢后,按下大寫I鍵,進入"insert"模式,輸入要插入的注釋符,如#
4.按下esc鍵,選擇代碼已被注釋
5.選擇按d 即是洗掉注釋

··········································································
替換模式

命令列下按R鍵進入替換模式
退出
esc
替換
:s/old/new 只替換游標所在行的第一個old string
:s/old/new/g 將本行(游標)的所有old string替換為new string g global n代表一個行號
:%s/old/new/g 將本文中所有的old string替換為new string
:1,2s/old/new/g 替換1到2行中的old string為new string
:.,2s/old/new/g .代表游標所在行 當前行到第二行的
:2,$s/old/new/g 替換2到最后一行中的old string為new string

:!command 在vim編輯器中執行一條命令(不許要退出當前的編輯,可以在編輯器中執行命令,類似退出編輯器執行命令)
保存檔案
可以用:n,mw filename 命令將第n 行到第m 行的文字存放的所指定的filename 檔案中,

·································································································

 

vim 交換檔案解決方法 ??????

 


【重定向符號】【】
符號 解釋
重定向的的意思是,“將資料傳到其他地方”
> 輸出覆寫重定向
>> 輸出追加重定向
<或<< 標椎輸入重定向

【案例】:
1.讀取檔案內容,且寫入到另一個檔案夾中,覆寫寫入檔案內容
cat douyin.txt > kuaishou.txt

2.追加寫入檔案內容
cat douyin.txt >> kuaishou.txt

3.重定向寫入符
cat < douyin.txt #把檔案中的資料,發送給cat命令去讀取

將文本內容拆分成多行
xargs命令

xargs -n 4 < shuzi.txt #把文本內容拆成多行

4.重定向追加寫入符 <<
可以結合cat命令使用






【cat命令】 (用于看內容較少的純文本檔案)
---------------------------------------------------------------------------------------------
功能 說明
查看檔案內容 cat file.txt (file檔案,檔案)
多個檔案合并 cat file.txt file.txt > file3.txt

cat >> file.txt <<EOF
非互動式編輯或追加內容 輸入代碼:
EOF

清空檔案內容 cat/dev/null>file.txt #/dev/null是Linux系統的黑洞檔案
-----------------------------------------------------------------------------------------------

引數
用法:cat[選項] [檔案] ...
將[檔案]或標準輸入組合輸出到標準輸出

清空檔案內容,不留空行 慎用【】
1.> 檔案名
2.直接清空檔案,留下一個空行
echo > gushi .txt
3.清空檔案內容
cat/dev/null>file.txt #/dev/null是Linux系統的黑洞檔案



-A, --show-all 等價于-vET
-b, --number-nonblank 對非空行輸出編號【】
-e 等價于 -vE
-E, --show-ends 每行結束處顯示$
-n, --number 【對輸出的所有行編號】
-s, --ssqueeze-blank 不輸出多行空行
-t 與-vT等價
-T --show-tabs 將跳格字符顯示為^I ??????????
-u 被忽略
-v, --show-nonprinting 使用^和M-參考,除了LFD和TAB之外
--help 顯示此幫助資訊并退出
--version 輸出版本資訊并退出
如果[檔案]預設,或者[檔案]為,則讀取標準輸入

案例:
cat的功能引數用法
1.查看文本內容,以及功能引數
cat gushi.txt
2.對非空行顯示行號 所有行顯示行號
cat -b gushi.txt cat -n gushi.txt
3.在每行結尾加上$符
cat -n -E gushi.txt
4.減少空行數量,多個空行,減為一個
cat -s gushi.txt

tac命令
tac命令查看檔案結果與cat想反


【 管道符】
Linux提供的管道符“|”將兩條命令隔開,【管道符左邊命令會作為管道符右邊命令的輸入】

常見用法:
#檢查Python程式是否啟動
ps -ef|grep "python"
#找到/tmp目錄下的所有txt檔案
#檢查nginx的埠是否存活
netstat -tunlp |grep ngix

1.對字串進行二次過濾
查看gushi.txt文本的內容,且對內容進行二次過濾,找出有關know me 的行
輸入: cat gushi.txt | grep "know me"
輸出: don't you know me
don't you know me by now

grep 命令
過濾字串的命令

【more命令和less命令】
分屏查看大文本內容的命令
語法:
more 檔案名 #分屏顯示檔案內容

引數:按下enter回車是下一行
空格是向下滾蛋一個螢屏大小
=顯示當前行號
按下q是退出more

# 【head和tail】
head 命令用于查看檔案開頭的n行
語法
head -5 檔案名 head 檔案名 默認十行
-c 引數,指定字符數量,顯示字符數

tail 是默認從后向前看10行,也可以指定行數 用法與head等同

-f 實時重繪檔案內容變化
引數 tail -f gushi.txt

-F 不斷打開檔案,一般和-f 結合使用

【cut命令】
cut -在檔案的每一行中提取片斷
在每個檔案FILE的各行中,把提取的片斷顯示在標注輸出
語法
cut [引數] [數值區間] 檔案1
-b 以位元組為單位分隔
-n 取消分隔多位元組字符,與-b 一起用
-c 以字符為單位
-d 自定義分隔符,默認以tab為分隔符
-f 與-d一起使用,指定顯示哪個區域
N- 第N個位元組,字符或者欄位 直至行尾
N-M 從第N到第M(并包括M)個位元組,字符或欄位
-M 從第1到第M(并包括第M)個位元組,字符或欄位

【案例】:
1.截取每一行的第四個字符
cut -c 4 alex.txt
2.截取 4到6個字符
cut -c 4-6 alex.txt
3,截取第5和7的字符
cut -c 5,7 alex.txt
4.截取一個范圍的字符,如第四個到結尾
cut -c 4- alex.txt
5.截取一個范圍的字符,如開頭到第6個字符
cut -c -6 alex.txt

6.指定分隔符,進行截取
cut -d ":" -f
區域范圍 alex.txt
找出第三個區域的內容【】
cut -d ":" -f 3 alex.txt
找出開頭到第三個區域的內容
cut -d ":" -f -3


【sort命令】
sort命令將輸入的檔案內容按照規則【排序】,然后輸出結果
用法 : sort [選項] ...[檔案]...
或 : sort [選項]...--files0-from=F
串聯排序所有指定檔案并將結果寫到標準輸出

-b,--ignore-leading-blanks 忽略前導的空白區域
-n,--numeric-sort 根據字串數值比較 【】
-r,--reverse 逆序輸出排序結果【】
-u,--unique 去重排序 配合-c,嚴格校驗排序;不配合-c,則只輸出一次排序結果 ??????????
-t,--field-separator=分隔符 使用指定的分隔符代替非空格到空格的轉換【】
-k,--key=位置1[,位置2] 在位置1開始一個key,在位置2 終止(默認為行尾)

案例:
1.對檔案第一個字符進行排序,默認從小到大
sort -n file.txt
2.對排序結果反轉,從大到小排序
sort -n -r file.txt
3.對排序結果去重【】
sort -u file.txt
4.指定分隔符號,指定區域進行排序,從小到大【】
sort -n -t "." -k 4 ip.txt

【uniq命令】
uniq命令可以輸出或者忽略檔案的重復行,常與sort排序結合使用
用法: uniq [選項]...[檔案]
從輸入檔案或者標準輸入中篩選相鄰的匹配行并寫入到輸出檔案或標準輸出

不附件任何選項時匹配行將在首次出現處被合并
-c, --count 在每行前加上表示相應行目出現次數的前綴編號
-d, --repeated 只輸出重復的行
-u, --unique 只顯示出現過一次的行,注意了,uniq的只出現過一次,是針對-c統計之后的結果

案例:
1.去除連續的重復行
uniq luffy.txt
2.結合sort使用,去重更精準
sort -n luffy.txt | uniq
3.統計每一行重復次數
sort -n luffy.txt |uniq -c
4.只找出檔案中重復行,且統計出現次數【】
sort -n luffy.txt |uniq -d -c
5.找出只出現過一次的行
sort -n luffy.txt | uniq -c -u


【wc 命令】
wc 命令用于統計檔案的行數,單詞,位元組數

-c, --bytes列印位元組數
-m, --chars列印字符數
-l, --lines列印行數
-L, --max-lines-length 列印最長行的長度
-w, --words 列印單詞數

語法: wc [引數] [檔案名]

字串結尾有一個$符,所以 echo "chaoge" |wc -m 輸出7個字符數

w命令 查詢幾人登錄機器

【tr命令】
tr命令從標準輸入中【替換】,縮級訓洗掉字符,將結果寫入到標準輸出
用法:tr [選項]...SET1 [SET2]
從標準輸入中替換,縮減和/或洗掉字符,并將結果寫到標準輸出
字符集1:指定要轉換或洗掉的原字符集
當執行轉換操作是,必須使用引數“字符集2”;
但執行洗掉操作時,不需要引數“字符集2”
字符集2:指的是要轉換成的目標字符集

-c 或 --complerment;取代所以不屬于第一字符集的字符
-d 或 --delete;洗掉所有屬于第一字符集的字符
-s 或 --squeeze-repeats ;把連續重復的字符以單獨一個字符表示
-t 或 --truncate-set1:先洗掉第一字符集較第二字符集多出的字符
案例:
1.替換標準輸入中的大小寫
echo "my name is alex" | tr '[a-z]' '[A-Z]'
2.使用-d 洗掉引數
echo "my name is alex i an 999 years old" |tr -d 'a-z'
3.把檔案當做標準輸入,進行字符替換
tr 'a' 'A' < alex.txt
4.把連續重復的字符以單獨一個字符表示
echo "iii am aaaaaaaalllllexxxxx" | tr -s 'iaxl' 輸出 i am alex

 


【stat命令】
用于顯示檔案的狀態資訊,stat命令的輸出比ls 命令的輸出資訊要更加詳細
語法 sata 選項 引數

-L, --dereference 跟隨鏈接
-f. --file-system 顯示檔案系統狀態而非檔案狀態
-c, --dormat=格式 使用指定輸出格式代替默認值,沒用一次指定格式換一行新
--printf=格式 類似 --format,但是會結束反斜杠轉義符,不使用換行作輸出結尾,如果您仍希望使用換行,可以在格式中加入 '\n'
-t --terse 使用簡潔格式輸出

******************************************************************************************************************************************************************************************************************************************************************************************

【find 命令】
find 命令用來在指導目錄下查找檔案,任何位于引數之前的字串都將被視為欲查找的目錄名
如果使用該命令時,不設定任何引數,則find命令將在當前目錄下查找子目錄與檔案
并且將查找到的字目錄和檔案全部進行顯示

find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

fmd處理符號鏈接 要查找的路徑 引數 限定條件 執行動作
find-H -L-P PATH options tests actions

語法
1.find 查找目錄和檔案,語法:
find 路徑 -命令引數 [輸出形式] 引數說明:路徑--告訴find在哪兒找你要的東西

引數 解釋 【】【】【】
pathname 要查找的路徑

options(選項)
-maxdepth <目錄層級>:設定最大目錄層級
-mindepth <目錄層級>:設定最小目錄層級

tests(模塊)
-atime 按照檔案訪問access(訪問時間)的時間查找,單位是天
-ctime 按照檔案的改變change(更改時間)狀態來查找檔案,單位是天
-mtime 根據檔案modify(修改時間)時間查找檔案(最常用)
-name 按照檔案名字查找,支持*?[]通配符(最常用)
-gourp 按照檔案的所屬組查找
-perm 按照檔案的權限查找
按照檔案的大小為n個由后綴決定的資料塊,其中后綴為:b 代表512位元組的區塊(如果用戶沒有指定后綴),則默認為b;
-size n[cwbkMG] c:表示位元組數;k:表示kilo bytes (1024位元組);w:字(2位元組);M:兆位元組;G:千兆位元組

-type 查找某一型別的檔案;b-塊設備檔案;d-目錄;c-字符設備檔案;p-管道檔案;l-符號鏈接檔案;f-普通檔案;s-socket檔案
-user 按照檔案屬性來查找檔案
-path 配合-prune引數排除指定目錄
Actions模塊
-prune 使用find命令不在指定的目錄尋找
-delete 洗掉找出的檔案
-exec或 -ok 對匹配的檔案執行回應的shell命令
-print 對匹配的結果標準輸出

OPERATORS
! 取反
-a -o 取交集,并集,作用類似&&和\

案例: 【】
1.根據名字查找
find -name "檔案名" -delete (找出且洗掉)


Unix/linux 檔案系統每個檔案都有三張時間戳:
訪問時間(-atime/天 ,-amin/分鐘):用戶最近訪問時間(檔案修改了,還未被讀取過,則不變)
修改時間(-mtime,-mmin):檔案最后一次修改時間(資料變動)
變化時間(-ctime,-cmin):檔案資料元(例如權限)最后一次修改時間
備注:檔案任何資料改變,change變化,無論元資料變動,或是對檔案mv,cp等
檔案內容被修改時,modify 和change更新
當change更新后,第一次訪問該檔案(cat,less),access time首次更新,之后則不會
touch -a :僅更新Access time (同時更新change為current time)
touch -m :僅更新modify time(同時更新change為current time)

2.find根據修改時間查找檔案
一天以內,被訪問access過的檔案 一天以內,內容變化的檔案 恰好在七天內被訪問過的檔案
find . -atime -1 find . -mtime -1 find / -maxdepth 3 -type f -atime 7
時間說明:-1 一天以內 1 恰好一天 +1 超過一天

find反向查找
find . -maxdepth 1 -type d #在當前目錄下 查找最大深度為1 檔案夾型別的資料
find . -maxdepth 1 ! -type d #加上感嘆號,后面接條件,代表取除了檔案夾以外型別

根據權限查找
find . -maxdepth 2 -perm 755 -type f #尋找權限型別是755 的檔案

按照檔案大小查
find . -maxdepth 2 -size +10M #尋找超過10M大小的檔案




查找檔案時忽略目錄
find .-path "./conf.d" -prune -o -name "*.conf" -print

根據用戶組匹配


使用-exec或是-ok再次處理 -ok比-exec更安全,存在用戶提示確認 【】
# 找出以.txt結尾的檔案后執行洗掉動作且確認
find /opt/luffy_boy -type f -name "*.txt" -ok rm {} \ ;
備注
-exec跟著shell命令,結尾必須以;分號結束,考慮系統差異,加上轉義符\;
{}作用是替代find查閱到的結果 {}前后的有空格

#找到目錄中所有.txt 檔案,且將查詢結果寫入到all.txt檔案中
find ./mydj2/ -type f - name "*.txt" -exec cat {} \; > all.txt

#把30天以前的日志,移到old檔案夾中
find . -type f -mtime +30 -name "*.log" -exec cp {} old \ ;

【xargs命令 】
xargs 又稱管道命令,構造引數等
是給命令傳達引數的一個過濾器,也是組合多個命令的一個工具,它吧一個資料流分割為一些足夠小的塊,以方便過濾器和命令進行處理
簡單來說就是 把其他命令給他的資料,傳遞給它后面的命令作為引數

-d 為輸入指定一個定制的分隔符,默認是空格
-i 用{}代替傳遞的資料
-I string用string來代替傳遞的資料-n[數字]設定每次傳遞幾行資料
-n 選項限制單個命令列的引數個數
-t 顯示執行詳情
-p 互動模式
-P n 允許的最大執行緒數量為n
-s[大小]設定傳遞引數的最大位元組數(小于131072位元組)
-x[大小]設定的最大長度結束 xargs命令執行
-0,--null項用null分割,而不是空白,禁用引號和反斜杠處理

案例:
把多行輸入變單行 xargs < mjj,xtx

-n引數限制沒行輸出個數 xargs -n [+個數] < mjj.txt #每行最多輸出三個

自定義分割符 -d引數
echo "alex ,alex,alex,alex,alex," | xargs -d ","
alex alex alex alex alex

#定義分隔符后,限制每行引數個數
echo "alex,alex,alex,alex,alex," |xargs -d "," -n [+個數]
alex alex
alex alex
alex

-i引數的用法,用{}替換傳遞的資料
-I 引數用法,用string代替數字

#找到當前目錄所有的.txt檔案,然后拷貝到其他目錄下
find . -name "*.txt" | xargs -i cp {} heihei/
find . -name "*.txt" | xargs -I data cp data heihei/

#找到當前目錄所有的txt檔案,然后洗掉
find . -name "*.txt" |xargs -i rm -rf{}

利用反斜桿轉義空格,創建攜帶空格的檔案



檔案型別屬性介紹
可以通過ls -F給檔案結尾加上特殊標識

格式 型別
ls -l 看第一個字符
- 普通檔案regular file (二進制,圖片,日志,txt等)
d 檔案夾型別directory
b 塊設備檔案,/dev/sda1,硬碟,光驅
c 設備檔案,終端/dev/tty1,網路串口檔案
s 套接字檔案,行程間通信(socket)檔案
p 管道檔案pipe
l 連接檔案;link型別,快捷方式 (ln命令創建)


file命令 顯示檔案的型別
which命令 查找PATH環境變數中的檔案,Linux內置命令不在path中 如:which python
whereis命令用來定位指令的二進制程式,源代碼檔案和man手冊頁等相關檔案的路徑





【tar 命令】 (在Linux系統里,可以實作對多個檔案進行,壓縮,打包,解包)
tar 引數 你要壓縮的檔案名 你要壓縮什么內容

語法: tar(選項)(引數)
-A 或 --catenate:新增檔案到已存在的備份檔案
-B 設定區塊大小;
-c 或 --create:建立新的備份檔案;
-C <目錄>:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項【】
-d 記錄檔案的差別;
-x 或--extract或get;從備份檔案中還原檔案;
-t 或--list:列出備份檔案的內容
-z 或者--gzip或--ungzip:通過gzip指令處理備份檔案
-Z 或者--compress或--uncompress,通過compress指令處理備份檔案
-f <備份檔案>或--file=<備份檔案>:指定備份檔案;注意 f 必須放最后 【】
-v 或--verbose:顯示指令執行程序
-r 添加檔案到已經壓縮的檔案
-u 添加改變了和現有的檔案到已經存在的壓縮檔案
-j 支持bzip2解壓檔案
-l 檔案系統邊界設定
-k 保留原有檔案不覆寫
-m 保留檔案不被覆寫
-w 確認壓縮檔案的正確性
-p或--same-permissions;用原來的檔案權限還原檔案
-P或--absolute-names:檔案名使用絕對名稱,不移除檔案名稱前的“/”;不建議使用
-N<日期格式> 或--newer=<日期時間>;只將較指定日期更新的檔案保存到備份檔案里
--exclude=<范本樣式>:排除符合范本樣式的檔案
-h --dereference 跟蹤符號鏈接,將它們所指向的檔案檔并輸出

案例:
僅打包,不壓縮
#tar 引數 包裹檔案名 需要打包的檔案
tar -cvf alltmp.tar ./*

打包后且用gzip命令壓縮,節省磁盤空間
tar -zcvf alltmp.tar ./*
【注】
*f引數必須寫在最后,后面緊跟壓縮檔案名
*tar命令僅打包,習慣用,tar作為后綴
*tar命令加上z引數,檔案以,tar.gz表示

列出tar包內的檔案
#根據tar包檔案后綴,決定是否添加z引數,呼叫gzip
tar -ztvf alltmp2.tar.gz

拆開tar包
tar -xf alltmp.tar

拆開tar壓縮包
tar -zxvf ../alltmp2.tar.gz ./

拆除tar包中部分檔案
#正常解壓命令,單獨加上你要拆除的檔案名,指定路徑
#先看下tar包中有什么內容,再指定檔案解壓
tar -ztcf ../alltmp2.tar.gz
tar -zxvf ../alltmp2.tar.gz ./alltmp.tar ./kaixin

指定目錄解tar包
#注意--exclude 跟著檔案名或是檔案夾,不得加斜杠,排除多個檔案夾,就寫多個--exclude
tar -zxvf ../alltmp2.tar.gz --exclude date

打包鏈接檔案
-h 引數能夠保證,打包的不僅僅是個快捷方式,而是找到源檔案 tar -hzcf test_link2 ./h.txt

打包/etc下所有普通檔案 【 ????????】
tar -zcvf etc.tar.tgz ~find /etc -type f~
tar-tzvf etc.tgz


【gzip】

gzip (選項)(引數)
-a或--ascii:使用ASCII文字模式
-c或--stdout或--to-stoudt 把解壓后的檔案輸出到標準輸出設備
-d或--decompress或uncompress;解開壓縮檔案
-f或--force:強行壓縮檔案,不理會檔案名或硬連接是否存在以及該檔案是否為符號連接
-h 在線幫助
-l或--list;列出壓縮檔案的相關資訊
-L或--license:列出版本與著作權資訊
-n或--name:壓縮檔案時,不保存原來的檔案名稱及時間戳記
-N或--name:壓縮檔案時,保存原來的檔案名稱及時間戳記
-q或--quiet,不顯示警告資訊;
-r或--recursive;遞回處理,將指定目錄下的所有檔案及子目錄一并處理
-s或<壓縮字尾字串>或----suffix<壓縮字尾字串>;更改壓縮字尾字串
-t或--test;測驗壓縮檔案是否正確無誤
-v或--verbose顯示指令執行程序
-V或--version;顯示版本資訊
-<壓縮效率>:壓縮效率是 一個介于1-9 的數值,預設值為6,指定越大的數值壓縮效率就會越高
--best:此引數的效果和指定“-9”的引數相同
--fast:此引數的效果和指定“-1”引數相同
案例:
#zip無法壓縮檔案夾,必須先tar對檔案夾打包后,才可以gzip壓縮
gzip *. html #gzip 壓縮,解壓都會洗掉源檔案

列出壓縮檔案中的資訊
gzip -1 *.gz #不解壓縮顯示壓縮檔案內資訊,以及壓縮率

解壓縮且顯示程序
gzip -dv *.gz

壓縮保留源檔案
#-c引數
gzip -c alltmp.tar > alltmp.tar.gz

gzip 套件提供了許多方便的工具命令,可以直接操作壓縮檔案內容
*zcat ,直接讀取壓縮檔案內容
*zgrep
*zless
*zdiff

【zip命令】
zip命令是一個應用廣泛的跨平臺壓縮工具,壓縮檔案的后綴為zip檔案,還可以壓縮檔案夾
語法:
zip 壓縮檔案名 要壓縮的內容

-A 自動解壓檔案
-c 給壓縮檔案加注釋
-d 洗掉檔案夾
-f 修復損壞檔案
-k 兼容DOS
-m 壓縮完畢后,洗掉源檔案
-q 運行時不顯示資訊處理資訊
-r 處理指定目錄和指定目錄下的使用子目錄
-v 顯示資訊的處理資訊
-x "檔案串列"壓縮時排除檔案串列中指定的檔案
-y 保留符號鏈接
-b<目錄>指定壓縮到的目錄
-i<格式>匹配格式進行壓縮
-L 顯示著作權資訊
-t<日期>指定壓縮檔案的日期
-<壓縮率>指定壓縮率

案例:
#壓縮當期目錄下所有內容為alltmp.zip檔案
zip alltmp.zip ./*

壓縮多個檔案夾
zip -r data.zip ./data ./data2

【unzip命令用于解壓】
引數
-1:顯示壓縮檔案內所包含的檔案
-d<目錄>指定檔案解壓縮后要儲存的目錄

案例:
#查看壓縮檔案內容
unzip -1 data.zip

解壓縮檔案內容
unzip date .zip

【date命令】
date命令用于顯示當前系統時間,或者修改系統時間
語法: date 引數 時間格式

引數
-d,--date=STRING
顯示有STRING指定的時間,而不是當前時間
-s --set=STRING 根據string設定時間
-u.--utc,--universal 顯示或設定全球時間(格林威治時間)

時間格式 ???


shred命令
用法:shred[選項]...檔案...
多次覆寫檔案,使得即使是昂貴的硬體探測儀器也難以將資料復原
-u ,--remove 覆寫后截斷并洗掉檔案
shred heihei.txt 隨機覆寫檔案內容,不洗掉源檔案

案例:
徹底粉碎且洗掉檔案
shred -u heihei.txt

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/9728.html

標籤:Linux

上一篇:linux查詢作業系統資訊,CPU物理個數,CPU核心數,邏輯CPU數,記憶體資訊查詢,硬碟資訊查詢

下一篇:搭建一個開源專案4-安裝xFTP,xShell,JDK,NODE

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more