深入淺出Linux作業系統指令與目錄結構
/
,然後在此目錄下再建立其他的目錄[常用的如下]
/bin
(/usr/bin、/usr/local/bin)
/sbin
(/usr/sbin、/usr/local/sbin)
/home
/root
/lib
/lost+found
這個目錄一般情況下是空的,當系統非法關機後,這裡就存放了一些檔案
/etc
所有的系統管理所需要的組態檔和子目錄。比如安裝 mysql資料庫,mysql的組態檔會存放在此
/usr
這是一個很重要的目錄,使用者的很多應用程式和檔案都放在這個目錄下,類似於 windows 下的 program files 目錄
/boot
存放的是啟動 Linux 時使用的一些核心檔案,包括一些連線檔案以及映象檔案
/media
Linux系統會自動識別一些裝置,例如U盤,光碟機等,當識別後,Linux會把識別的裝置掛載到這個目錄下
/mnt
系統提供該目錄是為了讓使用者臨時掛載別的檔案系統的,我們可以將外部的儲存掛載在 /mnt/ 上,然後進入該目錄就可以檢視內容了。例如我們之前的共用資料夾 D:/myshare
/usr/local
這是另一個給主機額外安裝軟體所安裝的目錄,一般是通過編譯原始碼方式安裝的程式
/proc
這個目錄是一個虛擬目錄,它是系統記憶體的對映,存取這個目錄來獲取系統資訊
/srv
service的縮寫,該目錄存放一些服務啟動之後需要提取的資料
/sys
這是Linux2.6核心的一個很大的變化,該目錄下安裝了2.6核心中新出現的一個檔案系統sysfs
/tmp
這個目錄是用來存放臨時檔案的
/dev
類似於windows的裝置管理器,把所有的硬體用檔案的形式儲存
/opt
這是給主機額外安裝軟體所存放的目錄。如安裝oracle資料庫就可以放到該目錄下,預設為空
/var
這個目錄中存放著在不斷擴充著的東西,習慣將經常被修改的目錄放在這個目錄下。包括各種紀錄檔檔案
/selinux[security-enhanced linux]
SELinux 是一種安全子系統,它能控制程式只能存取特定檔案,有三種工作模式,可以自行設定
說明:公司開發時候,具體的應用場景是這樣的:
遠端登入使用者端有 Xshell6,Xftp6,我們學習使用Xshell和Xftp6
開啟網站:https://www.netsarang.com/en/free-for-home-school/
填寫名字和郵箱,選擇下載Xshell、Xftp、或者兩個都下載
ifconfig
,拿到Linux系統的 ipping 192.168.160.128
,測試主機和Linux虛擬機器器是否網路連通ls
檢視列表Xftp是一個基於windows平臺的功能強大的SFTP、FTP檔案傳輸軟體。使用了Xftp之後,windows使用者能安全的在 UNIX/Linux 和 Windows PC 之間進行檔案傳輸。
安裝與Xshell相同,一直下一步即可。
Linux系統會內建vi文字編輯器
Vim 具有程式編輯的能力,可以看做是Vi的增強版本,可以主動的以字型顏色辨別語法的正確性,方便程式設計。程式碼補完、編譯及錯誤跳轉等方便變成的功能特別豐富。
正常模式
插入模式
命令列模式
:
進入此模式我們在XShell中使用Vim開發一個 Hello.java 程式並儲存。
vim Hello.java 使用vim工具建立Hello.java檔案
ESC
,然後輸入:
,再輸入wq
,wq
代表寫入並退出ls
檢視列表vi和vim快捷鍵
yy
,貼上p
5yy
,表示拷貝當前行向下的 5 行dd
5yy
命令列下/關鍵字,回車查詢,輸入 n 就是查詢下一個
]/hello
,回車,表示在檔案中查詢 hello
這個單詞:set nu
]:set nonu
]編輯 /etc/profile
檔案,在一般模式下使用快捷鍵到該檔案的最末行[G]和最首行[gg]
G
,即可定位至檔案末行gg
進入檔案首行20
,再輸入shift+g
QXL
,復原這個動作。在一般模式下輸入u
ESC
由插入模式回到一般模式,然後按u
復原剛才的輸入shutdown -h now | 立即進行關機 |
---|---|
shutdown -h 1 | 「hello,1分鐘後會關機」 |
shutdown -r now | 現在重新啟動計算機 |
halt | 關機 |
reboott | 重新啟動 |
sync | 把記憶體的資料同步到磁碟 |
注意:
sync
命令,把記憶體中的資料寫到磁碟中sync
su - 使用者名稱
命令來切換成系統管理員身份logout
即可登出使用者使用細節:
Linux 系統是一個多使用者多工的作業系統,任何一個要使用系統資源的使用者,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。
基本語法:
useradd 使用者名稱
/home/milan
細節說明:
當建立使用者成功後,會自動的建立和使用者同名的家目錄。
也可以通過 useradd -d 指定目錄 指定使用者名稱
,給新建立的使用者指定家目錄。
基本用法:
passwd 使用者名稱
基本語法:
userdel 使用者名稱
userdel milan
userdel -r milan
(這個操作一定要謹慎)基本語法:
id 使用者名稱
請查詢root資訊: id root
基本語法:
su - 使用者名稱
切換到milan使用者:su - milan
說明:
exit/logout
指令基本語法:
whoami/who am I
類似於角色,系統可以對有共性的多個使用者進行統一的管理
指令:groupadd 組名
指令:groupdel 組名
指令:useradd -g 使用者組 使用者名稱
基本語法:usermod -g 使用者組 使用者名稱
/etc/passwd
檔案:使用者(user)的組態檔,記錄使用者的各種資訊
/etc/shadow
檔案:口令的組態檔
/etc/group
檔案:組的組態檔,記錄Linux包含的組的資訊
執行級別:
執行級別 | 說明 |
---|---|
0 | 關機 |
1 | 單使用者 |
2 | 多使用者狀態沒有網路服務 |
3 | 多使用者狀態有網路服務 |
4 | 系統未使用保留給使用者 |
5 | 圖形介面 |
6 | 系統重新啟動 |
常用的執行級別是3和5,也可以指定預設執行級別。
命令:
init[0123456]
通過 init 來切換不同的執行級別,比如由5圖形介面切換到3無圖形介面
面試題:如何找回root密碼
e
進入編輯介面。init=/bin/sh
Ctrl+X
進入單使用者模式mount -o remount,rw /
(注意各個單詞間有空格),完成後回車,如下圖passwd
,完成後回車。輸入密碼,再次確認密碼即可(密碼長度最好8位元以上,但不是必須的),密碼修改成功後,會顯示 passwd… 的樣式,說明密碼修改成功[我這裡設定為1234567890]接著,在遊標閃爍的位置(最後一行中)輸入:touch /.autorelabel
(touch與 / 後面有一個空格),完成後按確認鍵
繼續在遊標閃爍的位置中,輸入:exec /sbin/init
(exec與 / 後面有一個空格 ),完成後回車。等待系統自動修改密碼(這個過程時間有點長,耐心等待),完成後系統會自動重新啟動,新的密碼就生效了。
這樣進入系統,我們就又可以將密碼改為自己熟悉的密碼
man[幫助或組態檔]
(功能描述:獲得幫助資訊)ls
命令的幫助資訊:man ls
在Linux下我們的隱藏檔案是以
.
開頭的
基本語法:
help 命令
功能描述:獲得shell內建命令的幫助資訊
help cd 等
基本語法:
pwd
功能描述:顯示當前工作目錄的絕對路徑
基本語法:
ls [選項] [目錄或是檔案]
常用選項:
ls -a
:顯示當前目錄所有的檔案和目錄,包括隱藏的ls -l
:以列表的方式顯示資訊基本語法:cd [引數]
(功能描述:切換到指定目錄)
cd ~
或者 cd :
回到自己的家目錄cd ..
回到當前目錄的上一級目錄mkdir指令用於建立目錄
基本語法:mkdir [選項] 要建立的目錄
常用選項:-p
建立多級目錄
/home/dog
/home/animal/tiger
rmdir指令刪除空目錄
基本語法:rmdir [選項] 要刪除的空目錄
使用細節:rmdir 刪除的是空目錄,如果目錄下有內容時無法刪除。如果需要刪除非空目錄,需要使用 rm -rf 要刪除的目錄
(這個操作請超級謹慎)
touch指令建立空檔案
基本語法:touch 檔名稱
cp指令拷貝檔案到指定目錄
基本語法:cp [選項] source dest
常用選項:-r
遞迴複製整個資料夾(其實就是Windows系統的複製資料夾)
強制覆蓋不提示:
\cp [選項] source dest
rm指令移除檔案或目錄
基本語法:rm [選項] 要刪除的檔案或目錄
常用選項:
-r
遞迴刪除整個資料夾-f
強制刪除不提示rm /home/hello.txt
rm -rf /home/bbb [刪除整個資料夾,不提示]
強制刪除不提示的方法:帶上
-f
引數即可
mv 移動檔案與目錄或重新命名
基本語法:
mv oldNameFile newNameFile
(功能描述:重新命名)
mv /temp/movefile /targetFolder
(功能描述:移動檔案)
mv cat.txt pig.txt
mv /home/pig.txt /root
cat檢視檔案內容
基本語法:cat [選項] 要檢視的檔案
常用選項:-n
:顯示行號
/etc/profile
檔案內容,並顯示行號cat -n /etc/profile
細節:
|more
cat -n/etc/profile | more
more指令是一個基於VI編輯器的文字過濾器,它以全螢幕幕的方式按頁顯示文字檔案的內容。more指令中內建了若干快捷鍵(互動的指令),如下:
基本語法: more 要檢視的檔案
操作 | 功能說明 |
---|---|
空格鍵space | 代表向下翻一頁 |
Enter | 代表向下翻一行 |
q | 代表立刻離開more,不再顯示該檔案內容 |
Ctrl+F | 向下捲動一屏 |
Ctrl+B | 返回上一屏 |
= | 輸出當前行的行號 |
:f | 輸出檔名和當前行的行號 |
less指令用來分屏檢視檔案內容,它的內容與 more 指令類似,但是比 more 指令更加強大,支援各種顯示終端。less指令在顯示檔案內容時,並不是一次將整個檔案載入之後才顯示,而是根據顯示需要載入內容,對於顯示大型檔案具有較高的效率。
基本語法:less 要檢視的檔案
操作 | 功能說明 |
---|---|
空格鍵space | 代表向下翻一頁 |
[pagedown] | 代表向下翻一行 |
[pageup] | 代表向上翻一行 |
/字串 | 向下搜尋[字串]的功能,n:向下查詢,N:向上查詢 |
?字串 | 向上搜尋[字串]的功能,n:向下查詢,N:向上查詢 |
q | 離開less這個程式 |
/字串
尋找字串按 n 鍵,向下查詢,按 N 鍵,向上查詢。
echo輸出內容到控制檯
基本語法: echo [選項] [輸出內容]
$PATH
、主機名$HOSTNAME
echo $PATH
echo $HOSTNAME
echo "hello,world"
head用於顯示檔案的開頭部分,預設情況下 head 指令顯示檔案的前10行內容。
基本語法:
head 檔案
(功能描述:檢視檔案頭10行內容)head -n 5 檔案
(功能描述:檢視檔案頭5行內容,5可以是任意行數)head -n 5 /etc/profile
tail 用於輸出檔案中尾部的內容,預設情況下 tail 指令顯示檔案的前10行內容
基本語法:
tail 檔案
(功能描述:檢視檔案尾10行內容)tail -n 5 檔案
(功能描述:檢視檔案尾5行內容,5可以是任意行數)tail -f 檔案
(功能描述:實時追蹤該檔案的所有更新)tail -n 5 /etc/profile
tail -f /home/mydate.txt
>
輸出重定向
>>
追加
基本語法:
ls -l > 檔案
(功能描述:列表的內容寫入檔案中(覆蓋寫))
ls -al>>檔案
(功能描述:列表的內容追加到檔案末尾)
cat 檔案1 > 檔案2
(功能描述:將檔案1的內容覆蓋到檔案2)
echo "內容">>檔案
(功能描述:將內容追加到檔案)
ls -l/home > /home/info.txt [如果info.txt沒有,則會自動建立
軟連結也稱為符號連結,類似於 windows 裡的快捷方式,主要存放了連結其他檔案的路徑
基本語法:ln -s [原檔案或目錄][軟連結名]
(功能描述:給原檔案建立一個軟連結)
ln -s/root /home/myroot
rm /home/myroot
當我們使用pwd指令檢視目錄時,仍然看到的是軟連結所在目錄
檢視已經執行過歷史命令,也可以執行歷史指令
基本語法:history
(功能描述:檢視已經執行過的歷史命令)
history
history 10
!5
date指令顯示當前日期
基本語法:
date
(功能描述:顯示當前時間)
date+%Y
(功能描述:顯示當前年份)
date+%m
(功能描述:顯示當前月份)
date+%d
(功能描述:顯示當前是哪一天)
date+"+%Y-%m-%d%H:%M:%S"
(功能描述:顯示年月日時分秒)
顯示當前時間資訊
date
date "+%Y-%m-%d"
基本語法:date -s 字串時間
2020-11-23 10:09:09
date -s "2020-11-23 10:09:09"
cal指令用於檢視日曆
基本語法:cal[選項]
(功能描述:不加選項,顯示本月日曆)
cal
cal 2020
find 指令將從指定目錄向下遞迴地遍歷其各個子目錄,將蠻族調節的檔案或者目錄顯示在終端
基本語法: find [搜尋範圍] [選項]
選項如下:
選項 | 功能 |
---|---|
-name<查詢方式> | 按照指定的檔名查詢模式查詢檔案 |
-user<使用者名稱> | 查詢屬於指定使用者名稱所有檔案 |
-size<檔案大小> | 按照指定的檔案大小查詢檔案 |
find/home -name hello.txt
find /opt -user nobody
find / -size +200M
locate指令可以快速定位檔案路徑。locate指令利用事先建立的系統中所有檔名稱及路徑的 locate 資料庫實現快速定位給定的檔案。 locate 指令無需遍歷整個檔案系統,查詢速度較快,為了保證查詢結果的準確度,管理員必須頂起更新 locate 時刻。
基本語法:locate 搜尋檔案
特別說明:由於 locate 指令基於資料庫進行查詢,所以第一次執行前,必須使用 updatedb 指令建立 locate 資料庫
which 指令,可以檢視某個指令在哪個目錄下,比如 ls 指令在哪個目錄
which ls
grep 過濾查詢,管道符 「|」 ,表示將前一個命令的處理結果輸出傳遞給後面的命令處理,兩者通常結合使用
基本語法:grep[選項] 查詢內容 原始檔
選項說明:
選項 | 功能 |
---|---|
-n | 顯示匹配行及行號 |
-i | 忽略字母大小寫 |
cat /home/hello.txt | grep "yes"
grep -n "yes" /home/hello.txt
gzip 用於壓縮檔案,gunzip 用於解壓
基本用法:
gzip 檔案
(功能描述:壓縮檔案,只能將檔案壓縮為 *.gz
檔案)
gunzip 檔案.gz
(功能描述:解壓縮檔案命令)
gzip /home/hello.txt
gunzip /home/hello.txt.gz
zip 用於壓縮檔案,unzip用於解壓,這個在專案打包釋出中很有用
基本語法:
zip [選項] XXX.zip 將要壓縮的內容
(功能描述:壓縮檔案和目錄的命令)
-r
遞迴壓縮,即壓縮目錄unzip [選項] XXX.zip
(功能描述:解壓縮檔案)
-d<目錄>
指定解壓後檔案的存放目錄zip -r myhome.zip /home/ [將home目錄及其包含的檔案和子資料夾都壓縮]
mkdir /opt/tmp
unzip -d/opt/tmp /home/myhome.zip
tar指令是打包指令,最後打包後的檔案是 .tar.gz
的檔案
基本語法:tar [選項] XXX.tar.gz 打包的內容
(功能描述:打包目錄,壓縮後的檔案格式 .tar.gz)
選項 | 功能 |
---|---|
-c | 產生.tar打包檔案 |
-v | 顯示詳細資訊 |
-f | 指定壓縮後的檔名 |
-z | 打包同時壓縮 |
-x | 解壓.tar檔案 |
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
tar -zcvf myhome.tar.gz /home/
tar -zxvf pc.tar.gz
mkdir /opt/tmp2
tar -zxvf/home/myhome.tar.gz