天天看點

常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程序管理

linux常用指令

  • 一、linux目錄結構
  • 二、提示行符号
  • 三、常用指令
    • 1.處理目錄常用指令
    • 2.檔案内容檢視常用指令
    • 3.檔案查找常用指令
    • 4壓縮指令
    • 5.其他指令
  • 四、通配符
  • 五、檔案權限
    • 1.改變檔案權限
    • 2.改變檔案所有權
    • 3.檔案連接配接(軟連接配接相當于win的快捷方式)(硬連結)
  • 六、輸出重定向和管道
    • 1.輸出重定向
    • 2.管道
  • 七、程序管理
    • 1.查程序
    • 2.殺程序

一、linux目錄結構

目錄結構部分引用自:https://www.runoob.com/linux/linux-system-contents.html
[[email protected]_0_16_centos home]# ls /
bin(經常使用的指令)  boot(啟動時的核心檔案)  dev(Linux的外部裝置)  etc(配置檔案)  
home(使用者主目錄)  lib(共享庫)  lib64()  lost+found()  media(光驅,U盤裝置...)  
mnt  opt  proc(虛拟目錄,記憶體映射)  root(管理者目錄)  run  sbin(系統管理者使用的系統管理程式)  
srv  sys()  tmp(臨時檔案)  usr(類似于windows下的program files目錄)  var
           
常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理

/bin:

bin是Binary的縮寫, 這個目錄存放着最經常使用的指令。

/boot:

這裡存放的是啟動Linux時使用的一些核心檔案,包括一些連接配接檔案以及鏡像檔案。

/dev :

dev是Device(裝置)的縮寫, 該目錄下存放的是Linux的外部裝置,在Linux中通路裝置的方式和通路檔案的方式是相同的。

/etc:

這個目錄用來存放所有的系統管理所需要的配置檔案和子目錄。

/home:

使用者的主目錄,在Linux中,每個使用者都有一個自己的目錄,一般該目錄名是以使用者的賬号命名的。

/lib:

這個目錄裡存放着系統最基本的動态連接配接共享庫,其作用類似于Windows裡的DLL檔案。幾乎所有的應用程式都需要用到這些共享庫。

/lost+found:

這個目錄一般情況下是空的,當系統非法關機後,這裡就存放了一些檔案。

/media:

linux系統會自動識别一些裝置,例如U盤、光驅等等,當識别後,linux會把識别的裝置挂載到這個目錄下。

/mnt:

系統提供該目錄是為了讓使用者臨時挂載别的檔案系統的,我們可以将光驅挂載在/mnt/上,然後進入該目錄就可以檢視光驅裡的内容了。

/opt:

這是給主機額外安裝軟體所擺放的目錄。比如你安裝一個ORACLE資料庫則就可以放到這個目錄下。預設是空的。

/proc:

這個目錄是一個虛拟的目錄,它是系統記憶體的映射,我們可以通過直接通路這個目錄來擷取系統資訊。

這個目錄的内容不在硬碟上而是在記憶體裡,我們也可以直接修改裡面的某些檔案,比如可以通過下面的指令來屏蔽主機的ping指令,使别人無法ping你的機器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
           

/root:

該目錄為系統管理者,也稱作超級權限者的使用者主目錄。

/sbin:

s就是Super User的意思,這裡存放的是系統管理者使用的系統管理程式。

/selinux:

這個目錄是Redhat/CentOS所特有的目錄,Selinux是一個安全機制,類似于windows的防火牆,但是這套機制比較複雜,這個目錄就是存放selinux相關的檔案的。

/srv:

該目錄存放一些服務啟動之後需要提取的資料。

/sys:

這是linux2.6核心的一個很大的變化。該目錄下安裝了2.6核心中新出現的一個檔案系統 sysfs 。

sysfs檔案系統內建了下面3種檔案系統的資訊:針對程序資訊的proc檔案系統、針對裝置的devfs檔案系統以及針對僞終端的devpts檔案系統。

