夯實基礎系列四: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 文件系統 設備文件名 掛載點

  • 掛載光盤

mkdir /mnt/cdrom

建立掛載點

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

掛載光盤

  • 卸載命令

umount 設備文件名或掛載點

umount /mnt/cdrom

2.17 查看登錄用戶信息

w 用戶名

命令輸出:

  • USER:登錄的用戶名
  • TTY:登錄終端
  • FROM:從哪個IP地址登錄
  • LOGIN@:登錄時間
  • 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 知識總結


分享到:


相關文章: