命令:
在虛擬中斷輸入命令,shell會解析輸入的命令,搜索環(huán)境變量:路徑,找到了輸入的命令,運行這個程序
History:歷史輸入命令
快捷鍵:
刪除光標(biāo)前所有的字符:ctrl+u
刪除光標(biāo)后所有的字符:ctrl+k
移動到最頭部:ctrl+a
移動到最尾部:ctrl+e
Tab:按一次:補全命令和目錄名
? ? ? ? ? ? ? 按兩次:列出此單詞開頭的命令和目錄
目錄結(jié)構(gòu):linux目錄結(jié)構(gòu)為樹
/ :根目錄
. :當(dāng)前目錄
.. :? 當(dāng)前目錄的上級目錄
Sudo:管理員權(quán)限
Tree: 查看目錄結(jié)構(gòu),需要安裝 sudo apt-get install tree :使用apt-get 安裝 tree
Ls:查看文件或目錄
-a:顯示所有文件
隱藏文件:文件或目錄名前邊有一個點
-l:詳細(xì)信息、-lh 帶單位的詳細(xì)信息
例如:-rwxrw-r-- 1 zhaofei zhaofei 3231145 11月 23 23:08 vimplus.tar.gz
第一個字符:文件的類型
7種:
普通文件:-
目錄:d
符號鏈接: l
管道: p
套接字:s :socket
字符設(shè)備: c
鍵盤、鼠標(biāo)
塊設(shè)備: b
U盤、硬盤
Rwx? :文件所有者權(quán)限
Rw-? :文件所屬組用戶
R--? :其他人
1:硬鏈接計數(shù)
Zhaofei: 文件所有者
Zhaofei:文件所屬組的名字
3231145 :文件大小
如果是目錄,大小為4k
11月 23 23:08 :日期
vimplus.tar.gz :文件名
Cd ~ :進入家目錄
Mkdir:創(chuàng)建目錄
Mkdir 目錄名
-p:創(chuàng)建多級目錄
Touch:創(chuàng)建文件
Touch 文件名:如果不存在,創(chuàng)建文件
如果存在,更新文件的時間
Rmdir: 只能刪除空目錄
Rm :刪除文件或目錄
Rm 目錄名 -ri
-r:用遞歸的方式處理
-i:刪除的時候提示
Rm 文件名 -i
Cp : 拷貝? cp a b? 把a的內(nèi)容拷貝到 b,如果b不存在,創(chuàng)建b 再拷貝
拷貝目錄要 -r 遞歸拷貝
Cp dir(存在)? dir1(存在) -r
將dir1目錄整個拷貝到dir目錄中,包括dir目錄
Cp dir(存在)? dir1(不存在) -r
創(chuàng)建 dir1
只將dir中的內(nèi)容拷貝到dir1中,不包括dir目錄
Mv: 改名或者移動文件
Mv file(存在)? file1(存在)
file會覆蓋file1,file會被刪除
改名:
Mv file(存在)? file1(不存在)? file為文件
Mv dir(存在)? dir1(不存在) dir為目錄
移動:
Mv file(文件)? dir(存在目錄)
Mv dir(目錄存在)? dir1(目錄存在)
查看文件內(nèi)容:
Cat
Cat filename : 將文件的內(nèi)容打印到終端
More
More filename : 另開辟一塊緩存打開文件內(nèi)容
Pwd:顯示當(dāng)前所在目錄
$:當(dāng)前用戶為普通用戶
#:當(dāng)前用戶為超級用戶
~:用戶的家目錄 <==> /home/zhaofei
根目錄下常見目錄:
/boot:開機啟動項
/bin: binary,二進制文件,可執(zhí)行程序,shell命令
/dev:device,設(shè)備,linux下一切皆文件,將硬盤、顯卡、顯示器抽象成文件
/lib:linux運行的時候需要加載的動態(tài)庫
/mnt:手動的掛在目錄
/media:外設(shè)的自動掛在目錄
/root:linux的超級用戶的家目錄
/usr:unix system resource 系統(tǒng)資源目錄:頭文件、游戲
/usr/local:用戶安裝的程序
/etc:存放配置文件
/etc/passwd:用戶
/etc/group:用戶組
/opt:安裝第三方應(yīng)用程序
/home:linux操作系統(tǒng)所有用戶的家目錄(宿主目錄)
/tmp:存放臨時文件,重啟電腦時會清空
軟硬鏈接:ln
軟鏈接 :快捷方式:大小為路徑的字符數(shù)量
Ln - s 文件名(使用絕對路徑)? 快捷方式的名字
硬鏈接:為文件起個別名,不占用空間。每個文件都有索引節(jié)點號 inode,inode指向 磁盤中的數(shù)據(jù)塊,為文件創(chuàng)建一個硬鏈接,兩個文件名指向的索引節(jié)點號是同 一個,指向同一塊內(nèi)存
1.創(chuàng)建一個新文件:硬鏈接計數(shù)為1
2.給文件創(chuàng)建了硬鏈接:硬鏈接計數(shù)為2
3.刪除一個硬鏈接:硬鏈接計數(shù)為1
4.再刪除硬鏈接計數(shù)對應(yīng)的文件:0
Filename? ==> 索引節(jié)點號 inode? ==>? 磁盤的數(shù)據(jù)塊
Ln 文件名? 硬鏈接的名字
用戶權(quán)限、用戶和用戶組:
1.chmod : 修改文件或目錄權(quán)限
文字設(shè)定法:
Chmod who [+|-|=] mode 文件名?
Who:
U :user,文件所有者
G :group ,文件所屬組
O: other ,其他人
A: all,以上所有人(默認(rèn)值)
+|-|= := 覆蓋
Mode:
R:讀
W:寫
X:執(zhí)行
-:沒有任何權(quán)限
練習(xí):chmod uo-rw file.c :去掉文件所有者和其他人讀寫權(quán)限 ? chmod u+r,g-x file.c? 文件所有者加讀,同組用戶減執(zhí)行
數(shù)字設(shè)定法:
Chomd [+|-|=] mode 文件名
Mode:八進制的數(shù) 0777: 0表示八進制
第一個數(shù)字表示文件所有者的權(quán)限
第二個數(shù)字表示用戶用戶的權(quán)限
第三個數(shù)字表示其他人的權(quán)限
R : 4
W: 2
X:? 1
-:? 0
例如:0750
0:八進制
7:rwx :文件所有者的權(quán)限
5:r-x :同組用戶的權(quán)限
0:? ---:其他人的權(quán)限不修改
2.chown : 修改文件所有者或所屬組
Chown? 新的所有者 文件名
Chown 新的所有者:新的所屬組 文件名
3.chgrp : 修改文件所屬組
文件查找和檢索:
1.根據(jù)文件屬性查找? find
文件名:
Find 查找的目錄名 -name? “查找的文件名”
Find . -name “*”? :查找當(dāng)前目錄下所有文件
文件類型:
Find 查找目錄 -type 文件類型
Find . -type f? 查找當(dāng)前目錄下的普通文件
普通文件:在這用f 表示
目錄:d
符號鏈接:l
文件大?。?/p>
Find 查找目錄 -size 10M? 查找等于10M的文件
+: 大于
-:小于
單位:
K:小寫
M:大寫
當(dāng)前目錄下查找大于10k小于100k
Find . -size +10k -size -100K
按日期:
創(chuàng)建日期 :-ctime -n/+n
-n: n天以內(nèi)
+n : n天以外
Find . -ctime -1? 查找當(dāng)前目錄1天以內(nèi)創(chuàng)建的
修改日期:-mtime -n/+n
訪問日期:-atime -n/+n
按深度:
-maxdepth n? 最深查找到第n層
-mindepth n? 搜索n層以上
高級查找:
例:查找指定目錄,并列出該目錄中文件詳細(xì)信息
Find ./ -type d -exec ls -l {} \;
Find ./ -type d -ok ls -l {} \;
ok比 exec安全些
Find ./ -type d | xargs ls-l(shell 命令)
| :管道
2.根據(jù)文件內(nèi)容查找 : grep
Grep -r(有子目錄時加 -r )? “查找的內(nèi)容” 搜索的路徑 -n(顯示查到的字符串在第幾行)
例如:搜索家目錄中帶 hello 字符串的文件
Grep -r “hello” ~
3.總結(jié):
(1)Find 搜索的路徑 參數(shù) 搜索的內(nèi)容
(2)Grep 搜索的內(nèi)容 參數(shù) 搜索的路徑
壓縮包管理:
1.linux 下常見壓縮格式
.gz? 是用gzip壓縮出來的
.bz2? 用bzip2壓縮出來的
2.常用壓縮命令
Tar : 打包
參數(shù):
C: 創(chuàng)建壓縮文件
X: 釋放壓縮文件
V: 打印提示信息(可不寫)
F: 指定壓縮包的名字
Z: 使用gzip壓縮文件? --xxx.tar.gz
J: 使用bzip2的方式壓縮文件 --xxx.tar.bz2
壓縮:
Tar 參數(shù) 壓縮包的名字 要壓縮的東西
例如:用 gz 的方式將文件 file1 目錄 dir1壓縮到一起
Tar zcvf test.tar.gz file1 dir1
解壓:
Tar zxvf test.tar.gz
Tar zxvf test.tar.gz -C 目錄? :解壓到指定目錄
Rar:
Rar 需要安裝
Sudo apt-get install rar
壓縮:
Rar a 壓縮包名(不需要指定后綴) 要壓縮的東西
壓縮目錄要加 -r 進行遞歸壓縮
解壓:
Rar x 壓縮包的名字 目錄
Zip/unzip:
壓縮:
Zip 參數(shù) 壓縮包名 要壓縮的東西
參數(shù):如果有目錄: -r
解壓:
Unzip 壓縮包的名字 -d 解壓目錄
3.總結(jié):
壓縮:
Tar/rar 參數(shù) 壓縮包名 原材料
解壓縮:
Tar/rar 參數(shù) 壓縮包名 參數(shù) 解壓路徑
rar解壓到指定目錄時不需要參數(shù)
軟件的安裝和卸載:
1.在線安裝:? ubuntu環(huán)境下
安裝:管理員權(quán)限 sudo apt-get(apt) install 安裝包的名字
卸載:sudo apt-get(apt) remove 軟件的名字
軟件列表的更新:sudo apt-get(apt) update? ? :更新了軟件列表下的軟件
清空緩存的安裝包 :sudo apt-get(apt) clean? ? ? :/var/cache/apt/archives
2.軟件包安裝(Ubuntu下? .deb格式)
安裝:sudo dpkg -i xxx.deb? -i:install
卸載:sudo dpkg -r 軟件的名字? -r : remove
Vim相關(guān):vim是vi的擴展
Gui:用戶圖形接口
1.vim需要自己安裝
Shell敲命令:vimtutor : vim向?qū)?/p>
2.vim是三種工作模式
1.命令模式
2.編輯模式
3.末行模式

