mycpen

Mycpen

记录学习历程与受益知识
github
telegram
bilibili

04_Linux基礎-.&..-cat-tac-重定向-EOF-基本命令

一。回顧#

回顧
//		將/home/目錄下的所有文件和文件夾複製到/jindafu目錄下
		cp  /home/*  .  -r
#注:複製文件夾 接-r		遞歸複製(因為提到了文件夾)
#注:所有	通配符*
//		複製/etc/hosts文件到jindafu,不給予覆蓋提醒
		用cp的絕對路徑
			which  cp	得到cp的路徑
			/usr/bin/cp  /etc/hosts  .
#注:不給予提醒 輸入cp命令的絕對路徑	因為cp命令是別名 所以會有提醒
//		將xiena目錄改名為xienana
		mv  xiena/  xienana
//		將singer目錄下的所有文件複製到hejiong目錄下
		cp  haiquan/singer/*  hejiong/
#注:所有	通配符*
#注:複製文件不接-r
//		刪除所有的xienana目錄
		find命令 tree查看xienana在哪  rm  -rf  路徑
		find  /hunantv/  -name  “xienana”  -exec  rm  -rf  {} \;
//		查看目錄結構 tree  查看類型 file
//		echo  $PS1  $PS2 怎麼看PS1 PS2
//		hostname  查看主機名
//		echo  $SHELL  查看默認shell  (是bash)
//		cat  /ect/shells  查看機器裡有哪些shell
		sh  bash  exit
#/etc	存放配置文件
//		d  目錄
		-  普通文件
		l  鏈接文件
		c  字符設備文件(顯示)
		b  塊設備文件 (磁碟)
//		reboot  重啟機器
//		clear  清屏
//		別名 alias , unalias , vim  /root/.bashrc
//		env  環境變量  set  所有變量


二. . .. 刪不掉#

//		rm  -rf  不會刪除隱藏文件
		rm  -rf  .lixh  刪除隱藏文件
		.和..刪不掉

三. cat#

//		ls  查看文件夾裡的內容
        cat 1.查看文件裡的內容
        	2.可以將多個文件連接到一起輸出
        -n, --number  給輸出的行進行編號
        用處2: cat  tangliangfei.txt  wangtc.txt (連接功能)
        先將tangliangfei.txt內容輸出,再將wangtc.txt內容輸出

tac 與 cat#

//		tac 逆序顯示,從最後一行到第一行
			不能接-n
		cat 正序顯示,從第一行到最後一行 (有-n選項)

四。重定向#

//		>  輸出重定向,會覆蓋原來的內容,如果文件不存在會自動新建
			重定向:就是將在屏幕上輸出的內容,改變輸出的方向,輸出到文件裡
		>>  追加輸出重定向,不會覆蓋原來的內容,只是在末尾追加,如果文件不存在會自動新建
		>會覆蓋原來的內容,>>不覆蓋,末尾追加
		# cat  tangliangfei.txt  wangtc.txt  >tang_wang.txt
		# echo 123456789  >>tang_wang.txt 
		(學會cat與>>>的組合)

五. here document#

//		生成指定內容的文件 --》here document  --》主要用在寫腳本生成指定的內容
		//  <<EOF 定義的結束字符串
			當輸入EOF的時候,結束  end of file 
# cat   >chenpeng.txt  <<EOF  (注1:後面不一定非得EOF,但要起的有意義)
> chen peng					(注2:1個>符號,原來內容會被覆蓋)
> jiangsu
> xinhua
> nongda
> linux
> cali
> EOF (注3:點回車)

# cat >>cali.txt <<end(注1:2個>符號,內容追加,不覆蓋)
> sanchuang
> nongda
> changsha

六. Shell 腳本#

//		shell腳本: 其實是一個文件,文件裡有很多的linux命令,這個文件可以執行,被執行的時候,會執行文件裡的所有的命令
# vim  first_shell.sh
#!/bin/bash(注1:聲明這個腳本使用的解釋器是bash)

mkdir  -p  /test(注2:存在不報錯,不存在就新建)

cd /test

mkdir sc{1..100}

touch pengyf{1..100}.txt

cp /etc/hosts  /test

cat >sanchuang.txt  <<EOF(注3:回車後直接打,文本文件裡沒有提示符>)
sanchuang   hunan  changsha  furongqu hunannongda
feng de yong
linux
EOF(注4:結束)

echo "####################################"
cat  -n  sanchuang.txt 
echo "####################################"
腳本寫好了↑↑↑
# bash  first_shell.sh   執行腳本(注:內容如下)
####################################
     1	sanchuang   hunan  changsha  furongqu hunannongda
     2	feng de yong
     3	linux
####################################
//		腳本在執行的時候,是從第1條命令,自上而下執行,如果中間有命令執行失敗,後面的命令還是會執行的(Python中間出錯,沒有異常捕獲的話,不再執行)

七. more#

// more命令  分頁顯示 (注1:沒有-n選項,cat有-n選項)
		用途:全屏方式分頁顯示文件內容
交互操作方法:
     按Enter鍵向下逐行滾動
     按空格鍵向下翻一屏、按b鍵向上翻一屏   back
     按q鍵退出 (注2:顯示完自動退出,與less的差別)
# more  messages 

八. ps aux#

//		# ps aux  查看linux當前運行的進程的信息--》任務管理器(ps  -aux也可以)
        # ps -aux|more
        # cat messages |more 和 more messages 一樣
        # cat -n messages |more 顯示行號

九. less#

// less命令
	用途:與more命令相同,但擴展功能更多
	交互操作方法:
 	與more命令基本類似,但個別操作會有些出入
	【page down】【page up】上翻下翻頁(注1:more不支持)
	顯示完不退出,按q退出 (注2:與more的差別)
	(注3:也支持空格、b、Enter,凡是more支持的less都支持)
# less messages 
# cat messages |less

十. head#

// head命令(注1:默認取前10行,連續的幾行)
        用途:查看文件開頭的一部分內容(默認為10行)
        格式:head -n number 文件名
        格式:head -數字  文件名
        cat  -n  passwd  |head  顯示前10行,有編號
        head  passwd  顯示前10行,沒有編號
        head  -5  passwd  顯示前5行(沒編號)
        head  -n  5  passwd  顯示前5行(沒編號,與上一條命令效果一樣)

十一. tail#

// tail命令
        用途:查看文件結尾的少部分內容(默認為10行)
        格式:tail  -n  number 文件名
        格式:tail  -數字   文件名
           tail  -f  文件名  = tailf		# 注:tailf不知道怎麼用
			#注:tail  -f 動態的監控文件末尾的變化
tail  passwd  取末尾10行(無編號)
cat  -n  passwd  |tail  取末尾10行(有編號)
cat  -n  passwd  |tail  -5  取末尾5行(有編號)
cat  -n  passwd  |tail  -1  最後1行(有編號)
cat  -n  passwd  |tail  -n  3  取末尾3行(有編號)

tail  -n  2  passwd  顯示最後2行
tail  -n  -2  passwd  與上條效果一樣
tail  -n  +2  passwd  顯示從第2行到末尾  (注1:用處:統計有多少行的時候,不想顯示首行,統計磁碟掛載的時候不想看到標題這一行)
    (注2:df  -Th 顯示linux裡的磁碟分區的使用情況)
    df  -Th|tail  -n  +2  統計磁碟掛載不顯示標題行
    df  -Th|tail  -n  +2|wc  -l  統計行數

# tail -f feng.txt   動態的監控文件末尾的變化
(注4:經常用來查看日誌文件的變化,根據日誌的記錄去排錯)
(注2:重新打開窗口連過去,右邊修改文件內容,左邊動態監控文件末尾的變化,一有新的內容就顯示)(注3:Ctrl+C 強行終止)
tail  -f 擴展 
	特別適合看某些日誌文件
        /var  存放動態變化的文件  variable  變量,變化的,可變的
        log  日誌:是程序記錄它發生的事情
# cd  /var/log		(注1:/var/log 存放大量日誌文件)
# tail  -f  secure   查看secure日誌文件 (注2:secure 安全)
(注3:別的窗口做操作,日誌文件末尾動態更新)

十二. sed#

    1.取出passwd的第3行
    # cat -n /etc/passwd|head -3|tail -1 (注1:先取前3行,再取最後1行,用|管道)
    # cat  /etc/passwd|head -3|tail -1 (注2:與上面命令比,沒有編號3)
	2.取出passwd文件的第5行到10行
	#注:這種 先看末尾 用head 因為行數是從前到後計算的
    # cat -n /etc/passwd|head |tail -6 (注3:先head取默認前10行,再取後六行)
									   (注4:從第5行到10行,tail  -6,不是-5)
	# cat -n messages |head -200|tail -101  (100到200行)
	3.取出第3行,第5行,第10行
	# sed  -n  '1p;3p;5p'  passwd (注5:-n是選項,符合要求的選項顯示出來,不是顯示行號的意思)

	練習3擴展
	// sed
		-n 作用:只是顯示符合要求的行(注9:不符合要求的行不顯示)
            1p;3p;5p
            1p 顯示第1行  p 是print命令
			; 命令連接符號
        # cat  -n  passwd  |sed  -n  ‘1p;3p;5p’ (注6:顯示1、3、5行,有編號)
        # sed  -n  '1p;3p;5p'  passwd (注7:沒有編號)
								      (注10:用雙引號””也可以)
        # cat -n passwd |sed -n  '3p;5p;10p'  顯示不連續的3,5,10行的內容	(這樣寫顯示行號)
        # cat -n passwd |sed -n  '3,10p' 顯示第3行到第10行的內容,中間是連續的

        # cat -n passwd |sed  '3,10p'(注8:sed後不接-n的話,會顯示所有的行[包括不符合要求的行],只不過3到10行輸出兩遍,所以一定要接-n)

總結:sed  1.顯示連續的  2.顯示不連續的

十三. grep#

//		grep 文本過濾 (過濾的是文件,不是文件夾目錄)
        grep  “root”  /etc/passwd 包含root的行
        grep  “^liang”  /etc/passwd 以liang開頭的行
        grep  “bash$  /etc/passwd 以bash結尾的行
        Ctrl + c 终止
//		文本處理三劍客 sed  grep  awk

十四. which#

which  查找可執行文件並顯示所在的位置
		搜索範圍由PATH環境變量指定
    # which  mkdir
    /usr/bin/mkdir
    # cd /usr/bin/
    # ll mkdir
    -rwxr-xr-x. 1 root root 195192 4月  10 02:53 mkdir

    rwxr-xr-x 權限
    r  read   --》cat  vim
    w  write  --》 vim   >>
    x  執行 execute   ---》運行

    # ll first_shell.sh
    -rw-r--r--. 1 root root…… (注1:腳本無可執行權限)
    # bash  first_shell.sh  (注2:用bash去執行它)
    # chmod  +x  first_shell.sh  (注3:給它可執行權限)
    -rwxr-xr-x.  root root……  (注4:有可執行權限了)
    # ./first_shell.sh  (注5:直接執行,直接在當前終端執行,當前bash執行)
    # /lianxi/first_shell.sh  (注6:接絕對路徑,接文件,直接執行)
    # chmod  -x  first_shell.sh  (注7:取消可執行權限)
    # /lianxi/first_shell.sh 
    -bash: /lianxi/first_shell.sh: 權限不夠  (取消可執行權限後不能直接執行)

whereis#

//		whereis 查找命令放到哪裡(注1:跟which很像)(注2:沒什麼用,man手冊在哪裡不是很重要)
		# whereis  mkdir
		mkdir:  /usr/bin/mkdir  /usr/share/man/man1/mkdir.1.gz
								(注2:壓縮文件,是它的文檔)
        1.查看命令安放路徑
        2.該命令man手冊的路徑(man的時候看的內容的存放路徑)
	//whereis和which的區別
        Which不顯示man手冊的路徑,whereis顯示man手冊的路徑
        # whereis  mkdir
        mkdir:  /usr/bin/mkdir  /usr/share/man/man1/mkdir.1.gz
        # which  mkidr
        /usr/bin/mkdir
	//whereis和which 都是到PATH變量裡去找的 (共同點)

十五. PATH#

//PATH是路徑
which命令在查找命令的時候,會到PATH變量指定的路徑下查找
# which fengdeyong
/usr/bin/which: no fengdeyong in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
(備註1:紅色為路徑  備註2:多個文件夾用:冒號隔開)
# echo $PATH  (注3:$PATH 引用PATH變量)
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
查找的順序是從左往右找,如果在第1個裡面找到了,就不會往後面找,以此類推

深入理解 PATH 變量的作用#

1. 編寫一個 schello.c 的文件

# vim schello.c (注1:編寫腳本如下)
#include<stdio.h>
int main(){
	printf("hello,world\n"); (注2:\n 換行)
	printf("i am cali\n");
	return 0;
}
# file schello.c 
schello.c: C source, ASCII text (注3:C語言文件,文本文件,機器不能識別)

2. 編譯成二進制程序文件

gcc 是 linux 裡的一個編譯器,將 c 源碼文件編譯成二進制文件

image-20220313140253260

gcc 是 linux 裡的一個編譯器,將 c 源碼文件編譯成二進制文件

# yum  install  gcc -y
# gcc  -o  schello  schello.c  (注1:-o  輸出一個二進制文件)(注2:編譯schello.c的命令)
# ls		(↑↑注3:schello產生的文件,schello原來文件)
schello  schello.c (注2:生成綠色可執行權限的文件 schello)
# ll
總用量 20
-rwxr-xr-x. 1 root root 12744 9月  18 15:12 schello
-rw-r--r--. 1 root root    93 9月  18 15:08 schello.c
# ./schello        (注4:./ 运行)
# /lianxi/sc/schello  (注5:絕對路徑運行,./相對路徑或絕對路徑都可以運行)
# schello 不能運行 (注6:linux不知道schello放在哪裡,它只會到PATH變量裡去找)
-bash: schello:未找到命令 (注7:PATH變量沒有當前所在路徑,沒有/lianxi/sc)
(解決如下)

要讓 Linux 系統知道我們的命令在哪裡?#

1.適應PATH變量,將我們的命令複製到PATH變量已有的路徑下
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# cp  schello  /usr/local/bin/
# schello (注1:成功運行)
hello,world
i am cali
# which schello
/usr/local/bin/schello (注2:複製到PATH變量的路徑下後bash可以找到schello)
2.修改PATH變量,添加我們自己的命令所在的路徑
①臨時修改PATH變量
# PATH=/lianxi/sc:$PATH   臨時修改PATH變量
(注3:先引用PATH變量的值,在和/lianxi/sc:字符串拼凑在一起再賦值給PATH變量)
(注3:$PATH——》/lianxi/sc:+$PATH重新組合——》賦值PATH變量  從右到左)
# echo $PATH
/lianxi/sc:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
(注4:新的PATH變量,前面多了/lianxi/sc:)
[root@sanchuang-linux sc]# which schello(注5:which 可以找到)
/lianxi/sc/schello
# schello (注6:bash可以運行)
hello,world
i am cali
②永久有效
修改文件,添加PATH變量,讓它永久生效
# vim  /root/.bashrc  
	.bashrc這個文件是linux系統開機啟動或者用戶登錄都會運行這個文件裡的命令,所以才會永久有效
PATH=/lianxi/sc:$PATH (注1:打進去,放到最後一行)
//		mkdir 用C寫的

//		# yum  install  python3  -y   安裝python3軟件
        # python3 (注1:進入Python3解釋器)
        >>> a = 10 (注2:提示符>>>
        >>> b = 20 (注4:Python不需要編譯,Python代碼直接運行,用Python解釋器去解釋)
        >>> sg = "tangliangfei"
        >>> c = a  + b
        >>> c
        30
        >>> print(sg) (注3:輸出)
        tangliangfei
        >>> exit() (注5:exit()退出出 exit()是exit函數)
//擴展
.py結尾的文件,是python程序文件
.sh結尾,shell腳本
.c結尾,c語言
# vim  sc_py_hello.py
#!/usr/bin/python3 (注1:which python3——》/usr/bin/python3)
				   (注2:申明腳本是Python腳本,裡面的命令用Python3解釋器去解釋)
username = input("please input your name:")(注3:引號裡面的只是提示符,提示輸什麼)
				   (注4:input()函數會接收你輸入的東西,賦值給username)
age = input("please input your age:")

print(f"your name is {username} ,your age is {age}")(注5:print(f ) 语法)
				   (注6:{username}{age} 引用變量的值)

# ls
schello  schello.c  sc_py_hello.py
# python3  sc_py_hello.py (注7:直接執行Python3,類似於bash  a.sh)
please input your name:cali
please input your age:18
your name is cali ,your age is 18
[root@sanchuang-linux sc]# cat sc_py_hello.py 
 
# /lianxi/sc/sc_py_hello.py (注1:不能直接運行,如下 權限不夠,pwd查看路徑)
-bash: /lianxi/sc/sc_py_hello.py: 權限不夠
# chmod +x sc_py_hello.py (注2:給它可執行權限)
# /lianxi/sc/sc_py_hello.py (注3:可以直接執行了)
please input your name:wangtc
please input your age:18
your name is wangtc ,your age is 18

//怎樣讓sc_py_hello.py 在PATH變量裡運行
    # which  sc_py_hello.py (注1:能運行,因為之前在PATH變量裡已經添加這個路徑了(/lianxi/sc))
    # sc_py_hello.py (注2:能運行,因為之前在PATH變量裡已經添加這個路徑了(/lianxi/sc))
    # echo  $PATH
    /lianxi/sc:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  總結:跟是用什麼語言寫的關係不大
		1.把它放到PATH變量所在的路徑裡面,並2.給它可執行權限 就能直接運行
    # chmod  -x  sc_py_hello.py (注3:取消可執行權限)
    # sc_py_hello.py  (注4:給它可執行權限,路徑放在PATH變量所在的路徑下,也不能直接執行)
	-bash:  /lianxi/sc/sc_py_hello.py: 權限不夠
  總結:寫的Python程序,一定要1.給它可執行權限,並2.把它放到PATH變量所在路徑下面,不然不能執行
    //擴展  (注2:總結:文件名字很長,想敲個短一點的命令,考慮用別名 [快捷鍵])
    # alias sc_py_hello=sc_py_hello.py   定義別名,可以縮短命令的長度
    # sc_py_hello(注1:不想輸這麼長,可以使用別名,別名可以用來偷懶)
    please input your name:feng (運行成功,條件是在PATH變量路徑下和可執行權限,如上的操作)
    please input your age:19
    your name is feng ,your age is 19
    # which sc_py_hello
    alias sc_py_hello='sc_py_hello.py'
		/lianxi/sc/sc_py_hello.py

十六. bash#

	//bash 是linux非常好的shell解析器 (注1:2件事要做)
		1.查找命令 --》PATH變量的路徑下
		2.告訴內核去啟動命令(運行這個命令)

十七. /usr#

// /usr  存放linux程序的目錄   unix  system  resource 
    /usr/bin  存放二進制程序,所有的用戶都可以使用  binary
    /usr/sbin   存放二進制程序,有比較高的權限(root)的用戶執行的程序  super user binary
        # which  useradd(注1:查找useradd命令路徑)
        /usr/sbin/useradd (注2:存放在sbin目錄下)
        # su  -  xulilin (注3:切換為普通用戶)
        $ which  useradd
        $ /usr/sbin/useradd
        $ useradd  xu123 (注4:普通用戶不能執行sbin/下高級別命令)
        ……報錯useradd:Permission denied (注5:權限被拒絕)

十八. locate#

//		locate知識點(注4:需要安裝)(注5經常需要更新# updatedb)
# yum provides locate -y  查詢locate是那個軟件包提供的(注1:新知識點)
mlocate-0.26-20.el8.x86_64 : An utility for finding files by name
(注3:yum  provides …… -y 查詢某命令是那個軟件包提供的)
(注2:從結果知道 mlocate提供locate命令)
# yum install  mlocate -y 安裝mlocate軟件
locate命令
格式:locate 文件名
(注5:locate是到自己的數據庫查找的,能具體到/下面,且必須更新自己的數據庫)
根據每天更新的數據庫(/var/lib/mlocate)查找,速度快
	/var/lib/mlocate/mlocate.db
	database  數據庫(注6:db的解釋)
數據庫裡的內容還是根據/目錄下的內容生成
每天會自動更新數據庫	/var/lib/mlocate/mlocate.db
手動更新數據庫updatedb
# updatedb   生成和更新數據庫mlocate.db (注1:手動更新)
# cd /var/lib/mlocate/
# ls
mlocate.db
# locate mkdir(注2:將linux系統裡面文件名裡面包含了mkdir的文件全部找出來)
/usr/bin/mkdir
/usr/lib/python3.6/site-packages/pip/_vendor/lockfile/mkdirlockfile.py
/usr/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.opt-1.pyc
/usr/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.pyc
/usr/share/man/man1/mkdir.1.gz
# which mkdir(注3:只是找到/usr下的mkdir,其他地方的mkdir沒找出來)
/usr/bin/mkdir
locate查找的範圍:
	/--》mlocate.db裡去查找(注2:在 根下面自己的數據庫mlocate.db下面去查找)
	方式:模糊查找,文件名裡包含就可以
	缺點:新的文件,有時候找不到,因為沒有更新數據庫   --》updatedb(注3:手動更新)
	可以查找任何文件(注4:新建的文件,# updatedb手動更新數據庫,否則找不到)
which 查找的範圍:
	方式:精確查找(注1:文件名必須一模一樣)
	只能查找命令

which、whereis、locate、find#

//		which、whereis、locate、find 命令查找類
        Which、whereis  只能找命令
        loacte  也可以查找普通文件、可以查找任何文件

十九. find#

//* find 命令

​ 格式:find [查找範圍] [查找條件] [動作]

​ find 可以找 1. 命令、2. 文件 (即任何文件)

​ (注 1:融合了 which、whereis、locate 所有功能)

​ find 命令

​ 用途:用於查找文件或目錄

​ 格式:find [查找範圍] [查找條件] [動作]

​ 常用查找條件

​ ==-name==:按文件名稱查找

​ ==-iname==:按文件名稱查找,不區分大小寫

​ ==-size==: 按文件大小查找

​ -user: 按文件屬主查找

​ ==-type==: 按文件類型查找

​ -perm :按文件權限查找

​ ==-mtime== :按文件更改時間查找

​ -newer:按比某個文件更新的查找

-name和-iname
    # find /lianxi  -name "lixh.txt"(注1:精確查找,-name根據文件名來)
    /lianxi/lixh.txt
    # find  / -name  "schello"(注2:精確查找,可以/下查找)
    /lianxi/sc/schello
    # find  / -name  "schello*"(注3:*模糊查找,可以/下查找)
    /lianxi/sc/schello.c
    /lianxi/sc/schello
    # find  / -name  "li*.txt"(注4:*模糊查找)
    # find  / -iname  "lixh.txt" (注5:-iname 查找的文件名不區分大小寫)
    /lianxi/lixh.txt
    /lianxi/LIXH.TXT
-size (大小)
    # ll  -h  看文件夾下的每個文件的大小
    # du  -a 查看文件夾下的每個文件的大小(單位KB)
     du  -ah  查看文件夾下的每個文件的大小 (單位K、M、G)
    # find  /boot  -size  +1M(注1:+1M 大於1M的 全部找出來)(注2:-1M、1M:小於1M,等於1M)
    /boot/grub2/fonts/unicode.pf2  (注3:查找的結果不是特別精準)
    /boot/initramfs-4.18.0-193.el8.x86_64kdump.img
    /boot/initramfs-4.18.0-193.el8.x86_64.img
-type (類型)
    # find  .  -type  d (注1:查找目錄)
    # find  .  -type  f (注2:查找普通文件)
    # find  .  -type  l (注3:鏈接文件)
    # find  .  -type  c (注4:字符設備文件)
    # find  .  -type  b (注5:塊設備文件)
    # find  .  -type  p (注6:管道文件)
    # find  .  -type  s (注7:socket文件)(進程與進程通信的文件)
-mtime (以24小時為單位) 按文件更改時間查找
-mmin  (以分鐘為單位)
    # find  .  -time  +1  1天以前
    # find  .  -time  -1  1天以內
    # find  .  -mmin  -30  30分鐘以內
    # find  .  -mmin  +30  30分鐘以前
-user (屬於哪個用戶創建的文件)(用處不大)
    # find  .  -user  root
    # find  /  -user  cali
-newer (比指定文件更新的文件,後建的文件)
	# find  .  -newer  feng.txt
//	特殊查找條件
-o :邏輯或,只要所給的條件中有一個滿足,尋找條件就算滿足 or
-not :邏輯非,在命令中可用“!”表示。該運算符表示查找不滿足所給條件的文件
-a:邏輯與,系統默認是與,可不加,表示只有當所給的條件都滿足時,尋找條件才算滿足and

  find  /boot -size +1024k  -a -name “vmlinuz*”(注1:邏輯與 -a可不加,系統默認邏輯與)
  find  /boot -size +1024k  -o -name “vmlinuz*
  find  .  -user nie  -type f   -size  +1k  -o  -name  "vmlinuz*" 
  find  .  -user nie  -type f  \( -size +1k -o -name "vmlinuz*" \)  (注3:()改變了優先級,\解釋在下方)(注5:\(  \)()  改變了優先級)
  find   /home  !-user  hello  -exec  ls  -ld  {}  \;
\  轉義字符 (注2:因為小括號()有特殊作用,接上/以後讓它表示只是小括號)
默認情況下-a的優先級高,先執行邏輯與(-a),再執行邏輯或(-o)
# find  / -iname "*.conf"  -size +1k  -type f  -user root -o -size +10M
(注4:前面先組合成一個條件,要麼滿足-o前面的,要麼滿足-o後面的條件)
//	擴展,接上面的命令 -exec -ok
	  # find  /lianxi  -name  "li*.txt"  -exec  rm -rf  {}  \;(注1:前面是查找,-exec表示要執行的動作)相關解釋如下
    -exec  執行後面的命令
    rm -rf  具體刪除命令
    {} 代表前面的find查找出來的內容,理解為一個容器存放前面find查找到的內容
    \; 表示find命令結束符號
    # find /lianxi -name "*.txt"  -size +1k  -type f  -exec cp {} /fengdeyong \;
    (注2:文件名.txt結尾的,大小大於1k的,文件,拷貝到fengdeyong裡面)
    (注3:find 找/lianxi 下的每一層)
    -ok
    -ok 讓你確認一下,再執行
    # find . -name "*wang*" -ok rm -rf {} \;
    < rm ... ./wangtc.txt > ? y
    < rm ... ./tang_wang.txt > ? y

總結:-exec執行命令,不給與確認(寫腳本常用,方便)
	 -ok 執行命令,需要確認
-maxdepth  查找文件時,目錄的深度
    # find  .  -name  bb
    ./aa/bb
    ./aa/bb/bb
    ./bb
    # find  .  -maxdepth  1  -name  bb(注2:只挖1級)
    ./bb
    # find  .  -maxdepth  2  -name  bb(注3:只挖2級)
    ./aa/bb
    ./bb
    # find  .  -maxdepth  3  -name  bb(注4:只挖3級)
    ./aa/bb
    ./aa/bb/bb
    ./bb
    (注1:不接-maxdepth的話,有多少層挖多少層)
    # find /lianxi  -name  "*.txt"
    (注6:不接-maxdepth,東西太多了,挖的太深了)
    /lianxi/tangliangfei.txt
    /lianxi/chenpeng.txt
    /lianxi/cali.txt
    /lianxi/feng.txt
    /lianxi/aa/bb/feng.txt
    /lianxi/aa/feng.txt
    # find /lianxi -maxdepth 1 -name  "*.txt"
    (注5:這種情況用的多,只想找1層的,只挖/lianxi下面的,子文件夾、子子文件夾下面都不要)
    /lianxi/tangliangfei.txt(注7:顯示如下)
    /lianxi/chenpeng.txt
    /lianxi/cali.txt
    /lianxi/feng.txt
//		!取反 的使用,接上面的命令(注1:lianxi下面的不是*.txt的)
    # find  /lianxi  -maxdepth  1  !  -name  "*.txt"(只對後面的條件取反)
    /lianxi
    /lianxi/passwd
    /lianxi/first_shell.sh
    /lianxi/messages
    /lianxi/sc
    /lianxi/LIXH.TXT
    /lianxi/aa
    /lianxi/bb
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。