該檔案系統是核心裝置樹的一個直覺反映。

當一個核心對象被建立的時候,對應的檔案和目錄也在核心對象子系統中被建立。

/tmp:

這個目錄是用來存放一些臨時檔案的。

/usr:

這是一個非常重要的目錄,使用者的很多應用程式和檔案都放在這個目錄下,類似于windows下的program files目錄。

/usr/bin:

系統使用者使用的應用程式。

/usr/sbin:

超級使用者使用的比較進階的管理程式和系統守護程式。

/usr/src:

核心源代碼預設的放置目錄。

/var:

這個目錄中存放着在不斷擴充着的東西,我們習慣将那些經常被修改的目錄放在這個目錄下。包括各種日志檔案。

/run:

是一個臨時檔案系統,存儲系統啟動以來的資訊。當系統重新開機時,這個目錄下的檔案應該被删掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run。

在 Linux 系統中,有幾個目錄是比較重要的,平時需要注意不要誤删除或者随意更改内部檔案。

/etc: 上邊也提到了,這個是系統中的配置檔案,如果你更改了該目錄下的某個檔案可能會導緻系統不能啟動。

/bin, /sbin, /usr/bin, /usr/sbin: 這是系統預設的執行檔案的放置目錄,比如 ls 就是在/bin/ls 目錄下的。

值得提出的是,/bin, /usr/bin 是給系統使用者使用的指令(除root外的通使用者),而/sbin, /usr/sbin 則是給root使用的指令。

/var: 這是一個非常重要的目錄,系統上跑了很多程式,那麼每個程式都會有相應的日志産生,而這些日志就被記錄到這個目錄下,具體在/var/log 目錄下,另外mail的預設放置也是在這裡。

二、提示行符号

1.Linux運作頁面有一個輸入提示行,指令以一個美元符号"$"作為提示符,表示使用者可以輸入指令了如:

[[email protected]_0_16_centos home]$ 
           

如果正在以root身份執行指令,那麼shell提示符将變成"#"如:

[[email protected]_0_16_centos home]#
           

三、常用指令

1.處理目錄常用指令

  • ls: 列出目錄

    -a :全部的檔案,連同隐藏檔( 開頭為 . 的檔案) 一起列出來(常用)

    -d :僅列出目錄本身,而不是列出目錄内的檔案資料(常用)

    -l :長資料串列出,包含檔案的屬性與權限等等資料;(常用)

  • cd:切換目錄
  • pwd:顯示目前的目錄

    -P :顯示出确實的路徑,而非使用連結 (link) 路徑。

  • mkdir:建立一個新的目錄

    -m :配置檔案的權限喔!直接配置,不需要看預設權限 (umask) 的臉色~

    -p :幫助你直接将所需要的目錄(包含上一級目錄)遞歸建立起來!

  • rmdir:删除一個空的目錄

    -p :連同上一級『空的』目錄也一起删除

  • cp: 複制檔案或目錄
  • touch : 建立一個空白檔案
    [[email protected] ~]# cp [-adfilprsu] 來源檔(source) 目标檔(destination)
    [[email protected] ~]# cp [options] source1 source2 source3 .... directory
               
    選項與參數:
    -a:相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)
     	
     	-d:若來源檔為連結檔的屬性(link file),則複制連結檔屬性而非檔案本身;
     	
     	-f:為強制(force)的意思,若目标檔案已經存在且無法開啟,則移除後再嘗試一次;
     	
     	-i:若目标檔(destination)已經存在時,在覆寫時會先詢問動作的進行(常用)
     	
     	-l:進行硬式連結(hard link)的連結檔建立,而非複制檔案本身;
     	
     	-p:連同檔案的屬性一起複制過去,而非使用預設屬性(備份常用);
     	
     	-r:遞歸持續複制,用於目錄的複制行為;(常用)
     	
     	-s:複制成為符号連結檔 (symbolic link),亦即『捷徑』檔案;
     	
     	-u:若 destination 比 source 舊才更新 destination !
               
  • rm: 移除檔案或目錄
    rm [-fir] 檔案或目錄
               
    選項與參數
     -f :就是 force 的意思,忽略不存在的檔案,不會出現警告資訊;
     -i :互動模式,在删除前會詢問使用者是否動作
     -r :遞歸删除啊!最常用在目錄的删除了!這是非常危險的選項!!!
               
  • mv: 移動檔案與目錄,或修改檔案與目錄的名稱

    文法:

    [[email protected] ~]# mv [-fiu] source destination
    [[email protected] ~]# mv [options] source1 source2 source3 .... directory
               

    選項與參數:

    -f :force 強制的意思,如果目标檔案已經存在,不會詢問而直接覆寫;

    -i :若目标檔案 (destination) 已經存在時,就會詢問是否覆寫!

    -u :若目标檔案已經存在,且 source 比較新,才會更新 (update)

  • ln(link)

    文法:ln -s [源檔案] [目标檔案] (硬連結則不需要-s選項)

    描述:建立軟連結檔案

    常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理

    軟連結特點:權限是所有人都可以通路,并且軟連接配接檔案指向源檔案。

    軟連結就像windows系統中的快捷方式一樣,特點也都類似。

    硬連結:類似copy,硬連結大小和源檔案一樣,并且是同步更新的。

    常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理
    另外:硬連結不能跨檔案系統分區,而軟連接配接可以

