1. 程式人生 > >夯實基礎系列四:Linux 知識總結

夯實基礎系列四:Linux 知識總結

前言

現在很多公司專案部署都使用的是 Linux 伺服器,網際網路公司更是如此。對於大一些的網際網路公司,系統可能會非常複雜,本地無法啟動,一般都會採用專門的開發機給開發人員開發測試使用。我實習期間接觸的專案沒一個可以在本地啟動的,都需要寫好程式碼,把程式碼更新到開發機上,然後編譯部署,並檢視部署過程中是否有錯誤或是檢視訪問這臺機器的日誌。而這些操作,都需要對基本的 Linux 命令熟悉。

今天總結下 Linux 的相關概念和基本操作,如果想了解更多,可以去看看《鳥哥的私房菜》。同時希望大家多動手實踐,這樣理解得更深刻。

概要

Linux 知識總結以下部分內容:Linux 常見概念、Linux 常用命令、vi 操作和一個最簡單的 shell 指令碼。

細節

1. Linux 常見概念

1.1 Linux 與 Windows 的不同
  • Linux 嚴格區分大小寫
  • Linux 中所有內容以檔案形式儲存,包括硬體。一切內容皆檔案。
  • Linux 不靠副檔名區分檔案型別,靠許可權區分檔案型別。帶字尾的檔名是約定俗成,方便管理
  • Windows下的程式不能在Linux中安裝和執行
1.2 Linux 採用字元介面有什麼優勢
  • 字元介面佔用的系統資源更少
  • 字元介面減少了出錯、被攻擊的可能性
1.3 分割槽型別
  • 主分割槽:最多隻能有 4 個。
  • 擴充套件分割槽
    • 最多隻能有 1 個
    • 主分割槽加擴充套件分割槽最多有 4 個
    • 不能寫入資料,只能包含邏輯分割槽
  • 邏輯分割槽
1.4 掛載
  • 必須分割槽
    • / (根分割槽)
    • swap 分割槽(交換分割槽,記憶體 2 倍,不超過 2GB)
  • 推薦分割槽
    • /boot(啟動分割槽,200 MB)
1.5 常見目錄的作用
  • / 根目錄
  • /bin 命令儲存目錄(普通使用者就可以讀取的命令)
  • /boot 啟動目錄,啟動相關檔案
  • /dev 裝置檔案儲存目錄
  • /etc 配置檔案儲存目錄
  • /home 普通使用者的家目錄
  • /lib 系統庫儲存目錄
  • /mnt 系統掛載目錄
  • /media 掛載目錄
  • /root 超級使用者的家目錄
  • /tmp 臨時目錄
  • /sbin 命令儲存目錄(超級使用者才能使用的目錄)
  • /proc 直接寫入記憶體的
  • /sys
  • /usr 系統軟體資源目錄
    • /usr/bin/ 系統命令(普通使用者)
    • /usr/sbin/ 系統命令(超級使用者)
  • /var 系統相關文件內容

根目錄下的 bin 和 sbin,usr 目錄下的bin 和 sbin,這四個目錄都是用來儲存系統命令的。

proc 和 sys 目錄不能直接操作,這兩個目錄儲存的是記憶體的過載點。

2. Linux 常用命令

2.1 命令基本格式

命令 [選項][引數]

2.2 查詢目錄中內容

ls [選項][檔案或目錄]

選項:

  • -a:顯示所有檔案,包括隱藏檔案
  • -l:顯示詳細資訊
  • -d:檢視目錄屬性
  • -h:人性化顯示檔案大小
  • -i:顯示 inode
2.3 目錄處理命令

mkdir -p [目錄名]

-p 遞迴建立

命令英文原意:make directories

cd [目錄]

命令英文原意:change directory

  • 簡化操作

cd ~ 進入當前使用者的家目錄

cd

cd - 進入上次目錄

cd … 進入上一級目錄

cd . 進入當前目錄

查詢所在目錄位置:pwd

命令英文原意:print working directory

2.4 刪除檔案或目錄

rm -rf [檔案或目錄]

選項:

  • -r:刪除目錄
  • -f:強制
2.5 複製命令

cp [選項][原始檔或目錄] [目標目錄]

選項:

  • -r:複製目錄
  • -p:連帶檔案屬性複製
  • -d:若原始檔是連結檔案,則複製連結屬性
  • -a:相當於 -pdr
2.6 剪下或改名命令

mv [原檔案或目錄][目標目錄]

2.7 連結命令