3.vim命令模式下的相關(guān)操作
(1)保存退出:ZZ(不會創(chuàng)建新文件)
(2)代碼格式化:gg=G
(3)光標(biāo)的移動
HJKL:左下上右
光標(biāo)移動到行首:0 (零)
....................行尾:$
光標(biāo)移動到文件頭部:gg
....................文件尾部:G
跳轉(zhuǎn)到第200行:200G
4.刪除命令 : 刪除其實是剪貼
(1)刪除字符
光標(biāo)前的字符:X
光標(biāo)后的字符:x
(2)刪除光標(biāo)前字符串:d0
(3)刪除光標(biāo)后字符串:d$? <==> D
(4)刪除光標(biāo)所在行:dd
(5)從光標(biāo)所在行向下刪除3行:3dd
(6)刪除光標(biāo)所在行及下面所有內(nèi)容:dG? :按了d以后,將光標(biāo)移動到尾部
(7)刪除.......................上面.................: dgg? :按了d以后,將光標(biāo)移動到頭部
5.撤銷和反撤銷
撤銷:u
反撤銷:ctrl+r
6.復(fù)制和粘貼
復(fù)制:
1行:yy
n行:nyy
粘貼:
p(小寫):粘貼到光標(biāo)的下邊一行
P(大寫):..............上邊一行
7.可視模式:v
(1)移動光標(biāo):hjkl
(2)復(fù)制:y
(3)刪除:d
(4)粘貼:
①P(小寫):粘貼到光標(biāo)的后邊
②P(大寫):粘貼到光標(biāo)的前邊
8.替換操作:
(1)替換一個,光標(biāo)蓋住的字符: r
(2)替換多個,從光標(biāo)蓋住的這個往后替換:R
9.查找
(1)/xxx
(2)?xxx
1)用n查看下一個關(guān)鍵字的位置,N查看上一個關(guān)鍵字的位置
(3)將光標(biāo)移動到某個單詞下,按# 會將所選單詞都顯示出來,nN切換
10.查看man文檔
章節(jié)號+K(大寫)
11.命令模式切換到文本編輯模式
(1)a:從光標(biāo)的后面開始插入字符。A:從行尾插入
(2)i:從光標(biāo)的前面開始插入字符。I:從行首插入
(3)o(小寫):在光標(biāo)所在下面創(chuàng)建一行進行插入。O:在光標(biāo)所在上面創(chuàng)建一行進行插入
(4)s(小寫):刪除光標(biāo)蓋住的字符。S:刪除光標(biāo)所在行
(5)從編輯模式切換回命令模式:esc
12.Vim末行模式下相關(guān)操作:
(1)從命令模式 -> 末行模式
1)鍵盤輸入冒號(:)
(2)末行模式下的命令:
①輸入行號,實現(xiàn)行跳轉(zhuǎn)
②保存不退出:w
③退出:q
④退出不保存:q!
⑤保存退出:wq == x (會創(chuàng)建新文件)
(2)末行模式 -> 命令模式:兩次esc
(3)替換:
①替換光標(biāo)所在行的字符串:
1):s/old/new/gc? ? old:要被替換的字符串,new:要替換的字符串
a.參數(shù)g:替換當(dāng)前行所有的old ,如果不加,只替換第一個
b.參數(shù)c:替換時提示,是否確認(rèn)替換
②替換一個范圍
1):x,ys/old/new/gc? ? ? x,y是一個范圍(行數(shù))
③替換當(dāng)前文檔所有的
1):%s/old/new/gc
(4)分屏:水平分屏還是垂直分屏是根據(jù)分隔線
①當(dāng)前文件分屏
1)水平:sp
2)垂直:vsp
②兩個屏幕顯示不同的文件
1)水平:sp 文件名
2)垂直:? vsp 文件名
③屏幕的關(guān)閉
1)關(guān)閉所有:qall
2)保存關(guān)閉所有:wqall
3)保存所有:wall
④屏幕的切換
1)Ctrl+w+w
⑤打開的時候分屏
1)水平:vim -on 文件名 文件名
2)垂直:vim -On 文件名 文件名
a.n可以省略,表示分屏的個數(shù)
(5)末行模式下執(zhí)行shell命令
①:!+shell命令
13.Vim配置文件
(1)用戶級別
①~/.vimrc
(2)系統(tǒng)級別
①/etc/vim/vimrc
gcc相關(guān):
1.gcc工作流程
(1)預(yù)處理?
①調(diào)用預(yù)處理器 (cpp)
②參數(shù):-E
③宏替換
④頭文件展開
⑤注釋去掉
⑥Xxx.c? ->? xxx.i(還是c文件)
(2)編譯(時間最長)?
①調(diào)用編譯器(gcc)
②參數(shù):-S
③Xxx.i -> xxx.s(匯編文件)
(3)匯編
①調(diào)用匯編器(as)
②參數(shù): -c (小寫)
③Xxx.s? -> xxx.o(二進制文件)
(4)鏈接(沒有參數(shù))
①調(diào)用鏈接器 (Ld)
②Xxx.o -> xxx(可執(zhí)行程序)
③gcc? xxx.c? -o? app? 直接生成一個名為app的可執(zhí)行程序
1)-o : 指定生成的名字
2.gcc 常用參數(shù)
(1)-v / -version :版本
(2)-I(大寫i):編譯的時候指定頭文件路徑
(3)-c:將匯編文件生成二進制文件(.o)
(4)-o:指定生成文件的名字