2.檔案内容檢視常用指令

Linux系統中使用以下指令來檢視檔案的内容:

  • cat 由第一行開始顯示檔案内容

    -n 顯示檔案行号

  • tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
  • nl 顯示的時候,順道輸出行号!
  • more 一頁一頁的顯示檔案内容
  • less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
  • head 隻看頭幾行
  • tail 隻看尾巴幾行

    tail -f 實時檢視日志檔案 tail -f 日志檔案log

    tail - 100f 實時檢視日志檔案 後一百行

    tail -f -n 100 catalina.out linux檢視日志後100行

  • 你可以使用 man [指令]來檢視各個指令的使用文檔,如 :man cp。

3.檔案查找常用指令

  • grep:查找檔案内容

    grep [option] pattern [file…]

    在檔案t.sh中查找包含do的行

    [[email protected]_0_16_centos baidu]# grep do t.sh
    do
    done
               
  • find: 在指定範圍内找到檔案

    find [option] [path] [expression]

    find [搜尋範圍路徑] -name 【檔案名稱】(根據檔案名查找)

    常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理
    比對任意字元 *
    常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理
    比對指定字元 ?
    常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理

    find [搜尋範圍路徑] -size [(±)檔案大小] (根據檔案大小查找,大于+ 小于-)

    find [搜尋範圍路徑] -user(檔案的所有者)

    find [時間查找] [以天為機關]

    [以天為機關] 1 ctime、atime、mtime

    [以分鐘為機關] 2 cmin、amin、mmin

    。。。。。

    常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理

    描述:查找任何檔案或目錄(所有)

    例如:

    [[email protected]_0_16_centos baidu]# find /usr/bin/ -name zip -print
    /usr/bin/zip
               

    指令:which

    文法:which [指令名稱]

    描述:檢視指令所在的目錄位置

    在linux裡面一般隻有兩種指令,第一種是所有使用者都可以使用,第二種則是隻允許管理者使用,還有一個指令叫whereis,和which使用類似

    比如: rm指令,其實我們可以使用 which rm檢視其指令内容:

    常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理

alias就是别名的意思,說明我們使用的rm指令在預設的情況下加了 -i選項,意思是在删除的時候進行詢問是否需要删除,那麼添加""就使用真正的rm指令而不是别名,直接就可以删除不需要提示詢問。

find的連接配接執行符号:

find … -exec [執行指令] {} ;

注意:“{}“表示find指令查找的結果,而”"表示轉義符

