認識 BASH 這個shell
# 指令 選項 參數(shù)(1) 參數(shù)(2)
command [-options] parameter1 parameter2 ...
# [--options] 使用選項的完整全名拴袭,例如 --help;
- 通過
man
查看 command 的使用說明書(manual pages)蛙卤,通常從 /usr/share/man 讀取
man command
# 搜尋特定指令/文件的man page說明文件
man -f command # 相當于 ==>
whatis command
# 按關(guān)鍵字搜索man page說明文件
man -k command # 相當于 ==>
apropos command
環(huán)境變量 $PATH 默認是放置在
/usr/share/info/
set
可以列出目前 bash 環(huán)境下的所有變量按『tab鍵』:命令與文件補全功能
使用
history
查看執(zhí)行過的歷史指令询一,指令記錄存放在~/.bash_history
崎溃,按『上下鍵』可以找到前/后一個輸入的指令命令別名設定:
alias
,unalias
夭咬。例如alias rm='rm -i'
-
路徑與指令搜尋順序:
- 1 以相對/絕對路徑執(zhí)行指令;
- 2 由 alias 找到該指令來執(zhí)行饥追;
- 3 由 bash 內(nèi)建的 (builtin) 指令來執(zhí)行;
- 4 透過 $PATH 這個變量的順序搜尋到的第一個指令來執(zhí)行残邀。
-
login shell 會讀取兩個配置文件:
- 1 /etc/profile(系統(tǒng)設定),
- 2 ~/.bash_profile 或 ~/.bash_login 或 ~/.profile(個人設定柑蛇,其中一個)
然后會通過這2個文件腳本載入其他文件配置。source
(或小數(shù)點) 將配置文件的內(nèi)容讀進來目前的 shell 環(huán)境中(更改配置文件后不需要注銷立即生效)
-
數(shù)據(jù)流重導向:
- 1 標準輸入 (stdin):代碼為0驱闷,使用<或<< 耻台;
- 2 標準輸出 (stdout):代碼為 1 ,使用 > 或 >> 空另;
- 3 標準錯誤輸出(stderr):代碼為 2 盆耽,使用 2> 或 2>> ;
雙向重導向tee
會同時將數(shù)據(jù)流分送到文件去與屏幕
# 將 stdout 與 stderr 分別存到不同的文件去
stdout > log.text 2> error.text
# 將 stdout 與 stderr 都寫入同一個文件
stdout > log.text 2>&1
# 要注意! tee 后接的文件會被覆蓋扼菠,若加上 -a (append) 這個選項則能將訊息累加
ls -l / | tee -a ~/homefile | more
- 管線命令
|
僅會處理 standard output摄杂,在每個管線后面接的第一個數(shù)據(jù)必定是『指令』,而且這個指令必須要能夠接受 standard input 的數(shù)據(jù)循榆。常用管線處理命令grep
析恢、cut
、sort
秧饮、wc
映挂、uniq
、split
盗尸、xargs
Linux 文件權(quán)限屬性
Linux下一切皆文件柑船,我們一般會用擴展名來表示不同種類的文件。
下達 ls -al
命令看看文件屬性(-a: 包括目錄和以 . 開頭的隱藏文件泼各;-l: 顯示詳細列表)
[root@serverxxx some-directory]# ls -la
總用量 8
drwxrwxr-x 7 user1 user1 132 12月 15 12:33 .
drwx------ 3 user1 user1 127 12月 15 14:51 ..
drwxrwxr-x 2 user1 user1 6 12月 15 12:21 .git
-rw-rw-r-- 1 user1 user1 66 12月 15 12:21 .gitignore
-rw-r--r-- 1 user1 user1 73 12月 15 12:21 README.md
-rw-r--r-- 1 user1 user1 1964 12月 15 12:33 package.json
drwxr-xr-x 8 user1 user1 256 12月 15 12:21 src
-rw-r--r-- 1 user1 user1 377 12月 15 12:21 tsconfig.json
每一行都有 7 列鞍时,先認識一下上面7個字段個別的意思:
drwxr-xr-x | 8 | user1 | user1 | 256 | 12月 15 12:21 | src |
---|---|---|---|---|---|---|
文件類型與權(quán)限 | 鏈接數(shù) | 所有者 | 群組 | 文件大小 | 最后修改時間 | 文件名 |
第一欄代表這個文件類型與權(quán)限,這一欄共 10 個字符:
-
第 1 個表示文件類型
- d (directory) 表示目錄
- - 表示文件
- l (link file) 表示連接文件
- b (block) 表示區(qū)塊設備文件(可供儲存的接口設備)
- c (character) 示為字符設備文件(串行端口的接口設備)例如鍵盤扣蜻、鼠標
-
接下來的字符中逆巍,以3個為一組(共三組),且均為
rwx
的三個參數(shù)的組合弱贼。其中蒸苇,r 代表可讀(read)、w 代表可寫(write)吮旅、x 代表可執(zhí)行(execute)溪烤。 要注意的是味咳,這三個權(quán)限的位置不會改變,如果沒有權(quán)限檬嘀,就會用 - 代替占位槽驶。- 第一組 rwx 為文件擁有者的權(quán)限
- 第二組 r-x 為加入此群組的賬號的權(quán)限
- 第三組 r-x 為其他人的權(quán)限
Linux 是個多人多任務的系統(tǒng),Linux 一般將文件可存取的身份分為三個類別鸳兽,分別是 owner/group/others掂铐,且三種身份各有 read/write/execute 等權(quán)限
文件所有者(Owner)
當創(chuàng)建一個用戶的時候,Linux 會為該用戶創(chuàng)建一個主目錄揍异,路徑為 /home/[username]全陨,我們可以使用 cd ~
,快捷進入當前用戶 home 目錄衷掷。如果你想放一個私密文件辱姨,就可以放在自己的主目錄里,然后設置只能自己查看戚嗅。
群組(Group)
每個用戶都有一個用戶組雨涛,方便多人操作的時候,為一群人分配權(quán)限懦胞。當創(chuàng)建用戶的時候替久,會自動創(chuàng)建一個與它同名的用戶組。
如果一個用戶同時屬于多個組躏尉,用戶需要在用戶組之間切換蚯根,才能具有其他用戶組的權(quán)限。
其他人(Others)
既不是 Owner 又不屬于 Group醇份,就是其他人稼锅。
超級用戶(Root)
Root 用戶是萬能的天神,該用戶可以訪問所有文件
chgrp:改變文件所屬群組
chgrp(change group) 群組名需要存在 /etc/group
# -R:遞歸更改文件屬組
chgrp [-R] 群組名 文件或目錄
chown:改變文件擁有者
chown(change owner) 用戶賬號名需要存在 /etc/passwd
# -R:遞歸更改文件屬組
chown [-R] 賬號名稱 文件或目錄
chown [-R] 賬號名稱:組名 文件或目錄
chmod:改變文件的權(quán)限
Linux 文件的基本權(quán)限就有九個僚纷,分別是 owner/group/others 三種身份各有自己的 read/write/execute 權(quán)限矩距,我們也可以用數(shù)字表示權(quán)限,數(shù)字與字母的對應關(guān)系為:
- r : 4
- w : 2
- x : 1
每組 rwx 權(quán)限用數(shù)字累加表示怖竭,例如 rwxrwxr-x 對應的數(shù)字則是:
owner = rwx = 4+2+1 = 7
group = r-x = 4+0+1 = 5
others= - -x = 0+0+1 = 1
# 數(shù)字類型改變文件權(quán)限
# xyz 為 rwx 屬性數(shù)值的相加值锥债,例如上面 chmod 751 filename
chmod [-R] xyz 文件或目錄
還有一種就是用字符改變權(quán)限的方法,我們用 u(user痊臭,也就是owner), g(group), o(others) 來代表三種身份的權(quán)限哮肚,a(all) 代表全部身份
? chmod ? | ? u、g广匙、o允趟、a ? | ? +(加入)、-(除去)鸦致、 =(設定) ? | ?? r潮剪、w涣楷、x ?? | ? 文件或目錄 ? |
---|
# 字符類型改變文件權(quán)限
# 設置 u(owner)具有rwx權(quán)限,go(group&others)具有rx權(quán)限
chmod u=rwx,go=rx text.txt
# u(owner) 加上 x 權(quán)限抗碰,g(group)和 o(others)除去 x 權(quán)限狮斗。
chmod u+x,g-x,o-x index.html
Linux 常用命令
1. ssh 遠程連接
ssh [options] [-p PORT] [username@]hostname
# 例
ssh -p 3000 root@100.100.100.100
2. pwd 顯示當前目錄
[root@my-azure]$ pwd
/home/root/
3. cd 切換工作目錄
cd /home/workspace # 進入/home/workspace
cd ~ # 進入home目錄
cd - # 回到上次所在目錄,一般來回切換
4. mkdir 創(chuàng)建目錄
mkdir folder-name # 創(chuàng)建目錄
mkdir -p folder1/folder2/folder3 # 遞歸創(chuàng)建目錄
5. touch 創(chuàng)建文件
touch new-file # 創(chuàng)建文件
6. echo 打印輸出
echo "hello world"
# 將打印內(nèi)容通過 > 輸出到 a.txt 文件弧蝇,追加使用 >>
echo "some content" > a.txt
7. cat 查閱一個文件的內(nèi)容
cat ~/.ssh/id_rsa.pub
# 如果文件內(nèi)容太多碳褒,可以使用可翻頁查看命令 more|less
less /etc/man_db.conf
# 如果只想查看部分內(nèi)容,可以使用擷取命令 head|tail
tail -n 10 -f /tomcat/log/messages # -n 10 顯示10行看疗,-f 監(jiān)聽文件修改實時顯示
8. cp 復制文件或目錄
cp source_file_name target_file_name
cp -r app /home/www/app # -r 復制目錄
9. mv 移動并重命名
mv workspace/project/index.html /home/www/app # 移動
mv index.html home.html # 更改文件名
10. rm 刪除一個文件或者目錄
rm package.lock
mv -rf dist # 直接刪除整個目錄
11. tar 文件的壓縮打包
下面是常用的壓縮命令沙峻,tar 是打包命令
壓縮命令 | 選項與參數(shù) | 打包文件拓展名 | 在 tar 中使用的參數(shù) |
---|---|---|---|
gzip | c d t v # | *.gz | -z |
bzip2 | c d k z v # | *.bz2 | -j |
xz | c d t k l # | *.gz | -J |
我們以使用度最廣的壓縮指令gzip 為例
# 壓縮
tar -zcvf xxx.tar.gz 要被壓縮的文件或目錄
# 解壓
tar -zxvf xxx.tar.gz
12. which 查看指令對應的文件位置
which node # /root/.nvm/versions/node/v14.17.6/bin/node
# 如果需要查詢系統(tǒng)文件(/bin/sbin、/usr/share/man)可以使用 whereis
whereis nginx