ln -s [原檔案][目標檔案]

生成連結檔案

選項:-s 建立軟連結

硬連結特徵:

  • 擁有相同的i節點和儲存block塊,可以看做是同一個檔案
  • 可通過i節點識別
  • 不能跨分割槽
  • 不能針對目錄使用

軟連結特徵:

  • 類似 Windows 快捷方式
  • 軟連結擁有自己的i節點和block塊,但是資料塊中只儲存原檔案的檔名和i節點號,並沒有實際的檔案資料
  • lrwxrwxrwx表示軟連結,軟連結檔案許可權都為rwxrwxrwx
  • 修改任意檔案,另一個都改變
  • 刪除原檔案,軟連結不能使用
  • 軟連結如果目標檔案和原始檔不在同一目錄下,原始檔必須寫絕對路徑
2.8 檔案搜尋命令

locate 檔名

在後臺數據庫中按檔名搜尋,搜尋速度更快

/var/lib/mlocate

locate 命令所搜尋的後臺資料庫

updatedb

更新資料庫。預設一天一更新。快。缺點:只能按檔名來搜尋

find [搜尋範圍][搜尋條件]

搜尋檔案

find / -name install.log

避免大範圍搜尋,會非常耗費系統資源

find 是在系統當中搜尋符合條件的檔名。如果需要匹配,使用萬用字元匹配,萬用字元是完全匹配。

*	匹配任意內容
?	匹配任意一個字元
[]	匹配任意一箇中括號內的字元

find /root -iname install.log

不區分大小寫

find /root -user root

按照所有者搜尋

find /root -nouser

查詢沒有所有者的檔案

find /var/log -mtime +10

查詢10天前修改的檔案

find . -size 25k

查詢檔案大小是 25KB 的檔案

find . -inum 262422

查詢i結點是 262422 的檔案

2.9 搜尋命令的命令

whereis 命令名

搜尋命令所在路徑及幫助文件所在位置

選項:

  • -b:只查詢可執行檔案
  • -m:只查詢幫助檔案

which 命令能看到目錄和別名

2.10 搜尋字串命令

grep [選項] 字串 檔名

在檔案當中匹配符合條件的字串

選項:

  • -i:忽略大小寫
  • -v:排除指定字串
2.11 幫助命令

man 命令

命令 --help

help shell內部命令

info 命令

2.12 壓縮命令

zip 格式壓縮

zip 壓縮檔名 原始檔

壓縮檔案

zip -r 壓縮檔名 源目錄

壓縮目錄

zip格式解壓縮

unzip 壓縮檔案

gz 格式壓縮

gzip 原始檔

壓縮為.gz 格式的壓縮檔案,原始檔會消失

gzip -c 原始檔 > 壓縮檔案

壓縮為.gz 格式,原始檔保留

gzip -r 目錄

壓縮目錄下所有的子檔案,但是不能壓縮目錄

gz 格式解壓縮

gzip -d 壓縮檔案

解壓縮檔案

gunzip 壓縮檔案

解壓縮檔案

bz2 格式壓縮

bzip2 原始檔

壓縮為.bz2格式,不保留原始檔

bzip2 -k 原始檔

壓縮之後保留原始檔

bzip2命令不能壓縮目錄

打包命令tar

tar -cvf 打包檔名 原始檔

解打包命令

tar -xvf 打包檔名

.tar.gz壓縮格式

其實.tar.gz 格式是先打包為.tar格式,再壓縮為.gz格式

tar -zcvf 壓縮包名.tar.gz 原始檔

.tar.gz 解壓縮

tar -zxvf 壓縮包名.tar.gz

.tar.bz2壓縮格式

tar -jcvf 壓縮包名.tar.bz2 原始檔

.tar.bz2 解壓縮

tar -jxvf 壓縮包名.tar.bz2

2.13 關機命令

shutdown [選項] 時間

選項:

  • -c:取消前一個關機命令
  • -h:關機
  • -r:重啟

halt

poweroff

init 0

2.14 重啟

reboot

init 6

2.15 系統執行級別
  • 0:關機
  • 1:單使用者
  • 2:不完全多使用者,不含NFS服務
  • 3:完全多使用者
  • 4:未分配
  • 5:圖形介面
  • 6:重啟

cat /etc/inittab

修改系統預設執行級別

runlevel

查詢系統執行級別

logout

退出登入

2.16 掛載命令
  • 查詢與自動掛載

mount

查詢系統中已經掛載的裝置

mount -a