指令:locate
文法:locate [檔案名稱]
描述:查找檔案,根據linux資料庫内部的索引(updatedb指令,可以手工更新updatedb資料庫,一般和locate配合使用)
![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20191120213204559.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTU4NjMxMA==,size_16,color_FFFFFF,t_70)

注意:locate的查找速度非常快,比find查找快很多,原因是locate查找的是linux系統建構的檔案資料庫的索引值,是以速度非常快,但是有的時候新建立的檔案使用locate指令查找不到,原因是這個檔案的索引沒有馬上更新到linux系統檔案資料庫裡
           

4壓縮指令

指令:gzip

文法:gzip [檔案名稱]

描述:壓縮的時候不保留原檔案,并且隻能壓縮檔案不能壓縮目錄

指令:gunzip

文法:gunzip [已壓縮的檔案]

描述:解壓縮檔案,不不保留源檔案

指令:tar

文法:tar [zcvf] [zxvf] [打封包件名.tar.gz] [源檔案]

-c 産生tar打封包件(必選)

-x 産生的解壓縮檔案(必選)

-v 顯示詳細資訊

-f 指定壓縮後的檔案名

-z 打包同時壓縮

描述:打包目錄 生成的字尾名 .tar.gz,或者進行解壓

最後配置加-C 表示檔案解壓後存放的路徑

file指令可以檢視任何檔案的類型

指令:zip

文法:zip 選項[-r] [壓縮後檔案名稱] [源檔案]

描述:zip的格式是windows和linux通用的格式,可以壓縮檔案和目錄,壓縮目錄時需要選項-r。

指令:unzip

文法:unzip [解壓縮的檔案]

描述:進行解壓縮

最後配置加-d 表示檔案解壓後存放的路徑

5.其他指令

過濾:grep,可以将指定内容進行過濾然後輸出。

管道:

将一個指令的輸出傳送給另一個指令,作為另外一個指令的輸入。管道可以連接配接N個指令。

ls -l /etc | more (表示将ls -l /etc的輸出,當做more指令的輸入,即more指令浏覽的内容為前面指令的輸出結果)

ls -l /etc | grep init(表示将ls -l /etc的輸出結果進行過濾,顯示為init的結果)

ls -l /etc | grep init | wc -l (最後進行統計顯示的個數)

四、通配符

shell有一套被稱作通配符的符号"*","?","[ ]", “-” 這些通配符可以搜尋并比對檔案的一部分,進而大大簡化輸入指令

  • “*”:用于比對檔案名中任意長度的字元串,"?"用于比對檔案名中任意的一個字元
    [[email protected]_0_16_centos baidu]# ls
    shell  test.log  t.sh
    [[email protected]_0_16_centos baidu]# ls *.log
    test.log
               
  • “[]”:用于比對所有方括号中出現的字元
    [email protected]_0_16_centos baidu]# ls t[ab]
    ta  tb
               
  • “-”:用于指定一個字元集的範圍
    [email protected]_0_16_centos baidu]# ls t[a-c]
    ta  tb  tc
               

五、檔案權限

1.改變檔案權限

指令:chmod

文法:chmod [{ugo}{±=}{rwx}] [檔案或目錄]

chmod [mode=421] [檔案目錄]

描述:改變檔案或目錄的權限

形如:chmod g+w filename

形如:chmod 761 filename

問題示例:建立一個新目錄,下面一個新檔案,嘗試用普通使用者去删除新目錄下的新檔案。

1 嘗試修改:新檔案的讀寫權限設定為 777,進行删除檔案操作

2 嘗試修改:新目錄的讀寫權限設定為 777,進行删除檔案操作

檔案的rwx權限:

r:可以執行catch、more等讀操作。

w:修改檔案的内容等寫操作,但是不代表你可以把這個檔案删除。

x:對檔案進行執行操作。

目錄的rwx權限:

r:可讀操作,可以列出目錄的内容,比如ls指令。

w:表示可以在目錄下建立或删除檔案的權限。

x:表示可以進入這個目錄(基本上是以的目錄都會有rx權限)。

是以:删除檔案的權限,是擁有你目前檔案所在的目錄的寫權限。

