鸟哥Linux 私房菜
鳥哥的 Linux 私房菜
1.磁盤分區
SATA1插槽上的文件名:/dev/sda
SATA5插槽上的文件名:/dev/sdb
USB磁盤(開機完成后才被系統捉到):/dev/sdc
分區表的兩種形式:
1.MBR:分四區。開機管理程序紀錄區與分區表則通通放在磁盤的第一個扇區, 這個扇區通常是 512Bytes 。
ex:/dev/sda1;/dev/sda2 ;/dev/sda3;/dev/sda4 分別對應win的CDEF盤。
可以劃一個延伸分區(101400),在其基礎上做邏輯分區,分出更多區域。(當然,此時primary分區就是0100)
2.GPT磁盤分區表:
在Linux系統下使用的是目錄樹系統
掛載:
2.BIOS and UEFI開機程序
關機:
將數據同步寫入硬盤中的指令: sync
重新開機: shutdown
關機: reboot, halt, poweroff
3.文件
(1)權限
“User, Group及Others,root
第一個字符代表這個文件是“目錄、文件或鏈接文件等等”:
-
當為[ d ]則是目錄,例如上表文件名為“.config”的那一行;
-
當為[ - ]則是文件,例如上表文件名為“initial-setup-ks.cfg”那一行;
-
若是[ l ]則表示為鏈接文件(link file);
-
若是[ b ]則表示為設備文件里面的可供儲存的周邊設備(可隨機存取設備);
-
若是[ c ]則表示為設備文件里面的序列埠設備,例如鍵盤、鼠標(一次性讀取設備)。
-
[ s ]數據接口文件
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1smfnvrd-1655366425885)(C:\Users\a\AppData\Roaming\Typora\typora-user-images\image-20220522194240499.png)]
-
第二欄表示有多少文件名鏈接到此節點(i-node)
-
第三欄表示這個文件(或目錄)的“擁有者帳號”
-
第四欄表示這個文件的所屬群組
-
第五欄為這個文件的容量大小,默認單位為Bytes;
-
第六欄為這個文件的創建日期或者是最近的修改日期:
-
第七欄為這個文件的文件名
修改權限(root下):
-
chgrp :改變文件所屬群組
-
chown :改變文件擁有者
-
chmod :改變文件的權限,1.數字法:> r:4 > w:2 > x:1
目錄所需權限:使用者對這個目錄至少需要具有 x 的權限
/(root, 根目錄):與開機系統有關;
/usr (unix software resource):與軟件安裝/執行有關;
/var (variable):與系統運行過程有關。
路徑:
絕對路徑:由根目錄(/)開始寫起的文件名或目錄名稱, 例如 /home/dmtsai/.bashrc;
相對路徑:相對于目前路徑的文件名寫法。 例如 ./home/dmtsai 或 …/…/home/dmtsai/ 等 等。反正開頭不是 / 就屬于相對路徑的寫法
. :代表當前的目錄,也可以使用 ./ 來表示;
… :代表上一層目錄,也可以 …/ 來代表。
-:代表前一個工作目錄
pwd:顯示目前的目錄
mkdir:創建一個新的目錄
rmdir:刪除一個空的目錄
修改文件時間為最新或創建新文件: touch
查看文件內容:cat
目前使用者在創建文件或目錄時候的權限默認值(該默認值需要減掉的權限!):umask,后三位分別代表u g o權限,r、w、x 分別是 4、2、1 分。文件默認屬性 666 與目錄默認屬性 777
額外權限:
chattr (設置文件隱藏屬性)
lsattr (顯示文件隱藏屬性)
文件特殊權限:當 s 標志在文件擁有者的 x 項目為 SUID,那 s 在群組的 x 時則稱為 Set GID, SGID
SUID:用戶擁有root權限
SGID:
SBIT:只對目錄有用,作用是:當使用者對于此目錄具有 w, x 權限,亦即具有寫入的權限時;當使用者在該目錄下創建文件或目錄時,僅有自己與 root 才有權力刪除該文件
搜尋文件:
which (尋找“可執行文件”也就是命令)
whereis (由一些特定的目錄中尋找文件文件名),find locate
(2)文件系統為 Ext2
索引式文件系統
- superblock:記錄此 filesystem 的整體信息,包括inode/block的總量、使用量、剩余量以及文件系統的格式與相關信息等;
- inode:記錄文件的屬性,一個文件占用一個inode,同時記錄此文件的數據所在的 block 號碼;
- block:實際記錄文件的內容,若文件太大時,會占用多個 block 。
區分為多個區塊群組 (block group) ,每個區塊群組都有獨立的 inode/block/superblock 系統
新建一個文件或目錄
先確定使用者對于欲新增文件的目錄是否具有 w 與 x 的權限,若有的話才能新增;
根據 inode bitmap 找到沒有使用的 inode 號碼,并將新文件的權限/屬性寫入;
根據 block bitmap 找到沒有使用中的 block 號碼,并將實際的數據寫入 block 中,且更 新 inode 的 block 指向數據;
將剛剛寫入的 inode 與 block 數據同步更新 inode bitmap 與 block bitmap,并更新 superblock 的內容。
日志式文件系統
預備:當系統要寫入一個文件時,會先在日志記錄區塊中紀錄某個文件準備要寫入的信息;
實際寫入:開始寫入文件的權限與數據;開始更新 metadata 的數據;
結束:完成數據與 metadata 的更新后,在日志記錄區塊當中完成該文件的紀錄。
將文件系統與目錄樹結合的動作我們稱為掛載,掛載點一定是目錄,該目錄為進入該文件系統的入口。
(3)磁盤與目錄容量
df:列出文件系統的整體磁盤使用量;
du:評估文件系統的磁盤使用量(常用在推估目錄所占容量)
Hard Link :實體鏈接
Symbolic Link (符號鏈接,亦即是捷徑)
lsblk:列出系統上的所有磁盤列表
blkid 列出設備的 UUID 等參數,UUID 是全域單一識別碼
parted 列出磁盤的分區表類型與分區信息
MBR 分區表使用 fdisk 分區, GPT 分區表使用 gdisk 分區
常見的壓縮指令就是 gzip(常用,時間快), bzip2,xz(壓縮比高)
xfsdump:備份,完整備份與累積備份
(4)Vim
編輯模式 (insert mode):按下“i, I, o, O, a, A, r, R”等任何一個字母之后才會進入編輯模式,在畫面的左下方會出現“ INSERT 或 REPLACE ”的字樣?!癊sc”即可退出編輯模式。
命令行命令模式 (command-line mode):輸入“ : / ? ”三個中的任何一個按鈕,就可以將光標移動到最下面那一列。
命令行 :wq 保存離開,:wq!強制保存離開
$或G:移動到最后一行,列
/word :搜索word
u 復原前一個動作。(常用)
[Ctrl]+r 重做上一個動作。(常用)
DOS 與 Linux 的斷行字符可能需要轉換
4.bash
[Tab] 接在一串指令的第一個字的后面,則為命令補全; [Tab] 接在一串指令的第二個字以后時,則為“文件補齊”
命令別名設置功能: (alias)
取用變量:echo $PATH
echo ${myname} 變量尚未被設置!是空的!
myname=VBird 變量賦值
變量內容若有空白字符可使用雙引號““”或單引號“'”將變量內容結合起來
可用跳脫字符“ \ ”將特殊符號(如 [Enter], ,空白字符,′等)變成一般字符若該變量為擴增變量內容時,則可用", \, 空白字符, '等)變成一般字符 若該變量為擴增變量內容時,則可用 ",空白字符,′等)變成一般字符若該變量為擴增變量內容時,則可用"變量名稱” 或 變量累加內容,如下所示:“PATH="{變量} 累加內容,如下所示: “PATH="變量累加內容,如下所示:“PATH="PATH":/home/bin”或“PATH=${PATH}:/home/bin”
取消變量的方法為使用 unset :“unset 變量名稱”例如取消 myname 的設置: “unset myname”
若該變量需要在其他子程序執行,則需要以 export 來使變量變成環境變量: “export PATH”
單引號與雙引號的最大不
同在于雙引號仍然可以保有變量的內容,但單引號內僅能是一般字符 ,而不會有特殊符號。
env 觀察環境變量與常見環境變量說明
用 set 觀察所有變量 (含環境變量與自訂變量)
export+變量: 自訂變量轉成環境變量.僅下達 export 而沒有接變量時,那么此時將會把所有的“環境變量”秀出來
read 變量名 :要讀取來自鍵盤輸入的變量
declare [-aixr] variable 設定變量數據類型
選項與參數:
-a :將后面名為 variable 的變量定義成為陣列 (array) 類型
-i :將后面名為 variable 的變量定義成為整數數字 (integer) 類型:declare -i sum=100+300+50
-x :用法與 export 一樣,就是將后面的 variable 變成環境變量;
-r :將變量設置成為 readonly 類型,該變量不可被更改內容,也不能 unset
陣列 (array) 變量類型:var[index]=content
echo ${var[1]} :echo時要用{}
ulimit [-SHacdfltu] [配額]:設置限制配額
history [n]
history [-c]
history [-raw] histfiles
選項與參數:
n:數字,意思是“要列出最近的 n 筆命令列表”的意思!
-c :將目前的 shell 中的所有 history 內容全部消除
-a :將目前新增的 history 指令新增入 histfiles 中,若沒有加 histfiles ,則默認寫入 ~/.bash_history
-r :將 histfiles 的內容讀到目前這個 shell 的 history 記憶中;
-w :將目前的 history 記憶內容寫入 histfiles 中!
^ 表示 [Ctrl]
Ctrl + C 終止目前的命令
Ctrl + D 輸入結束 (EOF),例如郵件結束的時候;
Ctrl + M 就是 Enter 啦!
Ctrl + S 暫停屏幕的輸出
Ctrl + Q 恢復屏幕的輸出
Ctrl + U 在提示字符下,將整列命令刪除
Ctrl + Z “暫?!蹦壳暗拿?/p>
- 代表“ 0 個到無窮多個”任意字符
? 代表“一定有一個”任意字符
[ ] 同樣代表“一定有一個在括號內”的字符(非任意字符)。例如 [abcd] 代表“一定有一個字符, 可能是 a, b, c, d 四個任何一個
[ -] 若有減號在中括號內時,代表“在編碼順序內的所有字符”。例如 [0-9] 代表 0 到 9 之間的所有數字,因為數字的語系編碼是連續的!
[^] 若中括號內的第一個字符為指數符號 (^) ,那表示“反向選擇”,例如 [^abc] 代表一定有一個字符,只要是非 a, b, c 的其他字符就接受的意思。
cmd1&&cmd2 1. 若 cmd1 執行完畢且正確執行(?=0),則開始執行cmd2。2.若cmd1執行完畢且為錯誤(?=0),則開始執行 cmd2。 2. 若 cmd1執行完畢且為錯誤 (?=0),則開始執行cmd2。2.若cmd1執行完畢且為錯誤(?≠0),則 cmd2 不執行。
cmd1 ||cmd2 1. 若 cmd1 執行完畢且正確執行(?=0),則cmd2不執行。2.若cmd1執行完畢且為錯誤(?=0),則 cmd2 不執行。 2. 若 cmd1 執行完畢且為錯誤 (?=0),則cmd2不執行。2.若cmd1執行完畢且為錯誤(?≠0),則開始執行cmd2。
(1)正則表達式
[:alnum:] 代表英文大小寫字符及數字,亦即 0-9, A-Z, a-z
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:blank:] 代表空白鍵與 [Tab] 按鍵兩者
[:cntrl:] 代表鍵盤上面的控制按鍵,亦即包括 CR, LF, Tab, Del… 等等
[:digit:] 代表數字而已,亦即 0-9
grep [-A] [-B] [–color=auto] ‘搜尋字串’ filename
選項與參數:
-A :后面可加數字,為 after 的意思,除了列出該行外,后續的 n 行也列出來;
-B :后面可加數字,為 befer 的意思,除了列出該行外,前面的 n 行也列出來;
–color=auto 可將正確的那個擷取數據列出顏色
RE 字符
利用中括號 [] 來搜尋集合字符:([] 里面不論有幾個字符,他都僅代表某“一個”字符)
grep -n ‘t[ae]st’ regular_express.txt
8:I can’t finish the test. 9:Oh! The soup taste good.
讓 the 只在行首列出呢? 這個時候就得要使用定位字符了!我們可以這樣做:[dmtsai@study ~]$ grep -n ‘^the’ regular_express.txt 12:the symbol ‘*’ is represented as start.
word$ 意義:待搜尋的字串(word)在行尾!范例:將行尾為 ! 的那一行打印出來,并列出行號 > grep -n ‘!$’ regular_express.txt
^ 符號,在字符集合符號(括號[])之內與之外是不同的! 在 [] 內代表“反向選擇”,在 [] 之外則代表定位在行首的意義
. (小數點):代表“一定有一個任意字符”的意思;ex: ‘g…d’
*(星星號):代表“重復前一個字符, 0 到無窮多次”的意思,為組合形態
限定連續 RE 字符范圍 {}:grep -n ‘go{2,5}g’ regular_express.txt
sed:
[dmtsai@study ~]$ sed [-nefr] [動作]
選項與參數:
-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的數據一般都會被列出到屏幕上。
但如果加上 -n 參數后,則只有經過 sed 特殊處理的那一行(或者動作)才會被列出來。
-e :直接在命令行界面上進行 sed 的動作編輯;
-f :直接將 sed 的動作寫在一個文件內, -f filename 則可以執行 filename 內的 sed 動作;
-r :sed 的動作支持的是延伸型正則表達式的語法。(默認是基礎正則表達式語法)
-i :直接修改讀取的文件內容,而不是由屏幕輸出。
動作說明: [n1[,n2]]function
n1, n2 :不見得會存在,一般代表“選擇進行動作的行數”,舉例來說,如果我的動作
是需要在 10 到 20 行之間進行的,則“ 10,20[動作行為] ”
function 有下面這些咚咚:
a:新增, a 的后面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c:取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
d:刪除,因為是刪除啊,所以 d 后面通常不接任何咚咚;ex:sed ‘2,5d’
i:插入, i 的后面可以接字串,而這些字串會在新的一行出現(目前的上一行);
p:打印,亦即將某個選擇的數據印出。通常 p 會與參數 sed -n 一起運行~
s:取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正則表達式!
例如 1,20s/old/new/g 就是啦!
(2)shell scripts:
1.以 bash 程序來執行:通過“ bash shell.sh ”或“ sh shell.sh ”來執行
2.用 source 來執行腳本:在父程序中執行:source showname.sh
程序第一行 #!/bin/bash
可以利用“ ((計算式))”來進行數值運算:var=((計算式)) ”來進行數值運算:var=((計算式))”來進行數值運算:var=((運算內容));echo $(( 13 % 3 ))
計算含有小數點的數據時,可以通過 bc 這個指令:echo “123.123*55.9”; bc
test 指令的測試功能
利用判斷符號 [ ] ,中括號的兩端 需要有空白字符來分隔:[□"HOME"□==□"HOME"□==□"HOME"□==□"MAIL"□]
function fname() { 程序段 } 要放在最前面
循環:
while [ condition ] <==中括號內的狀態就是判斷式
do <==do 是循環的開始!
程序段落 done <==done 是循環的結束
5.Linux 帳號管理
每個登陸的使用者至少都會取得兩個 ID ,一個是使用者 ID (User ID ,簡稱 UID)、一個是群組 ID (Group ID ,簡稱 GID)
一般使用者轉變身份成為 root 主:
1.以“ su - ”直接將身份變成 root 即可,但是這個指令卻需要 root 的密碼,也就是說,如果 你要以 su 變成 root 的話,你的一般使用者就必須要有 root 的密碼才行;
段落 done <==done 是循環的結束
5.Linux 帳號管理
每個登陸的使用者至少都會取得兩個 ID ,一個是使用者 ID (User ID ,簡稱 UID)、一個是群組 ID (Group ID ,簡稱 GID)
一般使用者轉變身份成為 root 主:
1.以“ su - ”直接將身份變成 root 即可,但是這個指令卻需要 root 的密碼,也就是說,如果 你要以 su 變成 root 的話,你的一般使用者就必須要有 root 的密碼才行;
總結
以上是生活随笔為你收集整理的鸟哥Linux 私房菜的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios uiswitch 开关_IOS开
- 下一篇: linux上卓懿应用商城王者荣耀键盘映射