Linux 從懵懂到玩得很溜

不會事無鉅細。html

學習 Linux ,首先要有一個 Linux 環境。這裏咱們使用虛擬機(推薦VirtualBox,它是免費的)運行 CentOS 。linux

具體安裝步驟參考:使用VirtualBox安裝CentOS7正則表達式

安裝完成後,以下圖:shell

CentOS 7

我這裏使用的不是 VirtualBox,而是 Paralles。它跟 VirtualBox 同樣,也是一款優秀的虛擬機。不一樣的是,Paralles 只能運行在 MacOS 上,並且不是免費的。數據庫

這是一個圖形界面,可經過快捷鍵Ctrl + Alt + F2切換到全命令行界面:vim

事實上F2-F6均可以切換。centos

命令行界面

輸入用戶名,回車,輸入密碼就登入系統了。安全

切換回圖形界面使用Ctrl + Alt + F1bash

有的系統可能須要同時按下fn才能觸發F1F2的功能鍵。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 -la

--表示長參數。好比ls --all,同ls -a效果同樣。

實用技巧

1。 在命令行中,使用鍵能夠切換前、後一條命令,使用兩次Tab鍵能夠補全命令。

2。 使用history命令能夠查看全部執行過的命令。

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 -l

上圖中,文件大小的單位是字節,可使用ls -lh,以KBMBGB爲單位顯示。

ls -lt是以最近修改時間排序。

cd

cd是 change directory 的縮寫,用於切換目錄。

[parallels@centos-7 ~]$ cd /
複製代碼

..表明上一級目錄,.表明當前目錄,~表明當前用戶家目錄。

[parallels@centos-7 ~]$ cd ..
複製代碼

du

du是 disk usage 的縮寫,顯示目錄包含的文件大小,默認單位是字節。使用du -h能夠KBMBGB爲單位顯示。

du默認只顯示目錄的大小,使用du -a能夠顯示目錄和文件的大小。du -s只顯示總計大小。

操做文件

文件操做主要有瀏覽文件,建立文件。

catless

catless用於顯示文件內容。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 鍵退出。

headtail

headtail用於顯示文件的開頭和結尾。默認顯示 10 行。可使用tail -n指定顯示的行數。

[parallels@centos-7 log]$ head Xorg.0.log
......
[parallels@centos-7 log]$ tail -n 5 Xorg.0.log
......
複製代碼

touchmkdir

touchmkdir用於建立文件和目錄。

[parallels@centos-7 Desktop]$ touch test.txt
[parallels@centos-7 Desktop]$ mkdir test
複製代碼

mkdir -p能夠遞歸建立目錄。

[parallels@centos-7 Desktop]$ mkdir -p test1/test2/test3
複製代碼

cpmv

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命令也可用於查找,並且功能更強大。

格式:

find

其中,第二個參數 「查找的目標」 是必須的參數。

如:

[root@centos-7 Desktop]# find /home -name test.txt
/home/parallels/Desktop/test1/test.txt
/home/parallels/Desktop/test.txt
複製代碼

關於 find 的更多用法,參考:

Linux find 命令詳解

Linux find命令:在目錄中查找文件(超詳解)

grep

grep是 Globally search a Regular Expression and Print 的縮寫。

grep的基本用法是:

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
複製代碼

wc

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的輸入。

進程

pstop

pstop 會列出運行的進程。

區別是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將多個文件打包成一個文件,而後用gzipbzip2將打包後的文件壓縮。

打包壓縮

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
複製代碼

(未完待續。。。)

相關文章
相關標籤/搜索