常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理

2.改變檔案所有權

指令:chown

文法:chown user 檔案

描述:改變檔案的所有者

示例:chown newuser t1.sh

useradd username 添加使用者

passwd username 為使用者設定密碼

指令:chgrp

文法:chgrp group 檔案

描述:改變檔案的所屬組

示例:chgrp adm t1.sh

檢視系統預設的權限 :umask -S (umask檢視權限掩碼值022 使用777-022得到真實權限)

常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理

3.檔案連接配接(軟連接配接相當于win的快捷方式)(硬連結)

指令:ln(link)

文法:ln -s [源檔案] [目标檔案] (硬連結則不需要-s選項)

描述:建立軟連結檔案

常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理

軟連結特點:權限是所有人都可以通路,并且軟連接配接檔案指向源檔案。

軟連結就像windows系統中的快捷方式一樣,特點也都類似。

硬連結:類似copy,硬連結大小和源檔案一樣,并且是同步更新的。

另外:硬連結不能跨檔案系統分區,而軟連接配接可以。

常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理

六、輸出重定向和管道

1.輸出重定向

大多數 UNIX 系統指令從你的終端接受輸入并将所産生的輸出發送回​​到您的終端。一個指令通常從一個叫标準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,一個指令通常将其輸出寫入到标準輸出,預設情況下,這也是你的終端。

重定向指令清單如下:

常用shell指令一、linux目錄結構二、提示行符号三、常用指令四、通配符五、檔案權限六、輸出重定向和管道七、程式管理

指令 說明

command > file 将輸出重定向到 file。

command < file 将輸入重定向到 file。

command >> file 将輸出以追加的方式重定向到 file。

n > file 将檔案描述符為 n 的檔案重定向到 file。

n >> file 将檔案描述符為 n 的檔案以追加的方式重定向到 file。

n >& m 将輸出檔案 m 和 n 合并。

n <& m 将輸入檔案 m 和 n 合并。

<< tag 将開始标記 tag 和結束标記 tag 之間的内容作為輸入。

2.管道

過濾:grep,可以将指定内容進行過濾然後輸出。

将一個指令的輸出傳送給另一個指令,作為另外一個指令的輸入。管道可以連接配接N個指令。

ls -l /etc | more (表示将ls -l /etc的輸出,當做more指令的輸入,即more指令浏覽的内容為前面指令的輸出結果)

ls -l /etc | grep init(表示将ls -l /etc的輸出結果進行過濾,顯示為init的結果)

ls -l /etc | grep init | wc -l (最後進行統計顯示的個數)

七、程序管理

1.查程序

ps指令查找與程序相關的PID号:
ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。
ps -A 顯示所有程式。
ps c 列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,參數或常駐服務的标示。
ps -e 此參數的效果和指定"A"參數相同。
ps e 列出程式時,顯示每個程式所使用的環境變量。
ps f 用ASCII字元顯示樹狀結構,表達程式間的互相關系。
ps -H 顯示樹狀結構,表示程式間的互相關系。
ps -N 顯示所有的程式,除了執行ps指令終端機下的程式之外。
ps s 采用程式信号的格式顯示程式狀況。
ps S 列出程式時,包括已中斷的子程式資料。
ps -t<終端機編号> 指定終端機編号,并列出屬于該終端機的程式的狀況。
ps u 以使用者為主的格式來顯示程式狀況。
ps x 顯示所有程式,不以終端機來區分。

最常用的方法是ps aux,然後再通過管道使用grep指令過濾查找特定的程序,然後再對特定的程序進行操作。
ps aux | grep program_filter_word,ps -ef |grep tomcat
           

ps -ef|grep java|grep -v grep 顯示出所有的java程序,去處掉目前的grep程序。

2.殺程序

使用kill指令結束程序:kill xxx

常用:kill -9 324

Linux下還提供了一個killall指令,可以直接使用程序的名字而不是程序辨別号,例如:# killall -9 NAME

繼續閱讀