標籤:io ar 使用 sp 檔案 on 代碼 bs ad
linux基本命令
作業系統中用來管理檔案的系統稱為"檔案系統",檔案系統以分組的方式管理檔案,具體的就是通過目錄(或者稱為檔案夾)來管理成千上萬的檔案。 Linux的檔案系統只有一個根目錄(/)而Windows的檔案系統可以有若干個根目錄(例如C、D、E)。目錄是通過目錄路徑來描述的,可以簡單分為 兩類描述方式,一是絕對路徑,二是相對路徑。
終端視窗的當前工作目錄可以隨時修改,使用者在任何時候都有一個當前工作目錄,使用者首次登陸使用時的初始目前的目錄是~
whoami命令可以知道目前使用者是誰;
pwd命令可以知道當前工作目錄,pwd以目錄的絕對路徑顯示出當前工作目錄;
linux系統中目錄、檔案大都以路徑描述字串的形式給出。
絕對路徑 從檔案系統的根目錄開始描述目錄路徑,例如/home/libin。所有的絕對路徑都是以根目錄(/)做開頭的路徑
相對路徑 從某一個目錄(一般是目前的目錄)開始描述目錄路徑。
相對路徑的使用更為普遍,通常情況下:
. 表示目前的目錄自己
.. 表示目前的目錄的父目錄。
temp 表示目前的目錄的一個名叫temp的子目錄
注意:“目錄”就是一個目錄,就是一個windows裡面被稱為檔案夾的東東,“目錄路徑”就是“路徑描述字串”,它描述了從一個目錄到達另外一個目錄的路徑,這個描述有絕對路徑和相對路徑兩種方式。
例如:檔案結構
xyz
/ \
abc def
那麼,
若目前的目錄是xyz,則相對路徑方式描述def目錄可以直接寫作def
若目前的目錄是abc,則相對路徑方式描述xyz目錄可以直接寫作..
若目前的目錄是abc,則相對路徑方式描述def目錄可以寫作../def
clear命令可以把螢幕上的所有內容清除掉
ls命令單獨使用就可以直接顯示目前的目錄下的檔案
ls StandardC命令可以顯示路徑為StandardC的目錄下的檔案,一般用法是ls directory
ls -a directory命令可以顯示路徑為directory的目錄下的所有檔案
ls -l directory命令可以詳細顯示路徑為directory的目錄下的檔案
可以看出,ls命令可以查看指定目錄裡的檔案,使用方法是ls <目錄路徑> ,如果要查看的是目前的目錄下的內容,可以省略路徑。
ls命令支援-a和-l選項,添加-a選項可以顯示指定目錄裡的所有內容,-l選項可以列出詳細情況,-a和-l選項可以合并為-al
cd命令可以把任何一個目錄調整成目前的目錄,使用方法如下
cd <目錄路徑>
mkdir命令可以建立目錄,使用方法如下
mkdir <目錄路徑> 注意:這裡的目錄路徑終點必須是一個還未存在的目錄名,否則mkdir命令會提示使用錯誤。
目前的目錄是/home/libin/StandardC,ls命令查看後發現有子目錄day01,ls day01查看發現day01沒有子目錄了,那麼命令mkdir day01/note day01/code的作用是?
答:給目錄day01建立子目錄note和code
目前的目錄是/home/libin/StandardC/day01,ls ..命令查看後發現只有子目錄day01,那麼mkdir -p ../day02/note ../day02/code的作用是?
答:給目錄day01的父目錄StandardC建立子目錄day02,同時建立day02的子目錄note和code
rmdir命令可以刪除目錄,它只能刪除空目錄,Usage:rmdir <目錄路徑>
rmdir -p a/b/c 等效於連續執行命令rmdir a/b/c rmdir a/b rmdir a 也等效於執行命令rmdir a/b/c a/b a
rm命令可以用於刪除一個非空目錄,Usage: rm -rf <目錄路徑>
touch <檔案路徑>可以建立一個空檔案,例如touch abc.txt。touch命令有兩個作用:一是可以建立一個空檔案,二是可以更新一個已經存在的檔案的修改時間,當然這時touch後面給出的檔案路徑應該描述了一個已經存在的檔案。
rm命令單獨使用就可以刪除一個已存在檔案,Usage: rm <檔案路徑>
cp命令可以把一個檔案複製一份,Usage: cp <檔案路徑1> <檔案路徑2>
mv命令可以實現對檔案的剪下效果,Usage: mv <檔案路徑1> <檔案路徑2>
tar命令可以用來打包歸檔若干檔案或目錄。Usage: tar zcvf archive.tar.gz <directory> <directory> <directory> ....
tar命令本來製作出來就是為了打包歸檔若干檔案或目錄,簡言之其功能就是合并若干個檔案或目錄,之後tar命令又增加了壓縮功能,所以往往tar命令打包歸檔若干檔案或目錄後又會進行壓縮(例如gz壓縮演算法),所以我們往往看到的tar命令打包歸檔所建立檔案命名都是*.tar.gz
tar命令同時也可以對壓縮檔進行解壓縮處理, Usage: zxvf archive.tar.gz
shell指令檔可以包含多條操作命令,執行指令檔就相當於順序執行內部的所有操作命令。
ln命令可以製作連結檔案,使用方法如下:
ln 檔案路徑1 檔案路徑2
檔案路徑1代表一個已經存在的檔案,檔案路徑2代表一個還不存在的檔案。
這樣使用ln命令所製作的連結叫做永久連結。叫法上與永久連結對應的還有一種“軟連結”,命令ln -s 檔案路徑1 檔案路徑2 製作的連結稱為軟連結。
(PS:每一個檔案都由兩部分組成:一是檔案內容,二是檔案名稱,檔案名稱和檔案內容中間存在一種串連,檔案內容是檔案名稱存在且有效必要條件,也就是說可以草率地說"檔案"="檔案名稱->檔案內容"。一般的作業系統為了提高磁碟操作效率,刪除檔案操作都只是刪除了檔案名稱,取消了檔案名稱和檔案內容的串連,檔案內容不會被立即清理。
那麼可以實驗得出,
ln永久連結只製作檔案名稱,製作了一個新檔案名稱,使得其和原來的檔案的檔案內容串連。
ln軟連結製作了一個檔案名稱,同時還製作了一個新檔案內容,這新的檔案內容裡面記錄了原來的檔案的檔案名稱串連,所以軟連結是否有效依賴於原檔案名稱是否有效。
可以看出,windows作業系統中提供的“捷徑”製作操作,其實質就是製作ln軟連結。
cp命令建立了新檔案(既包括檔案名稱,也包括檔案內容),cp命令執行同時拷貝了檔案內容和檔案名稱;
)
ps命令,ps命令在終端中單獨使用,可以查看當前終端啟動並執行所有程式,每一個程式都會有進程ID,顯示結果會顯示各命令的PID TTY 和 COMMAND
查看進程命令ps的常用選項:
-a 列出所有的進程。
-w 列出進程時加寬顯示以顯示較多資訊。
-au顯示較詳細的資訊。
-aux顯示所有進程較詳細資料,包括其他使用者的進程。
附:ps -aux 或者 ps -au命令執行結果各列意思:
kill命令可以終止一個程式的運行,使用時候需要指明程式的進程ID。
kill可以添加選項-s 用來向作業系統發送訊號。例如kill -9就可以發送代號為9的訊號給作業系統,以圖強制終止指定進程。
kill -l 可以列出linux系統的訊號。編號為1~31的為傳統UNIX支援的訊號,稱 為不可靠訊號(非即時的),編號為32~63的是後來擴充的,稱為可靠訊號(即時訊號)。
cat, cat命令可以用來顯示整個檔案的內容, Usage: cat <directory>
head, head命令可以顯示檔案自檔案頭起的若干行,預設10行。Usage: head -N <directory>
tail,tail命令可以顯示檔案自尾部起向上若干行,預設10行。Usage: tail -N <directory>
more, more命令可以用來顯示整個檔案內容,但是一次只會顯示一屏內容,敲擊空格鍵可以顯示下一屏。
find, find命令,例如:"find StandardC -name note.txt"是在目錄路徑"StandardC"所描述的目錄下尋找名字為"note.txt"的檔案.
find命令是基於檔案外在屬性的尋找,例如可以依據檔案大小、檔案名稱等尋找。也就是這樣,她並不能依據檔案內容尋找.Usage: find <開始尋找的目錄> 尋找選項(-name選項表示檔案名稱 -perm選項表示檔案其他屬性)
(p.s. linux中提供了grep命令,這個命令可以給予檔案內部內容進行尋找。要提一下的是Windows,windows中Find命令可以基於檔案內部內容的尋找哦,例如FIND /I diary.txt "I love you "就可以實現在diary.txt檔案裡面尋找I love you 所在行)
命令find的命令選項-name最為常用,除此之外還可以選用其他一些更為靈活的命令選項,find命令選項簡介如下:
-name 按照檔案名稱尋找檔案。
-perm 按照檔案許可權屬性尋找檔案。
-depth 首先在當前指定的目錄尋找,然後再尋找其子目錄。
-prune 使用這一選項可以實現不在當前指定目錄中尋找。當find命令同時有-prune和-depth兩個選項時,-prune選項將被find命令自動忽略。
-mtime -n +n 實現按照檔案更改時間尋找。-n表示檔案更改時間在n天以內,+n表示檔案更改時間在n天以前
-user 按照檔案屬主尋找檔案。
-group 按照檔案屬組尋找檔案。
-nouser 尋找無有效屬主的檔案,也就是說檔案屬主在/etc/passwd中不存在。
-nogroup 尋找無有效屬組的檔案,也就是說檔案屬組在/etc/groups中不存在。
-newer file1 !file2 尋找比檔案file1新但是比檔案file2舊的檔案。
-type 按照檔案類型尋找。
b 是塊裝置。
c 是字元裝置。
p 是管道檔案。
d 是目錄檔案。
l 是符號連結(symbol)檔案,也成"軟連結"
f 是普通檔案。
-size n : [c] 尋找檔案長度為n塊的檔案。加c表示檔案長度以位元組計。
grep, grep命令。grep(global search regular expression(RE) and print out the line, 全面搜尋Regex並把行列印出來)是一個強大的基於檔案內容的搜尋工具,她能通過Regex搜尋文本並把所在行列印出來。
grep命令選項:
-? 表示列印所在行的同時還需要列印所在行上下?行,例如grep -5 version mysql-5.0.45/Makefile
-c,--count表示只列印出匹配的行數,不列印匹配的內容。
-n, --line-number表示需要列印出匹配行的行號。
-v, --revert-match反檢索,只列印不匹配的行。
grep命令舉例: "grep versions mysql-5.0.45/Makefile"是在檔案路徑"mysql-5.0.45/Makefile"所描述的檔案內容裡面尋找包含字串"versions"的行.grep命令進行的是檔案內容的尋找。Usage: grep 要尋找的字串 檔案路徑
在命令列中可以使用萬用字元描述路徑的規律以圖簡化命令的編寫,我們不追求嚴格地說:
? 表示任意的一個字母或數字
* 表示任意長度的字串,也就是任意多個任意字母或數字
[] 表示某一個範圍內的字母或數字,例如[2-4]表示2、3、4其中一個字元。
可以看出,?*以及[]事實上就是一個集合,?就是任意一個字元的集合,*就是任意多個字元組成的集合, [2-4]就是元素為2、3、4的一個集合.
輸入輸出重新導向。linux系統有預設的標準輸入裝置(stdin),有預設的標準輸出裝置(stdout)。我們可以通過輸入/輸出重新導向來更改輸入/輸出裝置。其中:
< 可以更改輸入裝置
>或者>> 可以更改輸出裝置
管道。使用管道‘|‘可以把多個命令串連起來,管道‘|‘前面的命令的輸出會作為管道後面的命令的輸入,例如: ls -l | grep day01
在命令列中可以一次執行多條命令, 書寫時命令之間須用‘;‘隔開,敲擊斷行符號鍵後命令會以此執行。例如:pwd;ls
在命令列中可以通過使用‘\‘來把一條命令書寫在多個連續的行中,當命令書寫完成後,敲擊斷行符號鍵後命令會被執行。
上面瞭解了基本shell語句,需要注意的是:
作業系統可以劃分出兩部分"kernel"和"shell"。kernel是俗稱核心,完成電腦資源的管理,主要包括CPU管理、記憶體管理、檔案管理以及其他i/o裝置資源管理。shell俗稱外殼,她是一種程式設計語言,她可以互動式滴解釋執行命令。作為程式設計語言,她也有自己的語言字元集,有自己的控制流程語句用以控製程序各個運算的執行順序(控制流程結構包括1、順序結構 2、分支結構3、迴圈結構)。當然她也允許定義變數。
終端中執行echo $SHELL可以查看目前使用者在用的shell類型。shell分好多種,簡介下:
<1>Bourne Shell
bsh(Bourne Shell)是伯恩(Bourne)為AT&T UNIX所寫,簡稱b-sh(讀作b-shell或者Bourne Shell)是最早最知名的unix shell。如果使用的是Bourne Shell,那麼在終端(Terminal)上往往命令提示字元為$。Bourne Shell的下一版本是Bourne Shell again,簡稱bash
<2>C Shell
csh(C Shell)是vi作者喬恩在美國加州大學伯克利分校為BSD UNIX建立。相比Bourne Shell,她更類似於C語言。要注意的是文法上C Shell並不相容Bourne Shell。如果使用的是C Shell,那麼在終端(Terminal)上往往命令提示字元為%。C Shell也有一個增強版,名叫tcsh(TC Shell)
注意:一般unix系統終端(Terminal)上root使用者命令提示字元總是#。
接下來,一個神一樣的工具vi將要出場,初來乍到請你一遍又一遍地通過vimtutor練習vi的使用。基本上通過vi編輯代碼(以抄代碼的速度衡量)速度可以在15分鐘/百行就可以說熟練使用vi了。
vi還有這樣操作,你知道麼?
(1)游標所在英文字元,敲上一個波浪~可以改變英文字元的大小寫。
(2)敲上一個大寫的J就可以將下一行合并到當前行行末,成為同一行。
(3)
1,2co3 拷貝1、2行到第三行之後。
1,2m3 移動1、2行到第三行之後。
1,2d 刪除第1-2行。
1,2y 拷貝1、2行。
linux基本命令