Linux 命令行基礎(chǔ)知識
什么是命令行?
要了解命令行,首先就需要知道命令行界面,命令行界面也稱為CLI,與之相對的是圖形用戶界面 即GUI 。GUI 以圖形可視化的方式顯示了計算機(jī)操作用戶界面,可以通過簡單的鼠標(biāo)操作 完成打開文件夾,創(chuàng)建文件,瀏覽網(wǎng)頁等功能 。但是,在windows 操作系統(tǒng)問世前,所有的讓計算機(jī)執(zhí)行的命令都需要通過CLI 來完成 ,也就是說,我們現(xiàn)在在windows 上 日常完成的操作功能 都可以通過命令行來完成,或者更準(zhǔn)確的說,命令行 和 圖形界面 是先來后到的關(guān)系,圖形界面 是為了 讓用戶更簡單地完成 原本需要使用命令行來完成的對電腦的操作。為什么要學(xué)習(xí)命令,甚至是Linux命令?
通常,CLI 被認(rèn)為 沒有 GUI 那么方便用戶操作。因為,用戶需要去記憶一些簡單到復(fù)雜的命令。但是從性能上來考慮 命令行界面要較圖形用戶界面節(jié)約計算機(jī)系統(tǒng)的資源。在熟悉基本的命令后,使用命令行速度都要較圖形用戶界面操作速度要快一些。另外,圖形化操作方式 對單一的客戶端計算機(jī)操作友好,但是如果面對的是一群客戶端計算機(jī),圖形化操作方式 則力不從心,但是命令行界面提供的腳本語言以及宏可以提供自動化系統(tǒng)的管理能力,這一點也是命令行操作的優(yōu)勢。即便是windows 依然保留下了命令行的操作并且在windows系統(tǒng)不斷升級的過程中 也加強(qiáng)了操作命令的功能和數(shù)量 。那么為什么要去學(xué)習(xí)Linux 命令呢?
我個人的理解有如下幾點:
1:Linux 命令 要比 windows命令更優(yōu)秀,這一點毋庸置疑。
2:學(xué)習(xí)好Linux 命令 為后續(xù)學(xué)習(xí)Linux 鋪墊了基石。只要從事軟件開發(fā)工作,Linux是一道繞不過去的坎。
3:為了酷或者引用下Linus Torvalds 本人那句話"Just for fun"。準(zhǔn)備工作
我本人使用windows已經(jīng)有20多年,從未接觸過Linux 。雖然可以直接安裝一個Linux操作系統(tǒng) 但是我個人采用了循序漸進(jìn)的方法,并推薦以下兩種方式:
1:在windows 系統(tǒng)下安裝 gitbash 。
2:安裝虛擬機(jī),下載一個Linux鏡像文件(推薦deepin)教程會后續(xù)提供。-
推薦書籍及相關(guān)文檔
1:explainshell
explainshell 是學(xué)習(xí)Linux 基本命令的網(wǎng)站,使用方法簡單在輸入框中 輸入Linux 命令 就可以進(jìn)行解析。
如 輸入命令:cd
1.jpg
通過expainshell 的解釋翻譯 可以知道 change the working directory 就是 cd 在Linux 命令行中的意義,即:改變工作區(qū)目錄
2:鳥哥的Linux私房菜基礎(chǔ)學(xué)習(xí)篇
這本書,暫且還沒有買,當(dāng)然也沒看過。但是寫在這里,也是提醒自己以后回顧自己的文章時, 可以不忘初心,堅持下去。
所有的東西已經(jīng)準(zhǔn)備就緒的話,就從簡單的Linux 命令開始吧!
- 簡單的 Linux 命令行操作
./ ../ 和 ~
/ :Linux 中 / 代表的含義時目錄級別分隔符
. :Linux中 . 代表的含義是當(dāng)前目錄
./a.txt:Linux中 ./a 代表的含義是當(dāng)前目錄下 文件名為a.txt的文件
..:Linux中 .. 代表的含義是上級/父級 目錄
~:Linux中 ~代表的含義是家目錄 windows 家目錄為:/c/Users/用戶名cd
進(jìn)入目錄。
explainshell 解釋:
change the working directory
舉例:cd ~/Desktop
命令解釋:進(jìn)入到桌面pwd
顯示當(dāng)前目錄。
explainshell解釋:
print name of current/working directory
舉例:pwdmkdir 目錄名 和 mkdir -p 目錄名
mkdir:創(chuàng)建目錄
explainshell 解釋:
make directories
mkdir 可以同時創(chuàng)建多個文件夾 文件夾和文件夾之間使用空格連接
舉例:mkdir test1 test2 test3
命令解釋:在當(dāng)前目錄下 創(chuàng)建了三個目錄(文件夾)分別是 test1,test2和test3
mkdir -p:創(chuàng)建目錄(包含子目錄)
explainshell 解釋:
make directories
-p, --parents
no error if existing, make parent directories as needed
舉例:mkdir -p "test/test1/test2"
命令解釋:在當(dāng)前目錄下創(chuàng)建test目錄 test目錄下創(chuàng)建 test1 目錄 test1 目錄下創(chuàng)建test2目錄 這里面的 "" 書寫是非必須的 但是建議添加 因為,如果在路徑中出現(xiàn)一些非法字符 如 空格 則會出現(xiàn)和預(yù)想不一樣的情況
例如:mkdir -p test/ test1/test2
注意,我在test/后面添加了一個空格,這時會出現(xiàn)一個情況 在當(dāng)前目錄下 創(chuàng)建了兩個目錄 test 和 test1 而在test1 目錄下創(chuàng)建了子目錄 test2
如果使用 雙引號 :mkdir -p "test/ test1/test2"即便在test/后面加上空格 也會成功創(chuàng)建test目錄下包含test1,test1目錄下包含test2的這種形式。ls 路徑 ,ls -a 路徑 ,ls -al 路徑
查看路徑下的文件
explainshell 解釋:
ls:
list directory contents
-a, --all
do not ignore entries starting with .
-l use a long listing format
舉例:ls
命令解釋:查看當(dāng)前路徑下除了以. 開頭的所有文件和文件夾
舉例:ls /d/test
命令解釋:查看d盤test目錄下 所有的非.開頭的所有文件和文件夾
舉例:ls -a
命令解釋:查看當(dāng)前路徑下 所有的文件和文件夾 (包括.開頭的所有文件及文件夾)
舉例:ls -l
命令解釋:查看當(dāng)前路徑下 所有的非.開頭的文件和文件夾詳細(xì)信息
詳細(xì)信息的兩種格式分別為:
drwxr-xr-x 1 user 197609 0 10月 28 00:05 test/
或者為
-rw-r--r-- 1 user 197609 19 10月 28 18:21 test.txt
我對上述的信息了解程度僅僅在以下幾個方面:
1:d開頭的表示這是一個文件夾 -開頭的則表示這是一個文件
2:d 和 - 后面表示的是當(dāng)前用戶的權(quán)限 為 r(讀) w(寫) x(可執(zhí)行)
在后面的逐漸學(xué)習(xí)中,我會對此部分知識點有所補(bǔ)充
echo 和 touch
echo 的具體解釋:有道echo解釋(實在不知道怎么解釋,例子寫的比較清楚)
explainshell 解釋 :
display a line of text
舉例:echo "我愛中國"返回結(jié)果我愛中國
舉例:echo "我愛中國" > test.txt
命令解釋:創(chuàng)建文件 test.txt 并且將 "我愛中國" 寫入到 test.txt中
舉例:echo "我是一個中國人" >> test.txt
命令解釋:將"我是一個中國人" 追加到 test.txt 文件中
touch
創(chuàng)建文件并改變文件的更新時間
explainshell 解釋:
change file timestamps
舉例:touch test.txt
命令解釋:創(chuàng)建test.txt文件如果 test.txt文件已存在 則改變其最后一次修改的時間
查看最后一次修改的時間可以通過命令ls -l來進(jìn)行查看cp 源路徑 目標(biāo)路徑 ,cp -r 源路徑 目標(biāo)路徑
cp
復(fù)制文件或目錄
explainshell 解釋:
copy files and directories
舉例:
依次執(zhí)行下列命令
mkdir test1 test2
cd test1
echo "1" > test1.txt
cd ../
cp test1/test1.txt test2/test2.txt
執(zhí)行下列命令后,會在test2 目錄下 看到創(chuàng)建的test2.txt文件 并且 文件內(nèi)容與test1相同為 "1"
舉例:
依次執(zhí)行下列命令
mkdir test1
cd test1
echo "1" > test1.txt
cd ../
cp -r test1 test2
示例中的 -r命令的含義為:
explainshell: cp -r
-R, -r, --recursive
copy directories recursively
即 遞歸 涉及到目錄(文件夾)的操作都需要進(jìn)行遞歸
執(zhí)行示例中的操作完畢后,返回到 test1的同級目錄 會看到 test2目錄
test2目錄下 有和test1 目錄下相同的文件 tes1.txt
- mv 源路徑 目標(biāo)路徑
重命名(移動節(jié)點)
explainshell 解釋:
move (rename) files
依次執(zhí)行下列命令
mkdir test1 test2
cd test1
echo "1" > test1.txt
cd ../
mv test1/test1.txt test2/test2.txt
執(zhí)行示例中的操作完畢后,相當(dāng)于 將test1目錄下的test1.txt 剪切到 test2文件夾 并重命名為 test2.txt
rm
rm 為 刪除操作(remove)
explainshell 解釋:
remove files or directories
具體操作有:
1:rm 文件路徑 (刪除文件)
2:rm -f 文件路徑(強(qiáng)制刪除文件)
3:rm -r 目錄路徑(刪除目錄)
4:rm -rf 目錄路徑(強(qiáng)制刪除目錄)
舉例:rm test.txt
命令解釋:刪除當(dāng)前目錄下的test.txt文件
舉例:rm -f test.txt
命令解釋:
explainshell:rm -f
-f, --force
ignore nonexistent files, never prompt
f 代表 force 強(qiáng)制的含義 即強(qiáng)制刪除 test.txt文件
舉例:rm -r test
命令解釋:-r 上文已經(jīng)有所解釋 為 遞歸 該命令的含義為:刪除test目錄及目錄下所有文件
如果 被刪除的目錄下有其他文件 執(zhí)行rm -r會出現(xiàn)提示 ,但是 我在執(zhí)行此條語句時 則沒有出現(xiàn) 任何提示。
舉例:rm -rf test
命令解釋:強(qiáng)制刪除test目錄及目錄下所有的文件tree 查看目錄結(jié)構(gòu)
windows 下 不支持tree操作, 如果需要windows支持tree操作則需要下載 一個插件
tree插件 建議安裝在 C:\GnuWin32 下 然后將C:\GnuWin32\bin 添加到 windows系統(tǒng)環(huán)境變量的path 下
如果 安裝了gitbash 可以直接依次運行命令:
touch ~/.bashrc
echo 'export PATH="$PATH:/c/GnuWin32/bin/"' > ~/.bashrc
tree 命令
舉例:
依次執(zhí)行下列命令
mkdir test
cd test
mkdir -p "test1/test2"
mkdir -p "test3/test4"
cd test1/test2
echo "1" > test2.txt
cd ../../
tree
執(zhí)行 tree命令后 可以觀察到所在當(dāng)前的目錄 test 目錄下的 目錄結(jié)構(gòu)為:
.
|-- test1
| `-- test2
| `-- test2.txt
`-- test3
`-- test4
- cat
查看文件內(nèi)容
explainshell 解釋:
concatenate files and print on the standard output
舉例:cat Hello.java
該命令會將文件中的內(nèi)容打印并顯示
$ cat Hello.java
public class Hello{
public static void main(String[]args){
System.out.println("Hello World");
}
}
- df -kh , du -sh ,du -h
df -kh
查看磁盤的占用情況
explainshell 解釋:
report file system disk space usage
-k like --block-size=1K
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)du -sh, du-h
du -sh :
查看當(dāng)前目錄大小
du -h
查看各文件大小
explainshell 解釋:
estimate file space usage
-s, --summarize
display only a total for each argument
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
