shell 用於接受用戶命令傳遞給 os 執行
基本導航與查看#
pwd#
pwd,展示當前目錄絕對路徑
ls#
list,列出當前目錄下的文件
參數:
-l
列出每個文件的屬性,一般都會有 ll
的縮寫
drwxr-xr-x@ 2 fling staff 64 5 24 15:42 test
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | | | | |
| | | | | | | | | | | | └─ 文件名/目錄名 (Name)
| | | | | | | | | | | └─────── 最後修改時間 (Modification Time)
| | | | | | | | | | └────────── 最後修改日期 (月份中的某一天) (Day of Month)
| | | | | | | | | └──────────── 最後修改月份 (Month)
| | | | | | | | └──────────────── 文件大小 (字節) (Size)
| | | | | | | └─────────────────────── 所屬組 (Group)
| | | | | | └───────────────────────────── 文件所有者 (Owner)
| | | | | └───────────────────────────────── 硬連接數量 (Number of Hard Links)
| | | | └─────────────────────────────────── 擴展屬性標誌 (Extended Attributes Flag - @) (macOS specific)
| | | └───────────────────────────────────── 其他用戶權限 (Others' Permissions)
| | └───────────────────────────────────────── 組用戶權限 (Group's Permissions)
| └──────────────────────────────────────────── 文件所有者權限 (Owner's Permissions)
└────────────────────────────────────────────── 文件類型 (File Type)
屬性詳解:
- 文件類型:
-
: 普通文件 (例如1.txt
)d
: 目錄 (例如test
)l
: 符號鏈接c
: 字符設備文件b
: 塊設備文件s
: 套接字文件p
: 命名管道
- 文件權限:
- 分為三組,每組三字符,代表了文件所有者、所屬組用戶、其他用戶的權限
- 每組字符為
rwx
代表了讀、寫、執行的權限,無相應權限就用-
代替,為了簡潔表示,用為r\w\x
分配數字4\2\1
- 硬連接數量:
- 對於文件,表示有多少個文件名指向此文件的
inode
- 對於目錄,通常是 2 + 子目錄數量,每個目錄都有
.
指向自身..
指向父目錄
- 對於文件,表示有多少個文件名指向此文件的
-a
列出全部文件,包括隱藏文件
. .. .env 1.txt test
cd#
c,進入一個目錄
前文說過 ..
代表父目錄
cd -
代表進入上一次所在位置
tree#
tree []
展示目錄 []
下的結構
文件與目錄操作#
touch#
touch,觸摸,更新時間,不過也可以創建文件
mkdir#
mkdir,建立目錄
cat#
cat,輸出某個文件的內容
less#
less,查看某個文件,可以上下翻,按 q
返回
只讀取並顯示屏幕所需部分
g
開頭 G
結尾
%
或 p
百分比跳轉
/pattern
向前搜索、?pattern
向後搜索,n
下個匹配、N
上個匹配
F
持續監視文件末尾的新增內容,類似 tail -f
more#
more,查看某個文件,無法上翻,按 q
返回
會一次性加載整個文件到內存再顯示
head#
head,輸出某個文件的開頭
head --lines=n file
輸出 file
的前 n
行
tail#
tail,輸出某個文件的結尾
tail --lines=n file
輸出 file 的後 n 行
tail -f
持續查看後續內容
cp#
cp 源 目的
複製文件或目錄
mv#
mv 源 目的
移動,也可以用於重命名
rm#
rm,刪除
rm -r
遞歸刪除,用於目錄
ln#
ln,連接
ln -s 源 目的
軟連接,並不存儲文件,僅僅是一個快捷文件
ln 源 目的
硬連接,指向源文件的指針,共享相同的 inode,可認為引用,只能指向文件
權限與查找#
chmod#
修改權限
u\g\o
代表了三個組權限
chmod u+x file
代表給所有者執行權限
也可以用數字修改,如 chmod 744 file
file#
file,什麼文件類型,如 1.txt: ASCII text
where/which/whereis#
where,找到文件在哪
輸出、管道與編輯#
echo#
echo,輸出到命令行,注意特殊字符出現用 " "
包裹
>
標準輸出重定向到文件,如 echo "1" > 1.txt
>>
追加到文件
<
標準輸入重定向自文件
pipe#
command1 | command2 | command3
一個命令的標準輸出作為另一個命令的標準輸入
ls -l | grep "*.txt"
cat server.log | grep "ERROR" | less
nano#
Crtl+X
退出、Crtl+O
保存
vim#
命令模式下,:wq
保存退出、:q!
強制推出,[n]yy
複製 n 行 [n]p
粘貼 n 次到光標下一行 dd
剪除
命令模式輸入 i\a\o\I\A\O
進入插入模式,插入模式 esc
進入命令模式
插入模式中 ^
可以跳轉到行首 $
跳轉到行尾
命令模式輸入 :
進入尾行模式,尾行模式 esc\enter
進入命令模式
變量與通配符#
shell#
定義變量 variable=value
就定義好了,可以用 echo ${variable}
查看,大括號是用於防止歧義的
前向剪除,如 ff=week01
,echo ${ff#week}
輸出 01
去尾 %
?
代表一個字符的佔位,*
指任意字符佔位
for i in $(seq 1 10)
1 到 10 序列
for ((i=0;i<10;i++))
c 風格循環
批量改名
for> do
for> mv ${d} chapter${d#week}
for> done
此文由 Mix Space 同步更新至 xLog
原始鏈接為 https://blog.chanler.dev/posts/tech-learn/linux-command