Linux基礎課筆記
1. 常用文件管理命令
Linux系統文件不分盤存儲
基本文件概念
-
路徑:絕對路徑開頭是 /,相對路徑則不是
-
. 當前目錄, .. 上層目錄
-
~/ : 家目錄, / :根目錄
常用命令及操作
-
Ctrl + C:結束命令或進程(命令清空並換行輸入下一個命令,進程終止)
-
Ctrl + U:清空本行命令並重新輸入當前行命令
-
Tab:補全命令,文件,只有一個選項直接補全,單擊直接補全,有多個選項,雙擊列出所有選項
-
↑:彈出上一條命令
-
ls:查看當前文件夾所有內容
- -l,
d表示是文件夾,4096是大小(字節)
- -hl,人性化輸出
此處用k作單位輸出(命令帶h都有人性化輸出的意思)
- -a,以.開頭的文件都是隱藏文件,此命令輸出當前目錄所有的文件(包含隱藏文件)
- -A,不顯示當前目錄及上層目錄,即顯示文件中沒有 "." 和 ". ."
- -l,
-
pwd:查看當前在哪個目錄下
-
cd(change directory):后跟文件路徑,進入目標文件夾,不加任何參數則返回家目錄,后跟 -,返回上一個待過的目錄
-
cp:
- cp a/tmp.txt b(tmp2.txt),將a中tmp.txt文件復制到b中,(重命名為tmp2.txt)
- cp a b -r,將整個文件夾a,復制到文件夾b中
- cp a c -r,直接復制文件夾a重命名為c
-
mkdir:輸入:mkdir + 文件路徑,創建文件夾
- 連續創建文件夾,mkdir a/b/c -p(文件存在則不報錯,不存在就創建)
- mkdir --help or -h,顯示命令行幫助
-
rm:輸入 rm file1 file2,刪除多個文件, rm dir1 -r,刪除dir1文件夾,rm -f 刪除所有文件(包括受保護的)
-
touch:創建一個文件
-
mv:輸入 mv XXX YYY,將XXX文件移動到YYY,XXX和YYY相同或更改文件名則產生重命名的效果
-
cat:查看文件里的內容
作業完成情況