依據配置檔案/etc/fstab 的內容,自動掛載

  • 掛載命令格式

mount [-t 檔案系統][-o 特殊選項] 裝置檔名 掛載點

  • 掛載光碟

mkdir /mnt/cdrom

建立掛載點

mount -t iso9660 /dev/cdrom /mnt/cdrom/

掛載光碟

  • 解除安裝命令

umount 裝置檔名或掛載點

umount /mnt/cdrom

2.17 檢視登入使用者資訊

w 使用者名稱

命令輸出:

  • USER:登入的使用者名稱
  • TTY:登入終端
  • FROM:從哪個IP地址登入
  • [email protected]:登入時間
  • IDLE:使用者閒置時間
  • JCPU:和該終端連線的所有程序佔用的時間
  • PCPU:當前程序所佔用的時間
  • WHAT:當前正在執行的命令

who 使用者名稱

  • 查詢當前登入和過去登入的使用者資訊

last

  • 檢視所有使用者的最後一次登入時間

lastlog

2.18 歷史命令

history [選項][歷史命令儲存檔案]

選項

  • -c:清空歷史命令
  • -w:把快取中的歷史命令寫入歷史命令儲存檔案 ~/.bash_history

歷史命令預設會儲存 1000 條,可以在環境變數配置檔案 /etc/profile 中進行修改

2.19 統計

wc [選項][檔名]

選項

  • -c:統計位元組數
  • -w:統計單詞數
  • -l:統計行數
2.20 管道符

分頁檢視輸出內容

ls -l /etc | more

netstat -an | grep ESTABLISHED

2.21 使用者和使用者組
  • 使用者:使用作業系統的人
  • 使用者組:具有相同系統許可權的一組使用者
  • /etc/group:儲存當前系統中所有使用者組資訊
    • 組名稱
    • 組密碼佔位符
    • 組編號
    • 組中使用者名稱列表
  • /etc/gshadow:儲存當前系統中使用者組的密碼資訊
    • 組名稱
    • 組密碼
    • 組管理者
    • 組中使用者名稱列表
  • /etc/passwd:儲存當前系統中所有使用者的資訊
    • 使用者名稱
    • 密碼佔位符
    • 使用者編號
    • 使用者組編號
    • 使用者註釋資訊
    • 使用者主目錄
    • shell 型別
  • /etc/shadow 儲存當前系統中所有使用者的密碼資訊
    • 使用者名稱
    • 密碼

3. vi 操作

3.1 操作模式
  • Command Mode:命令模式
  • Insert Mode:輸入模式
  • Last Line Mode:底行模式
3.2 常用指令

vim + abc

開啟檔案並把游標定位到最後一行

vim +2 abc

第二行

vim +/xxx abc

跳到指定字串第一次出現的地方
同時開啟多個檔案 可用n N prev來切換

3.3 底行模式常用指令
  • :w
    • 儲存檔案,但不退出vi
  • :q
    • 退出vi
  • :!
    • 強制執行
  • /xxx
    • 向下查詢, 按n查詢下一個, N查詢上一個,這個跟less命令的查詢使用方式是一樣的
  • ?xxx
    • 往前查詢, 按n查詢下一個, N查詢上一個
3.4 命令模式常用指令
  • h:游標左移
  • j:游標下移
  • k:游標上移
  • l:游標右移
  • ctrl+f:向下翻頁
  • ctrl+b:向上翻頁
  • ctrl+d:向下翻半頁
  • ctrl+f:向上翻半頁
  • dd:刪除游標所在行
  • o:在游標所在處的下方插入一行並切換到輸入模式
  • yy:複製游標所在的行
  • p:在游標所在行的下方貼上
  • P:在游標所在行的上方貼上

3. Shell 基礎

3.1 Shell 是什麼
  • 命令列直譯器,可啟動、掛起、停止或編寫程式
  • 程式語言,可直接呼叫Linux 系統命令
3.2 輸出命令

echo [選項][輸出內容]

3.3 指令碼編寫

首行

#!/bin/bash

echo “hello world”

賦予執行許可權,直接執行

chmod 755 hello.sh

./hello.sh

通過bash 執行指令碼

bash hello.sh

歡迎關注微信公眾號,技術,思維,心理,帶給你認知的全方位成長。

你的關注,就是對我最大的肯定,我會努力產出的,我們一起成長~

本文由 永倫的小屋 原創。
轉載請註明作者及出處,本文作者為 永倫的小屋。

原文連結:夯實基礎系列四:Linux 知識總結