Linux目錄結構和基礎命令

Linux目錄和基礎命令

1 Linux目錄結構

Linux目錄結構為單根倒置樹結構

/bin:

bin是Binary的縮寫, 這個目錄存放二進位程式,經常使用的命令。

/boot:

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

/dev :

dev是Device(設備)的縮寫, 該目錄下存放的是設備文件及特殊文件,在Linux中訪問設備的方式和訪問文件的方式是相同的。

/etc:

存放所有的系統管理所需要的配置文件。

/home:

普通用戶的家目錄,在Linux中,每個用戶都有一個自己的目錄,一般該目錄名是以用戶的帳號命名的。

/lib:

存放庫文件,其作用類似於Windows里的DLL文件。幾乎所有的應用程式都需要用到這些共享庫。

/lost+found:

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

/media:

隨身時移動設備掛載點,例如U盤等等,當識別後,linux會把識別的設備掛載到這個目錄下。

/mnt:

臨時文件掛載點,我們可以將光碟機掛載在/mnt/上,然後進入該目錄就可以查看光碟機里的內容了。

/opt:

安裝第三方軟體所存放的目錄。比如你安裝一個資料庫則就可以放到這個目錄下。默認是空的。

/proc:

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

用於輸出內核與進程資訊相關的虛擬文件系統。

這個目錄的內容不在硬碟上而是在記憶體里,我們也可以直接修改裡面的某些文件

/root:

該目錄為系統管理員的家目錄,也稱作超級許可權者的用戶家目錄。

/sbin:

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

/selinux:

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

/srv:

該目錄存服務運行時需要的數據。

/sys:

用於輸出當前系統上硬體設備相關資訊虛擬文件系統。也是在存放在記憶體中。

/run

存放正在運行中的程式的相關文件

/tmp:

這個目錄是用來存放一些臨時文件的。

/usr:

這是一個非常重要的目錄,用戶的應用程式和文件都放在這個目錄下。

/usr/bin:

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

/usr/sbin:

超級用戶使用的比較高級的管理程式和系統守護程式。

/usr/src:內核源程式碼默認的放置目錄。

/var

這個目錄中存放著在不斷變化著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌文件。

selinux:linux安全策略

Linux目錄分層標準

1.1 Linux文件名命令要求

路徑以/分隔

文件名最長255個位元組

包括路徑在內,文件名稱最長4095個位元組

除了斜杠和NULL,所有字元都有效,但是不推薦用特殊字元做文件名和目錄名。

1.2 文件的類型

文件的類型:

- 普通文件,

d 目錄文件

b block device 即塊設備文件,如硬碟;支援以block為單位進行隨機訪問

c character device 即字元設備文件,如鍵盤支援以character為單位進行線性訪問

l symbolic link 即符號鏈接文件,又稱軟鏈接文件

p pipe 即命名管道文件

s socket 即套接字文件

2. 基礎命令

2.1 ls

ls 常用選項

  -a 顯示隱藏文件

  -l 顯示文件的屬性

  -d 顯示目錄

  -R 目錄遞歸

  -S 按文件大小從大到小排序

  -t 按mtime排序

  -u  配合-t 選項,顯示並按atime從新到舊排序

  -U 按目錄存放順序顯示

  -X 按文件後綴排序。

  mtime :文件內容被改時間

  ctime :文件屬性被修改時間

  atime: 文件訪問時間

  ls -l --time=ctime/atime filename

  修改一個文件後,mtime會變,這時查看ctime也會變,因為是修改,文件大小也會變,ctime是看屬性的,文件大小也屬於屬性

2.2 cd和pwd

pwd 顯示當前在目錄的絕對路徑
cd 切換目錄

2.3 命令提示符

命令提示符: prompt

# 管理員
$ 普通用戶
顯示提示符格式:
[root@Hans ~]# echo $PS1
[\u@\h \W]\$
修改提示符格式
PS1="\[\e[33;40m\][\u@\h \W]\\$\[\e[0m\]"
\e \033 		\u 當前用戶
\h 主機名簡稱 	\H 主機名
\w 當前工作目錄 	\W 當前工作目錄基名
\t 24小時時間格式 \T 12小時時間格式
\! 命令歷史數 	\# 開機後命令歷史數

2.4 echo命令

功能:顯示字元

語法: echo [-neE][字元串]

說明: echo會將輸入的字元串送往標準輸出。輸出的字元串間以空白字元隔開,
並在最後加上換行號

選項:

-E (默認)不支援 \ 解釋功能
-n 不自動換行
-e 啟用 \ 字元的解釋功能