2.tmux和vim
tmux
作用:分屏、進程不會因為斷開鏈接而中斷(在雲端執行)
結構tmux->session->pane:一個tmux可以開多個session,一個session可以開多個window,一個window可以開多個pane,一個pane開一個shell
操作
-
新建一個session,其中包含一個window,window包含一個pane,一個pane打開了一個shell對話框
-
按Ctrl + a后松開再按%,將當前pane左右平分成兩個pane(原版為Ctrl + b)
-
按Ctrl + a后松開再按",將當前pane上下平分成兩個pane
-
Ctrl + d,關閉當前pane;如果當前window的所有pane都關閉則關閉window;如果session所有window都關閉,自動關閉session
-
鼠標點擊可以選中目標pane
-
按Ctrl + a后松開再按方向鍵,可以切換到相鄰的pane
-
鼠標拖動pane之間的分割線,可以調整分割線位置
-
按住Ctrl + a同時按方向鍵,也能調整分割線的位置
-
按Ctrl + a后松開再按z,可以全屏,再按一次取消全屏
-
按Ctrl + a后松開再按d,退出session
-
tmux a:打開剛才掛起的session
-
先按Ctrl + a松開再按s
- 方向鍵上下,選擇session
- 方向鍵左,合上選項
- 方向鍵右,展開選項
-
先按Ctrl + a松開再按c,在當前session中創建一個新的window
-
先按Ctrl + a松開再按w,選擇其他window,方法和第12的相同
-
先按Ctrl + a松開再按PageUp,翻閱當前pane內的內容
-
按住Shift進行選中,Ctrl + insert復制,Shift + insert粘貼
vim
功能
1. 命令行模式下的文本編輯器
2. 使用文件擴展名自動判斷編程語言。支持代碼縮進、代碼高亮等功能
3. 使用方式:vim filename
1. 有該文件,則打開
2. 無該文件,則新建並打開這個文件
模式
一般命令模式
默認模式,命令輸入方式:按不同字符,即可進行不同操作。可以復制、粘貼、刪除文本等
編輯模式
一般命令模式里按 i,進入編輯模式
按下ESC退出編輯模式,進入一般命令模式
命令行模式
一般命令模式下按: / ?三個字母中的任意一個,會進入命令模式。命令行在最下面。
可以查找、替換、保存、退出、配置編輯器等。
操作
- i:進入編輯模式
- ESC:進入一般命令模式
- h 或 左箭頭鍵:光標向左移動一個字符
- j 或 下箭頭鍵:光標向下移動一個字符
- k 或 上箭頭鍵:光標向上移動一個字符
- l 或 右箭頭鍵:光標向右移動一個字符
- n<Space>:n表示數字,按下數字再按功空格,光標向右移動這一行的n個字符
- 0 或 Home:光標移動到本行開頭
- $ 或 End:光標移動到本行末尾
- G:光標移動到最后一行
- :n 或 nG:其中n為數字,光標移動到第n行
- gg:光標移動到第一行 ,相當於1G
- n<Enter>:n為數字,光標向下移動n行
- /word:向光標之下尋找第一個值為word的字符串
- ?word:向光標之上尋找第一個值為word的字符串
- n:重復前一個查找操作
- N:反向重復前一個查找操作
- :n1,n2s/word1/word2/g:其中n1和n2位數字,在n1行與n2行之間尋找word1這個字符串,並將該字符串替換為word2
- :1,$s/word1/word2/g:將全文word1替換為word2
- 1,$s/word1/word2/gc:與前者相似,但在替換前需要用戶確認
- v:選中文本
- d:刪除選中的文本
- dd:刪除當前行(剪切)
- y:復制選中的文本
- yy:復制當前行
- p:將復制的數據在光標的下一個位置粘貼
- u:撤銷
- Ctrl + r:取消撤銷
- Shift + >:將選中的文本整體向右移動
- Shift + <:將選中的文本整體向左移動
- :w:保存
- :w!:強制保存
- :q:退出
- :q!:強制退出
- :wq:保存並退出
- :set paste:設置成粘貼模式,取消代碼自動縮進
- :set nopaste:取消粘貼模式,開啟代碼自動縮進
- :set nu:顯示行號
- :set nonu:隱藏行號
- gg=G:將全文格式化
- :noh:關閉查找關鍵詞高亮
- Ctrl + q:當vim卡死,可以取消當前執行的命令
異常處理
每次用vim編輯文件時,自動創建一個.finename.swp的臨時文件
如果打開某個文件,該文件swp文件已經存在,會報錯,此時有兩種解決方法:
1. 找到正在打開該文件的程序,並退出
2. 直接刪掉該swp文件即可
Shell
注釋
# XXX 單行注釋
:<<EOF(或其他字符)
多行注釋1
多行注釋2
多行注釋3
EOF
變量
定義變量
變量首先被定義成字符串,再使用時會進行自動轉換
name1='roshin' # 可以加單引號
name2="roshin" # 可以加雙引號
name3=roshin # 可以不加引號
使用變量
$可以類比為取值符號
{}幫助識別變量的邊界,否則第三個echo會輸出nameyyds這個變量的值
name=roshin
echo $name # out:roshin
echo ${name} # out:roshin
echo ${name}yyds # out:roshinyyds
只讀變量
關鍵字:readonly declare
name=roshin
readonly name
declare -r name
name=abc # 有報錯,因為常量只讀無法修改
刪除變量
unset 刪除變量
name=roshin
unset roshin
echo $name # out:(無輸出)
變量類型
1.自定義變量(局部變量)子進程不能訪問的變量
2.環境變量(全局變量) 子進程可以訪問的變量
# 自定義變量換為環境變量
name=roshin
export name # 第一種方法
declare -x name # 第二種方法
# 環境變量變為自定義變量
declare +x name
字符串
字符串用不用單雙引號都可以
單引號與雙引號的區別:
單引號中的內容會原樣輸出、不會執行、不會去變量
雙引號中的內容可以執行,可以取變量
獲取字符串長度
name=roshin
echo ${#name} # out:6
提取子字符串
name=roshin
echo ${name:0:5} # out:roshi
默認變量
文件參數變量
執行shell腳本時,可以向腳本傳遞參數,$1是第一個參數,$2是第二個參數,$0是文件名(含路徑)
echo $0
echo $1
echo $2
其他參數相關變量
部分參數
