不會事無鉅細。html
學習 Linux ,首先要有一個 Linux 環境。這裏咱們使用虛擬機(推薦VirtualBox,它是免費的)運行 CentOS 。linux
具體安裝步驟參考:使用VirtualBox安裝CentOS7。正則表達式
安裝完成後,以下圖:shell
我這裏使用的不是 VirtualBox,而是 Paralles。它跟 VirtualBox 同樣,也是一款優秀的虛擬機。不一樣的是,Paralles 只能運行在 MacOS 上,並且不是免費的。數據庫
這是一個圖形界面,可經過快捷鍵Ctrl + Alt + F2
切換到全命令行界面:vim
事實上
F2-F6
均可以切換。centos
輸入用戶名,回車,輸入密碼就登入系統了。安全
切換回圖形界面使用Ctrl + Alt + F1
。bash
有的系統可能須要同時按下
fn
才能觸發F1
、F2
的功能鍵。less
date
date
命令用於打印當前時間。
[qe@centos-7 ~]$ date
2020年 02月 22日 星期六 10:41:47 CST
複製代碼
這個命令裏,[qe@centos-7 ~]$
是命令提示符。其中qe
表明當前用戶名,centos-7
表明主機名,~
表明當前所在目錄。
~
是一個特殊目錄,表明當前用戶的家目錄。因此這裏表示當前目錄爲qe
用戶的家目錄。
第一個命令很簡單。接下來咱們學習一個最經常使用的命令:
ls
ls
是 list 的縮寫,用於列出當前目錄下的文件和目錄。
[parallels@centos-7 ~]$ ls
Desktop Downloads Music Public Videos
Documents fontconfig Pictures Templates
複製代碼
不一樣的命令有不一樣的參數,如ls -a
,用於列出當前目錄下全部的文件和目錄:
[parallels@centos-7 ~]$ ls -a
. .bashrc Documents .local .pki
.. .cache Downloads .mozilla Public
.bash_history .config .esd_auth Music Templates
.bash_logout .dbus fontconfig .parallels Videos
.bash_profile Desktop .ICEauthority Pictures .viminfo
複製代碼
其中-a
表示 all,表明全部文件和目錄,包括隱藏文件和目錄。Linux 中在文件名以前加上.
表示隱藏。
注意,Linux 中區分大小寫。
又如ls -l
表示列出詳細信息。
多個短參數還能夠合併,如ls -la
:
--
表示長參數。好比ls --all
,同ls -a
效果同樣。
1。 在命令行中,使用↑
、↓
鍵能夠切換前、後一條命令,使用兩次Tab
鍵能夠補全命令。
2。 使用history
命令能夠查看全部執行過的命令。
每一個歷史命令前都有編號,經過使用!
能夠執行相應的歷史命令。
[parallels@centos-7 ~]$ !6
ls
Desktop Downloads Music Public Videos
Documents fontconfig Pictures Templates
複製代碼
3。 快捷鍵Ctrl + a
跳到當前行首,Ctrl + e
跳到當前行尾。
Linux 有一個根目錄 /
,是最頂層的目錄。根目錄的直接子目錄如上圖所示。同 Windows 系統不一樣,Linux 沒有C盤、D盤的概念,且 Linux 使用/
做爲路徑分隔符,如:/home/parallels/Desktop
。
pwd
pwd
用於打印當前目錄。
[parallels@centos-7 Desktop]$ pwd
/home/parallels/Desktop
複製代碼
which
which
用於打印某個命令的位置。
[parallels@centos-7 ~]$ which pwd
/usr/bin/pwd
複製代碼
ls
前面介紹過ls
,用於列出全部文件和目錄。其中ls -l
用於列出詳細信息,以下圖:
上圖中,文件大小的單位是字節,可使用ls -lh
,以KB
,MB
,GB
爲單位顯示。
ls -lt
是以最近修改時間排序。
cd
cd
是 change directory 的縮寫,用於切換目錄。
[parallels@centos-7 ~]$ cd /
複製代碼
..
表明上一級目錄,.
表明當前目錄,~
表明當前用戶家目錄。
[parallels@centos-7 ~]$ cd ..
複製代碼
du
du
是 disk usage 的縮寫,顯示目錄包含的文件大小,默認單位是字節。使用du -h
能夠KB
,MB
,GB
爲單位顯示。
du
默認只顯示目錄的大小,使用du -a
能夠顯示目錄和文件的大小。du -s
只顯示總計大小。
文件操做主要有瀏覽文件,建立文件。
cat
和 less
cat
和 less
用於顯示文件內容。cat
能夠一次性顯示文件的全部內容:
[parallels@centos-7 log]$ cat Xorg.0.log
複製代碼
可使用cat -n filename
顯示行號。
less
能夠分頁顯示文件內容。
[parallels@centos-7 log]$ less Xorg.0.log
複製代碼
less
命令能夠顯示一頁的內容,使用回車鍵
查看下一行,使用空格鍵
查看下一頁,使用b 鍵
查看上一頁,使用y 鍵
後退一行,q 鍵
退出。
head
和 tail
head
和 tail
用於顯示文件的開頭和結尾。默認顯示 10 行。可使用tail -n
指定顯示的行數。
[parallels@centos-7 log]$ head Xorg.0.log
......
[parallels@centos-7 log]$ tail -n 5 Xorg.0.log
......
複製代碼
touch
和 mkdir
touch
和 mkdir
用於建立文件和目錄。
[parallels@centos-7 Desktop]$ touch test.txt
[parallels@centos-7 Desktop]$ mkdir test
複製代碼
mkdir -p
能夠遞歸建立目錄。
[parallels@centos-7 Desktop]$ mkdir -p test1/test2/test3
複製代碼
cp
和 mv
cp
是 copy 的縮寫,用於拷貝文件或目錄。
[parallels@centos-7 Desktop]$ cp test.txt test_copy.txt
複製代碼
cp -r
用於拷貝目錄。
mv
是 move 的縮寫,用於移動文件或目錄。
[parallels@centos-7 Desktop]$ mv test.txt test1/
複製代碼
mv
還能夠用於重命名文件。
[parallels@centos-7 Desktop]$ mv test_copy.txt test.txt
複製代碼
rm
rm
用於刪除文件或目錄。
[parallels@centos-7 Desktop]$ rm test.txt
複製代碼
rm -r
用於刪除目錄。
[parallels@centos-7 Desktop]$ rm -r test.txt
複製代碼
rm -f
會強制刪除。
接下來咱們講解 Linux 中的連接。
Linux 中,文件名和文件內容並不放在一塊兒,而是分開存儲的。
硬連接會使兩個文件名指向同一塊文件內容。修改 file1 則至關於修改了 file2。
建立硬連接的方法:
[parallels@centos-7 Desktop]$ ln test.txt test_hard.txt
複製代碼
值得注意的是,刪除文件時,刪除的是文件名。所以刪除test_hard.txt
並不會刪除test.txt
。
硬連接使用的很少。
軟連接至關於 Windows 系統中的快捷方式。
以下圖,若是刪除 file2,對 file1 沒什麼影響,但若是刪除 file1,那麼 file2 就會變成 「死連接」。
建立軟連接方法以下:
[parallels@centos-7 Desktop]$ ln test.txt test_soft.txt
複製代碼
Linux 中能夠建立不少用戶。爲了保證系統的安全,每一個用戶擁有不一樣的權限。
普通用戶可使用su
切換至root
。
由於root
用戶的權限過大,不建議直接使用root
身份登陸。
只有使用root
身份才能建立用戶。
useradd
能夠添加新用戶。在/home
目錄下就會建立一個新的目錄tom
,表明tom
用戶的家目錄。
[root@centos-7 Desktop]# useradd tom
[root@centos-7 Desktop]# ls /home/
parallels tom
複製代碼
passwd
能夠更改用戶的密碼。
[root@centos-7 Desktop]# passwd tom
更改用戶 tom 的密碼 。
新的 密碼:
從新輸入新的 密碼:
passwd:全部的身份驗證令牌已經成功更新。
複製代碼
userdel
用於刪除用戶。
[root@centos-7 Desktop]# userdel -r tom
複製代碼
-r
參數會使得tom
的家目錄一塊兒刪除。
Linux 中每一個用戶都屬於一個羣組,若是不設置用戶的羣組,默認會建立一個和該用戶同名的羣組,而且把用戶劃歸到這個羣組中。
建立羣組使用groupadd
命令。
[root@centos-7 ~]# groupadd friends
複製代碼
使用usermod -g
命令能夠修改用戶的羣組。
[root@centos-7 ~]# usermod -g friends tom
複製代碼
使用groups
命令能夠查看用戶所在的羣組。
[root@centos-7 ~]# groups tom
tom : friends
複製代碼
使用usermod -G
命令能夠將用戶添加到多個羣組中。
[root@centos-7 ~]# usermod -G friends,family tom
[root@centos-7 ~]# groups tom
tom : family friends
複製代碼
使用usermod -aG
命令能夠給用戶追加一個羣組。
[root@centos-7 ~]# usermod -aG lover tom
[root@centos-7 ~]# groups tom
tom : family friends lover
複製代碼
使用groupdel
刪除羣組。
[root@centos-7 ~]# groupdel lover
[root@centos-7 ~]# groups tom
tom : family friends
複製代碼
chown
是 change owner 的縮寫,用於改變文件的全部者,須要 root 身份才能運行。
[root@centos-7 ~]# chown tom test.txt
複製代碼
chown -R
用於遞歸改變文件和目錄的全部者。
chgrp
是 change group 的縮寫,用於改變文件的羣組。
[root@centos-7 ~]# chgrp friends test.txt
複製代碼
前面說過,ls -l
會列出文件的詳細信息,其中包括權限。
開頭的第一個字母d
表示這是一個目錄。相應的l
表示連接,-
表示文件。
後面的r
表示能夠讀,w
表示能夠寫,x
表示能夠執行,-
表示沒有相應的權限。
每三個放在一塊兒,分別表示全部者、所屬羣組的用戶,及其餘用戶對該文件(或目錄)的權限。
Linux 分別爲每種權限定義了一個數字。
因此分配讀寫權限即爲 4 + 2 = 6,故 6 表示擁有讀寫權限。
使用chmod
能夠修改文件的權限:
[root@centos-7 Desktop]# chmod 755 test.txt
複製代碼
上述命令表示,全部者擁有rwx
權限,所屬羣組的用戶擁有r-x
權限,其餘用戶擁有r-x
權限。
使用chmod -R
能夠遞歸修改權限。
CentOS 中一般使用 yum 來管理軟件包。
關於 yum ,參考 linux yum 命令。
locate
locate
用於快速查找。
[root@centos-7 Desktop]# locate test.txt
/home/parallels/Desktop/test.txt
/home/parallels/Desktop/test1/test.txt
複製代碼
剛建立的文件不會被locate
收錄,可使用updatedb
更新數據庫:
[root@centos-7 Desktop]# updatedb
複製代碼
find
find
命令也可用於查找,並且功能更強大。
格式:
其中,第二個參數 「查找的目標」 是必須的參數。
如:
[root@centos-7 Desktop]# find /home -name test.txt
/home/parallels/Desktop/test1/test.txt
/home/parallels/Desktop/test.txt
複製代碼
關於 find 的更多用法,參考:
grep
grep
是 Globally search a Regular Expression and Print 的縮寫。
grep
的基本用法是:
如:
[root@centos-7 Desktop]# grep path /etc/profile
pathmunge () {
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
unset -f pathmunge
複製代碼
上面的命令會在 /etc/profile
文件中查找 path
。使用-i
參數會忽略大小寫,-n
參數會顯示行號,-v
參數會顯示文本不在的行,-r
參數會遞歸查找。
使用-E
參數會使用正則表達式:
[root@centos-7 Desktop]# grep -E ^[Pp]ath /etc/profile
pathmunge () {
複製代碼
sort
sort
命令用於將文件內容排序。
[root@centos-7 Desktop]# cat test.txt
Tom
jack
jemmy
Marry
Lucky
smith
[root@centos-7 Desktop]# sort test.txt
jack
jemmy
Lucky
Marry
smith
Tom
複製代碼
sort
命令不會真正改變文件內容。可經過-o
將排序後的內容寫入新文件。
[root@centos-7 Desktop]# sort -o test_sorted.txt test.txt
[root@centos-7 Desktop]# cat test_sorted.txt
jack
jemmy
Lucky
Marry
smith
Tom
複製代碼
-r
參數會倒序排列,-R
隨機排序,-n
用於對數字排序。
wc
wc
是 word count 的縮寫,用於文件統計。
[root@centos-7 Desktop]# wc test.txt
6 6 33 test.txt
複製代碼
uniq
uniq
用於刪除文件的重複內容。
[root@centos-7 Desktop]# cat repeat.txt
Tom
Tom
Jack
Tom
Jack
Smith
[root@centos-7 Desktop]# uniq repeat.txt
Tom
Jack
Tom
Jack
Smith
複製代碼
uniq
只能刪除連續的重複行,而且不會改變原文件。
>
能夠將命令的輸出結果重定向到文件中。>
會覆蓋文件的內容。
[root@centos-7 Desktop]# ls / > test.txt
複製代碼
>>
也能夠將命令的輸出結果重定向到文件中,但>>
會在文件的末尾追加。
管道能夠將一個命令的輸出做爲另外一個命令的輸入。
[root@centos-7 Desktop]# ls | sort
Parallels Shared Folders
repeat.txt
test1
test_sorted.txt
test.txt
複製代碼
上面的命令將ls
的輸出,做爲sort
的輸入。
ps
和 top
ps
和 top
會列出運行的進程。
區別是ps
列出的進程不會隨時間更新,是靜態的。ps -ef
會列出全部進程。
top
命令列出的進程是動態變化的。
kill
命令用於結束一個進程。
[root@centos-7 Desktop]# kill 671
複製代碼
其中 671 是進程號。
halt
用於關機,reboot
用於重啓。
&
&
能夠將進程切換到後臺運行,只需在命令最後面加上&
。
[parallels@centos-7 Desktop]$ ls &
[1] 4175
複製代碼
nohup
[root@centos-7 Desktop]# nohup ls
nohup: 忽略輸入並把輸出追加到"nohup.out"
複製代碼
Ctrl + z
將進程轉爲後臺暫停。bg
命令將使其在後臺從新運行。fg
命令將後臺進程轉爲前臺運行。
先講解打包和壓縮的概念。
打包是將多個文件歸檔爲一個文件,壓縮是將一個大的文件壓縮成一個小的文件。
Linux 中,首先用tar
將多個文件打包成一個文件,而後用gzip
或bzip2
將打包後的文件壓縮。
tar -cvf
打包:
[root@centos-7 Desktop]# tar -cvf archive.tar test_copy.txt test.txt
test_copy.txt
test.txt
複製代碼
也能夠將一個目錄打包:
[root@centos-7 Desktop]# tar -cvf test_archive.tar test1
test1/
test1/test2/
test1/test2/test3/
test1/test.txt
複製代碼
解開歸檔:
[root@centos-7 Desktop]# tar -xvf archive.tar
test_copy.txt
test.txt
複製代碼
gzip
壓縮:
[root@centos-7 Desktop]# gzip archive.tar
複製代碼
gunzip
解壓縮:
[root@centos-7 Desktop]# gunzip archive.tar.gz
複製代碼
(未完待續。。。)