顯示變數

echo "$VAR_NAME」 變數會替換,弱引用
echo '$VAR_NAME』 變數不會替換,強引用

啟用命令選項-e, 若字元串中出現以下字元,則特別加以處理,而不會將它當成一般文字輸出

\a 發出警告聲
\b 退格鍵
\c 最後不加上換行符號
\n 換行且游標移至行首
\r 回車,即游標移至行首,但不換行
\t 插入tab
\\ 插入\字元
\0nnn 插入nnn(八進位)所代表的ASCII字元
echo -e '\033[43;31;5m10itedu\033[0m'
\xHH插入HH(十六進位)所代表的ASCII數字( man 7 ascii)

2.5 tab鍵

**命令補全 **

內部命令:
外部命令: bash根據PATH環境變數定義的路徑,自左而右在每個路徑搜尋
以給定命令名命名的文件,第一次找到的命令即為要執行的命令
用戶給定的字元串只有一條惟一對應的命令,直接補全
否則,再次Tab會給出列表

**路徑補全 **

把用戶給出的字元串當做路徑開頭,並在其指定上級目錄下搜索以指定的字
符串開頭的文件名
如果惟一:則直接補全
否則:再次Tab給出列表

2.6 history 歷史命令

保存你輸入的命令歷史。可以用它來重複執行命令
登錄shell時,會讀取命令歷史文件中記錄下的命令~/.bash_history
登錄進shell後新執行的命令只會記錄在快取中;這些命令會用戶退出時「追加」至命令歷史文件中

重複前一個命令,有4種方法:

  1. 重複前一個命令使用上方向鍵,並回車執行
  2. 按 !! 並回車執行
  3. 輸入 !-1 並回車執行
  4. 按 Ctrl+p 並回車執行

查看歷史命令

history

執行歷史命令

!:0 執行前一條命令(去除參數)
!n 執行history命令輸出對應序號n的命令
!-n 執行history歷史中倒數第n個命令
!string 重複前一個以「string」開頭的命令
!?string 重複前一個包含string的命令
!string:p 僅列印命令歷史,而不執行
!$:p 列印輸出 !$ (上一條命令的最後一個參數)的內容
!*:p 列印輸出 !*(上一條命令的所有參數)的內容
!:s^string1^string2 將上一條命令中的第一個string1替換為string2
示例:
[root@localhost ~ 16:07:37]#ls -l -r -t
total 36
-rwxr-xr-x. 1 root root 18681 Aug 26  2016 Tetris.sh
-rw-------. 1 root root  1615 Mar 15 10:59 anaconda-ks.cfg
-rw-r--r--. 1 root root   565 Mar 16 15:00 test.txt20210316
-rw-r--r--. 1 root root  2179 Mar 17 10:54 test.txt
-rwxr-xr-x. 1 root root   137 Mar 17 11:54 test.sh
[root@localhost ~ 16:07:46]#!:s^r^a  #把上一命令的第r換成a

!:gs/string1/string2 將上一條命令中所有的string1都替換為 string2
示例:
[root@localhost ~ 16:07:37]#ls -l -r -t
total 36
-rwxr-xr-x. 1 root root 18681 Aug 26  2016 Tetris.sh
-rw-------. 1 root root  1615 Mar 15 10:59 anaconda-ks.cfg
-rw-r--r--. 1 root root   565 Mar 16 15:00 test.txt20210316
-rw-r--r--. 1 root root  2179 Mar 17 10:54 test.txt
-rwxr-xr-x. 1 root root   137 Mar 17 11:54 test.sh
[root@localhost ~ 16:07:46]#!:gs^l^a  #把上一個命令的全部l換成a

**調用歷史參數 **

command !^ 利用上一個命令的第一個參數做cmd的參數
command !$ 利用上一個命令的最後一個參數做cmd的參數
command !* 利用上一個命令的全部參數做cmd的參數
command !:n 利用上一個命令的第n個參數做cmd的參數
command !n:^ 調用第n條命令的第一個參數
command !n:$ 調用第n條命令的最後一個參數
command !n:m 調用第n條命令的第m個參數
command !n:* 調用第n條命令的所有參數
command !string:^ 從命令歷史中搜索以 string 開頭的命令,並獲取它的第一個參數
command !string:$ 從命令歷史中搜索以 string 開頭的命令,並獲取它的最後一個參數
command !string:n 從命令歷史中搜索以 string 開頭的命令,並獲取它的第n個參數
command !string:* 從命令歷史中搜索以 string 開頭的命令,並獲取它的所有參數


