1.VI 操作
vi(vim)linux下的一個標配的 "文本編輯器"
2.三種模式:
(1).命令模式
vi <文件名>
默認進入的模式就是命令模式,該模式可以進行一些命令的操作
比如,選中,復制,刪除,剪切,粘貼等操作
(2).編輯模式(插入模式) --可以進行文本的輸入
i鍵 進入插入模式
a(append)(追加) 在光標後面進行插入
o(open) (默認在下一行進行插入)
(3).底行模式:文本保存,替換,查找等操作
必須是從"命令模式" 進入
shift+:
ESC 鍵 進入"命令模式"
-----------------------------
命令模式------i,a,o--------> 插入模式
| <-----ESC----------
|
shift+:
|
|
V
底行模式
底行模式:
保存:
w -- write(寫入)
q -- quit (退出)
wq -- 保存並退出
q!
wq!-- !表示強制退出
練習:
編譯一個hello.c 的文件的 實現 輸出hello world
熟悉 vi的三種模式之間的切換 保存退出
編譯:
gcc world.c
運行:
./a.out
------------------------------
復制:
1.復制一行
光標定位到要復制的一行
yy(注意:是在命令模式操作)
粘貼:p鍵
數字+p鍵 可以實現多份復制的效果
eg:
3P 表示 將復制的內容粘貼三次
2.復制多行
選中多行:
shift+v (命令模式下操作)
配合方向鍵(上下鍵)選中多行
之後
y鍵實現復制
粘貼:
p 進行粘貼
數字+p鍵 可以實現多份復制的效果
3.復制一塊
ctrl+v 進行塊選中(配合方向鍵進行選中)
之後進行復制 y鍵
後續 p鍵進行粘貼
練習:
將hello.c的 輸出語句,復制 3份 進行編譯,運行
刪除:
1.刪除一行(dd)
2.刪除多行(選中多行 之後d鍵)
3.刪除一塊(選中一塊 之後d鍵)
查找: 命令模式下
/要查找的字符串
eg:
/hello 回車
表示匹配 hello字符串
被查考的字符串會高亮顯示
取消高亮顯示:
底行模式:
nohls (no highlight)
撤銷:
u 撤銷 上一次的操作
ctrl +r 反撤銷
定位操作:
(1).:行號
(2).行號G //先輸入行號 ,之後shift+g
(3).定位到 第一行 : gg
(4).定位到 最後一行: shift+g
打開終端的快捷鍵:
(1).打開一個終端
ctrl+shift+n //默認是打開的終端的所在的路徑是當前路徑
ctrl+alt+t //默認是 主目錄下
(2).在當前終端打開一個標簽頁
ctrl+shift+t
退出一個終端:
(1).通過鼠標結束掉
(2).命令 exit
/---------------
[1].把tree的deb包 放到 Windows下的共享文件夾(D:\share)
linux執行該命令:
sudo dpkg -i /mnt/hgfs/share/*.deb
[2].
tree 目錄名
tree -L 1 /
#目錄與文件操作 pwd ls cd mkdir cp mv rm file
/*{{{*/
一.pwd 顯示當前工作目錄所在絕對路徑(以/為起點表示的路徑)
eg:pwd
#選項-P顯示鏈接文件路徑
linux下命令的基本的格式:
<命令> [選項] [參數]
--------------------
二.ls 顯示目錄下文件及目錄
可以帶參數,指定目錄或文件
可不帶參數,顯示當前目錄
eg:查看主目錄下workdir目錄的內容(~代表用戶主目錄)
ls ~/workdir //表示查看"主目錄下"的 workdir 目錄下的內容
ls //默認是查看當前路徑下的內容
#A.選項 -a 顯示所有文件,包括隱藏文件(以.開頭的文件) (all)
eg:(帶參數:指定目錄或文件)查看主目錄下workdir目錄下所有文件
ls -a /home/tim/workdir
eg:(不帶參數)查看當前目錄下所有文件及目錄
ls -a
#B.選項 -l(list) 顯示文件或目錄的屬性信息,(僅解釋文件大小,其它細節在文件系統部分解釋)
eg:顯示當前目錄下文件及目錄的屬性信息
ls -l
eg:顯示指定目錄或文件的屬性信息,注意可以帶多個參數!
ls -l /home/tim examples.desktop
#C.選項 -h 以K,M,G為單位顯示文件大小,與-l一起用。
注意:bash下通過alias命名了l,la,ll。效果請自行測試
注意:幾個特別的目錄 . .. / ~ -
三.cd 切換工作目錄 關於文件系統的路徑。絕對與相對
eg:不帶選項和參數,返回當前用戶的主目錄.
cd回車
eg:切換到根目錄下的home目錄下
cd /home
eg:切換到上層目錄
cd ..
eg:切換到前一個目錄
cd -
eg:切換到上層目錄的上層目錄,從主目錄切換到根目錄.
cd ~
cd ../..
四.mkdir 新建空目錄
eg:當前目錄下創建目錄dir
mkdir dir
eg:在/home/tim/workdir目錄下創建目錄dir
mkdir /home/tim/workdir/dir
#選項-p遞歸創建多層目錄
eg:在~下創建dir1/dir2/dir3
mkdir ~/dir1/dir2/dir3 -p
五.cp 拷貝源文件或目錄到目標文件或目錄,可實現備份
注意:
cp 拷貝普通文件
拷貝目錄文件時 需要加上 -a選項 (all)
eg:將共享目錄下的文件拷貝到主目錄下
cp /mnt/hgfs/share/jeffy-vim-v2.0.zip ~
eg:將主目錄下的jeff-vim-v2.0.zip 備份為jeffy-vim-v2.0_bak.zip
cp jeff-vim-v2.0.zip jeffy-vim-v2.0_bak.zip
#選項-a拷貝整個目錄內容
eg:將目錄jeffy-vim-v2.0拷貝到Desktop目錄下
cp jeffy-vim-v2.0 ~/Desktop -a
練習:
cp hello.c world.c
cp 123 456
cp 123 456 -a
注意:
要拷貝的"源文件" 必須保證存在
六.mv 移動源文件或目錄到目標文件或目錄,可實現重命名
eg:將主目錄下的test.txt文件移動到共享目錄下
vi test.txt
mv test.txt /mnt/hgfs/share
eg:將主目錄下的Videos目錄重命名為MyVideos
mv Videos MyVideo
七.rm 刪除一個或多個文件或目錄,物理刪除,不可恢復。-rf
eg:刪除在主目錄下jeffy-vim-v2.0_bak.zip
rm jeffy-vim-v2.0_bak.zip
#選項-rf強制刪除文件或目錄
eg:刪除主目錄下的dir目錄
rm -rf dir
八.file 查看文件類型
eg:查看主目錄下test.c文件類型
file test.c
eg:查看主目錄下shared文件類型
file shared
/*}}}*/
練習:
/*{{{*/
如果/mnt/hgfs/目錄下沒有可用目錄,將共享目錄換為~/Videos
1.將/etc/passwd文件拷貝到用戶主目錄
2.將用戶主目錄下的passwd文件備份為passwd-bak
3.在用戶主目錄下新建目錄test_dir
4.將passwd-bak移動到test_dir目錄下
5.將test_dir目錄下的passwd-bak文件改名為passwd
6.將test_dir目錄拷貝到你的共享目錄下
7.將共享目錄下的test_dir目錄改名為dir
8.刪除以上產生的文件
/*}}}*/
#編輯與查看文件內容 touch vi/vim cat more/less head/tail sort uniq diff
/*{{{*/
九.touch 可用於創建新文件
eg:在主目錄下創建文件test_touch
touch test_touch
十.vi / vim 新建或編輯
使用小技巧:
vi file +行號 打開文件時光標直接定位到指定行
vi file1 file2 -d 比較兩個文件的差異
十一.cat 在標准輸出(顯示器)顯示文件內容
eg:顯示主目錄下的文件test.c
cat test.c
#選項-n 顯示文件內容時顯示行號
eg:顯示主目錄下的文件test.c同時顯示行號
cat -n test.c
十二.more/less 分屏顯示文件
cat 顯示文件時一次性全在屏幕上顯示出來了,查看前面內容不太方便,
more/less命令能解決這個問題
使用異同點
eg:分屏顯示文件內容
more /etc/passwd
less /etc/passwd
相同操作方法
d鍵下翻頁,b鍵上翻頁
回車下翻行,空格下翻頁
不同操作:less支持上下鍵,
pagedown和pageup鍵上下翻行翻頁
顯示區別,more顯示當前顯示內容百分比。
退出按q鍵。
十三.head/tail 顯示文件開頭/結尾
如果只想查看文件開頭或最後幾行內容,可使用head/tail命令,默認顯示10行
eg:查看/etc/passwd文件開頭10內容
head /etc/passwd
eg:查看/etc/passwd文件結尾處10內容
tail /etc/passwd
#選項-num指定顯示內容的行數
eg:查看/etc/passwd文件開頭20行內容
head -20 /etc/passwd
tail 用法類似
head與tail常與管道結合使用
eg:
cat hello.c | head -1 // "|" 表示管道線, 效果是將前一個命令的輸出
//作為後一個命令的輸入
//查看 hello.c 第一行內容
十四.sort 按"行排序"從"小到大"顯示文件內容,
注意排序結果不會影響原文件
顯示結果與語系相關,為了以ASCII碼值為結果使用LANG=C統一
可以通過echo $LANG查看
eg:排序查看文件內容
vi test.c
A
5
+
每行寫入字符,數字,符號
sort test.c
#選項-r從大到小的順序排序顯示
eg:逆序排序查看文件內容
sort -r test.c
#選項-n對數字排序時以數值結果排序,而不是ASCII碼值排序
eg:按數字數值排序
vi test.c
5
3
2
每行寫入數字
sort test
sort -n test
顯示區別
#選項-o指定排序結果輸出到文件
eg:將test.c 排序結果寫回test.c
sort test.c -o test.c
十五.uniq顯示文件內容,去掉相鄰重復的行
eg:顯示時重復相鄰行只顯示一行。
uniq test
十六、diff按行比較兩個文件的不同,將兩具文件中不同內容顯示出來
常用於程序新舊版本對比
eg:顯示sort1.c與sort2.c不同處
diff sort1.c sort2.c
顯示結果不直觀,建議用vim sort1.c sort2.c -d代替,直觀對比
顯示結果中a表示追加,d表示刪除,c表示更改,
<表示屬於第一個文件,>表示屬於第二個文件.
/*}}}*/
#查找與搜索 find grep
/*{{{*/
十七、find在當前目錄下遞歸查找文件顯示路徑,即包括子目錄
用法:
find -name filename
或find -name 'filename'
或find -name "filename"
eg:在當前目錄(主目錄)下查找test.c文件
find -name test.c
用法:find 路徑 -name filename
eg:在workdir目錄下查找test.c文件
find ~/workdir -name test.c
十八、grep在文件中查找字符串
eg:在/etc/passwd 文件中查找"tim"
grep "tim" /etc/passwd
#選項-n顯示字符串所在行號
eg:在/etc/passwd文件中查找"tim",並顯示所在行號
grep "tim" /etc/passwd
eg:在當前目錄下所有文件中搜索"main"(不包括子目錄)
grep "main" *
eg:在當前目錄下所有文件中搜索"main"(包括子目錄)
grep "main" * -nR
#搜索字符串的匹配方式 ^ $
eg:查找所有含有tim的字符串
將/etc/passwd 拷貝到主錄目下
cp /etc/passwd ~
grep "tim" passwd
eg:查找以tim開頭的字符串
grep "^tim" passwd
eg:搜索以tim結尾的字符串
grep "tim$" passwd
eg:搜索出只含"tim"的字符串
grep "^tim$" passwd
常用:
grep 目錄 "字符串" -nR //遞歸查找 指定目錄下的文件中的"字符串"
/*}}}*/
#打包目錄與壓縮文件,(結合ppt 3 66頁) zip unzip gzip gunzip bzip2 bunzip2 tar
/*{{{*/
十九、zip對多個文件進行壓縮,生成.zip後綴名壓縮文件,unzip進行解壓縮
!用法:
格式:
zip <壓縮包名.zip> 文件1 文件2 ……
eg:將test.c test1.c test2.c 壓縮到test.zip文件中
zip test.zip test.c test1.c test2.c
eg:將test.zip解壓到當前目錄下
unzip test.zip
二十、gzip對一個文件進行普通壓縮,不能對目錄壓縮
eg:將test.c壓縮成test.c.gz
gzip test.c
二十一、gunzip對gz格式壓縮文件解壓
eg:將test.c.gz解壓
gunzip test.c.gz
二十二、bzip2對一個文件進行高比例壓縮,不能對目錄壓縮
eg:將test.c文件壓縮為test.c.bz2
bzip2 test.c
二十三、bunzip2 對bz2格式壓縮文件進行解壓
eg:將test.c.bz2解壓
bunzip2 test.c.bz2
二十四、tar將多個文件或目錄打包
#常用選項
-c 創建
-x 釋放
-z 處理gzip壓縮的tar包
-j 處理bzip2壓縮的tar包
-v 顯示詳細信息
-f 指定打包或解包的文件,需放在選項最後
!用法
打包
eg:將jeffy-vim-v2.0打包生成jeffy-vim-v2.0.tar
tar -cvf jeffy-vim-v2.0.tar jeffy-vim-v2.0
解包
eg:將jeffy-vim-v2.0.tar解包
tar -xvf jeffy-vim-v2.0.tar
先打包,再使用gzip bzip2命令壓縮
tar -cvf jeffy-vim-v2.0.tar jeffy-vim-v2.0
gzip jeffy-vim-v2.0.tar <= 生成jeffy-vim-v2.0.tar.gz
或bzip2 jeffy-vim-v2.0.tar <= 生成jeffy-vim-v2.0.tar.bz2
直接打包並壓縮
以gzip壓縮 -czvf,後綴.tar.gz 或.tgz
tar -czvf jeffy-vim-v2.0.tar.gz jeffy-vim-v2.0
tar -czvf jeffy-vim-v2.0.tgz jeffy-vim-v2.0
以bzip2壓縮 -cjvf ,後綴.tar.bz2 或.tbz2
tar -cjvf jeffy-vim-v2.0.tar.bz2 jeffy-vim-v2.0
tar -cjvf jeffy-vim-v2.0.tbz2 jeffy-vim-v2.0
解壓縮並解包 -xvf,對gzip與bzip2處理的文件均有效
tar -xvf jeffy-vim-v2.0.tar.bz2
tar -xvf jeffy-vim-v2.0.tbz2
tar -xvf jeffy-vim-v2.0.tgz
/*}}}*/
#其它命令 clear date echo which whereis man
/*{{{*/
二十五、clear 清屏
快捷鍵 ctrl + l
二十六、date 查看日期及時間
eg:date
二十七、echo顯示一行文本,常用於顯示環境變量值
eg:顯示字符串hello world!
echo "hello world!"
echo hello world!
注意區別,加""原樣輸出,否則算多個字符串輸出
二十八、which 查找命令所在路徑
eg:查找ls 所在路徑
which ls
二十九、whereis 查找命令所在路徑,源,man手冊文件所在位置
whereis ls
三十、man 查幫助手冊
eg:查ASCII碼表
man ascii
eg:查whereis 命令幫助頁
man whereis
eg:查函數strcmp
/*}}}*/
#系統維護命令 sudo su passwd shutdown
/*{{{*/
三十一、sudo以超級用戶身份執行一條命令
eg:查看系統下存放賬號密碼文件內容,需超級用戶權限
$cat /etc/shadow
$cat: /etc/shadow:Permission denied
$sudo cat /etc/shadow
$[sudo]password for tim: <=輸入tim用戶的密碼,注意密碼不會回顯!
三十二、su臨時切換用戶
eg:切換到root用戶
su
Passwd: <=輸入root用戶密碼!
exit可退出切換的用戶
eg:切換到root用戶,並切換到root主目錄/root
su -
Passwd: <=輸入root用戶密碼
注意如果第一次切換root用戶可能會提示密碼錯誤
三十三、修改密碼passwd
eg:修改tim用戶密碼
sudo passwd tim <=加sudo 是可以設置短密碼
eg:修改root密碼
sudo passwd root
三十四、shutdown關機命令
eg:5分鐘後關機
sudo shutdown +5
eg:立即關機
sudo shutdown -h now
eg:立即重啟
sudo shutdown -r now
sudo reboot
/*}}}*/
#用戶管理 adduser deluser
/*{{{*/
三十五、adduser添加用戶,會要求輸入新用戶密碼,全名,
並在/home目錄下創建新用戶主目錄
eg:sudo adduser max <=輸入當前用戶密碼
三十六、deluser刪除用戶
eg:刪除用戶max
sudo deluser max
#選項--remove-home,刪除用戶同時刪除該用戶主目錄
eg:sudo deluser --remove-home max
/*}}}*/
剩下命令
du df mount umount ln "ls -l" chmod chown chgrp ps kill