**history命令格式 **

-c: 清空命令歷史
-d offset: 刪除歷史中指定的第offset個命令
n: 顯示最近的n條歷史
-a: 追加本次會話新執行的命令歷史列表至歷史文件
-r: 讀歷史文件附加到歷史列表
-w: 保存歷史列表到指定的歷史文件
-n: 讀歷史文件中未讀過的行到歷史列表
-p: 展開歷史參數成多行,但不存在歷史列表中
-s: 展開歷史參數成一行,附加在歷史列表後

**history相關環境變數 **

HISTSIZE:命令歷史記錄的條數
HISTFILE:指定歷史文件,默認為~/.bash_history
HISTFILESIZE:命令歷史文件記錄歷史的條數
HISTTIMEFORMAT="%F %T " 顯示時間
HISTIGNORE=「str1:str2*:… 「 忽略str1命令, str2開頭的歷史
控制命令歷史的記錄方式:
環境變數: HISTCONTROL
    ignoredups 默認,忽略重複的命令,連續且相同為「重複」
    ignorespace 忽略所有以空白開頭的命令
    ignoreboth 相當於ignoredups, ignorespace的組合
	erasedups 刪除重複命令
存放在 /etc/profile 或 ~/.bash_profile

2.7 bash的快捷鍵

Ctrl + l 清屏,相當於clear命令
Ctrl + o 執行當前命令,並重新顯示本命令
Ctrl + s 阻止螢幕輸出,鎖定
Ctrl + q 允許螢幕輸出
Ctrl + c 終止命令
Ctrl + z 掛起命令
Ctrl + a 游標移到命令行首,相當於Home
Ctrl + e 游標移到命令行尾,相當於End
Ctrl + f 游標向右移動一個字元
Ctrl + b 游標向左移動一個字元
Alt + f 游標向右移動一個單詞尾
Alt + b 游標向左移動一個單詞首
Ctrl + xx 游標在命令行首和游標之間移動
Ctrl + u 從游標處刪除至命令行首(剪切)
Ctrl + k 從游標處刪除至命令行尾(剪切)
Alt + r 刪除當前整行
Ctrl + w 從游標處向左刪除至單詞首
Alt + d 從游標處向右刪除至單詞尾
Ctrl + d 刪除游標處的一個字元
Ctrl + h 刪除游標前的一個字元
Ctrl + y 將刪除的字元粘貼至游標後
Alt + c 從游標處開始向右更改為首字母大寫的單詞
Alt + u 從游標處開始,將右邊一個單詞更改為大寫
Alt + l 從游標處開始,將右邊一個單詞更改為小寫
Ctrl + t 交換游標處和之前的字元位置
Alt + t 交換游標處和之前的單詞位置
Alt + N 提示輸入指定字元後,重複顯示該字元N次
注意: Alt組合快捷鍵經常和其它軟體衝突

2.8 創建或刪除文件和目錄

創建文件touch
touch 如果文件沒有則創建,如果文件存在則修改mtime時間

touch a.txt

創建目錄mkdir

 常用選項:
	 -p 文件夾存在不報錯,不存在則創建,可以遞歸創建文件夾

	 -v 顯示詳細資訊

	 -m mode:創建目錄時指定許可權

刪除文件夾rmdir
rmdir 只能刪除空文件夾(目錄)

常用選項
	-p 遞歸刪除空目錄

	-v 顯示詳細資訊

刪除文件rm
格式:
rm [option]… FILE…

 常用選項
	-i 互動式
	-f 強制
	-r 遞歸

2.9 runlevel運行級別

runlevel運行級別:為系統運行或維護等目的而設定; 0-6: 7個級別

  • 0:關機
  • 1:單用戶模式(root自動登錄), single, 維護模式 ###不具有網路功能,典型的應用是破解root密碼,很多其他的維護也用單用戶模式
  • 2: 多用戶模式,啟動網路功能,但不會啟動NFS;維護模式
  • 3:多用戶模式,正常模式;文本介面
  • 4:預留級別;可同3級別
  • 5:多用戶模式,正常模式;圖形介面
  • 6:重啟

默認級別: 3, 5

切換級別: init #

查看級別: runlevel ; who -r

2.10 關機重啟

關機:
shutdown
  -P --poweroff  Power-off the machine
  -r --reboot    Reboot the machine
  -h             Equivalent to --poweroff, overridden by --halt
  -c             Cancel a pending shutdown
立刻關機: shutdown -h now
立刻重啟: shutdown -r now
重啟:
reboot
Tags: