1. 程式人生 > >Linux的第一節課。

Linux的第一節課。

一.Linux

1.計算機

Linux只是作業系統的核心名字,沒有別的含義。核心非常重要,有了它作業系統才能執行起來,但是他不能構成一個完備的作業系統。與GNU開源軟體相結合才組成了作業系統。

2.Linux中一切皆檔案。(重要思想)

   Linux中檔案儲存結構為倒樹型結構

其中根目錄為一級目錄

           底下是二級目錄

如圖:

此處我們列舉一下root裡所含檔案及目錄:

/bin       二進位制可執行檔案,系統常規命令(重要)

/boot     啟動目錄,存放系統自動啟動檔案,核心,還有初始化程式(重要)

/dev      系統裝置管理檔案

/etc       大多數系統配置檔案,服務存放路徑(重要)(若刪除很多服務無法支援)

/home   普通使用者家目錄(重要)與超級使用者家目錄不同,普通包含在超級裡面

/lib        函式庫

/lib64    64位函式庫

/media  臨時掛載點

/mnt      臨時掛載點

/opt       第三方軟體安裝目錄

/proc     系統硬體資訊和系統程序資訊

/root      超級使用者家目錄,超級使用者登陸系統後預設在的地方。超級使用者擁有最高許可權,可以管理其他的

/run       自動臨時的裝置掛載點

/sbin      系統管理命令,通常只有root可以執行(重要)

/srv        系統資料目錄

/var        系統資料目錄

/sys        核心相關資料

/tmp       臨時檔案產生目錄

/usr        使用者相關資訊資料

二.虛擬機器相關知識

1.什麼是虛擬機器

虛擬機器是指通過軟體模擬的具有完整硬體系統功能的、執行在一個完全隔離環境中的完整計算機系統。(簡單來說,就是和物理機[真機]一模一樣,你可以幹任何你想幹的事情,玩壞了都不怕,嘿嘿)

2.基本使用手冊

先在桌面點選右鍵開啟一個新的terminal,

輸入 rht-vmctl start desktop,開啟一個虛擬機器

輸入 rht-vmctl view desktop,檢視一個虛擬機器

輸入 rht-vmctl start server,開啟一個虛擬機器

輸入 rht-vmctl view server,檢視一個虛擬機器

輸入 rht-vmctl poweroff desktop,關閉虛擬機器

輸入 rht-vmctl reset desktop,重置虛擬機器(玩壞了用的)

注意:可能出現的報錯形式:

(1)在輸入 rht-vmctl start desktop開啟一個虛擬機器後,再次輸入 rht-vmctl start desktop,此時出現報錯如圖:

(2)在未開啟虛擬機器desktop的時候,輸入 rht-vmctl view desktop想要檢視一個虛擬機器,此時出現報錯如圖:

其中root(超級使用者)登入方式

Not listed? ---- root ---- 超級使用者登入密碼

三.Linux中基本操作

(1)在linux中如何執行命令

例如:(具體命令的用法意義在後面提,這裡我們先看一看它的效果)

ls用來檢視目錄裡面有什麼

命令        引數       目標

ls              -l           test   

ls          --size        test

命令 引數 目標(中間空格隔開)  

引數用來限定命令的執行方式

注意:

1.引數用來指定命令的某些功能,可以加也可以不加

2.命令和引數還有目標之間要用空格分開

3.在執行命令時通常遵循這些規則,特殊情況除外

4.命令必須在命令提示符後輸入,沒有提示符的輸入是無效的

(2)命令提示符中欄位含義

例如:[[email protected] Desktop]$  (切開來一塊一塊看)

kiosk:當前使用者,執行shell的是誰

@:分割符號

foundation0:主機名短名稱(可以輸入fundation查詢主機名全稱)

Desktop:所在當前主機位置

$:身份提示符

$:代表普通使用者;#:代表超級使用者

四.Linux中的檔案和目錄(也就是平時所說的資料夾)

1.檔案建立

touch filename     

2.目錄建立(資料夾)

mkdir directory

mkdir -p dir1/dir2/dir3     (-p建立遞迴目錄,當上層目錄不存在時自動建立多層)

3.檔案刪除

rm file            此時刪除會有提示,輸入y,點回車

rm -f file          -f=--force 表示強制刪除不提示

4.目錄刪除

rm -r directory     -r表示遞迴刪除,也就是刪除目錄本身和裡面的所有內容

rm -r -f dir           刪除目錄不提示

rm -fr dir    

rm -rf dir

5.編輯檔案

(1)gedit

         gedit filename  

直接輸入gedit,但此時terminal不能用,被gedit佔用了。用這個的前提是必須要有圖形介面,而且gedit如果當你的電腦意外短路將不會儲存裡面的內容。這一點可是非常致命的啊!!!

(2)vim

vim file ---- 按i進入insert模式 ---- 書寫內容 ---- 按esc退出插入模式 ---- :wq儲存退出

vim的檔案,就算突然退出或者異常,不會刪除原來已有的內容。刪除.swp檔案後,再次開啟,vim恢復正常。(目前還沒有進行過這樣的操作

6.檔案複製

cp    原始檔                     目的地檔案

cp -r  源目錄                     目的地目錄

cp    原始檔1  原始檔2          目的地檔案

7.檔案移動

mv    原始檔                          目的地檔案   (相當於給檔案重新命名)

mv    源目錄/原始檔              目的地目錄

8.檔案內容檢視

cat   filename                         檢視檔案的全部內容

cat -b filename                          顯示行號

less   filename                        分頁瀏覽

less filename分頁瀏覽的用法如下:

上/下鍵                           逐行上下移動

/keyword                          高亮顯示關鍵字,n向下匹配,N向上匹配

q                                 退出

          head file                   檢視檔案前10行

          head -n 5 fie                檢視檔案前5行

          tail    file                 檢視檔案後10行

          tail -n 5 file                 檢視檔案後5行

          tail  -f  file                監控檔案內容變化

9.檔案大小統計                        

           wc   -l   filename                   行數

           wc   -w  filename                   單詞數

           wc   -c   filename                   位元組數

五.關於路徑的命令

1.顯示當前路徑/工作地址(就是我在哪兒這個問題) pwd

2.檔案的定址

我們將所謂的檔案路徑(path)分為絕對路徑和相對路徑。

絕對路徑:由根目錄(/)開始寫起的檔名或目錄名稱。是檔案在系統的真實位置,此路徑在尋找時不會考慮現在所在的位置資訊。

相對路徑:相對於目前路徑的檔名寫法。(反正開頭不是/就是相對路徑的寫法)

3.切換路徑

          cd       目錄名稱       進入到指定目錄

          cd -                          當前目錄和當前目錄之前所在的目錄之間進行切換

          cd ~                         進入當前使用者家目錄

          cd ..                         進入當前目錄的上層目錄

4.檢視

          ls                       

          ls  -l    file                 檔案屬性

          ls       dir                 目錄中所包含的內容

          ls  -d   dir                 顯示目錄本身

          ls  -a   dir                 顯示所有檔案(包含隱藏檔案)

          ls  -s   dir                 檢視並且按照大小排序

六.系統中歷史的呼叫

           history                     檢視歷史

           history  -c                  清空當前環境中的歷史

           !數字                       呼叫此行歷史

           !test                         呼叫以test關鍵字開頭的最近一條歷史

           Ctrl + r + 關鍵字              呼叫歷史中最近一條含有此關鍵字的歷史

七.在系統中獲得幫助

1.檢視命令用途          whatis

2.檢視命令用法

命令 --help                   檢視命令的基本用法,適用於多數命令

          顯示內容中:

                    []        表示選項可以加也可以不加

                    ...        表示選項加入的個數任意

                    <>        表示選項是必須加入的

                    Usage     標出命令用法

                    Options    對引數作用作說明

3.man檢視命令或檔案的說明手冊

Man     命令

Man 5    檔案(有的檔案可用,有的不行?)

4.man的用法:同less的用法

八.系統的通用配置符號

*                    匹配0到任意字元

?                    匹配單個字元

[[:alpha:]]             單個字母

[[:lower:]]             單個小寫字母

[[:upper:]]             單個大寫字母

[[:digit:]]               單個數字

[[:punct:]]             單個符號

[[:alnum:]]             單個字母或數字

[1-9]                  1位,是1-9的任意數字

[!3-5]或者[^3-5]         1位,不是3-5的數字

{1..3}                  3個,1 2 3

{1,3,5}                 3個,1,3,5這三個數

九.系統中的輸入輸出管理(重定向)

注意:此節試驗在普通使用者下操作:通過su - student轉成普通使用者。

1.理解系統的輸入輸出

  I/O是輸入輸出的縮寫。這個功能可以把命令列的輸入重定向為從檔案中獲取內容,也可以把命令列的輸出結果重定向到檔案中。如果我們將多個命令列關聯起來,將形成非常強大的命令——管道。

2.管理輸入輸出的符號

輸出重定向符號:>

>        重定向正確輸出

2>      重定向錯誤輸出

&>       重定向所有輸出

注意:重定向時,如果指向同一檔案內,將會覆蓋原檔案內容。

find /etc/ -name passwd  此句可以理解為:根據name(名字)去尋找/etc裡的passwd的檔案。

find /etc/ -name passwd > file        重定向將正確內容輸出到file(正確內容為可以檢視的)

find /etc/ -name passwd 2> file.err     重定向將錯誤內容輸出到file.err(錯誤內容為不可以檢視的)

find /etc/ -name passwd &> file.all      重定向將所有內容輸出到file.all

3.輸出追加(與重定向不同,此命令預設追加到原檔案的最後)

find /etc/ -name passwd >> file             追加正確內容輸出到file

find /etc/ -name passwd 2>> file.err         追加錯誤內容輸出到file.err

find /etc/ -name passwd &>> file.all         追加所有內容輸出到file.all

4.管道

(1)管道的作用

       “|”管道的作用是把前一條命令的輸出變成後一條命令的輸入

注意:管道只允許正確輸出通過

      通過管道的輸出將會變成輸入

      如果需要儲存輸出內容,那麼需要複製一份輸出,命令是”tee”

(2)實驗過程

find /etc/ -name passwd | wc - l           看到結果為2,因為錯誤輸出不能通過管道

find /etc/ -name passwd 2>&1 | wc - l      看到結果為19,因為錯誤輸出被轉換為正確輸出

find /etc/ -name passwd 2>&1 | tee file | wc - l    儲存一份輸出到file

5.輸出重定向

cat > file << EOF

Hello

World

EOF

十.詳細學習vim

1.vim的三種模式

普通模式:瀏覽檔案

插入模式:對檔案內容進行編輯

命令模式:臨時更改vim的工作方式,對字元進行批量處理,永久更改vim工作方式需要編輯配置檔案:/etc/vimrc

2.調整vim的工作方式

set nu         顯示行號

set nonu       不顯示行號

set mouse=a    滑鼠有用

注意:這些設定都是一次性的 再次進入就沒了

3.字元搜尋

/keyword 關鍵字高亮

4.字元管理

  y

  yl   複製一個字母  

  y3l  複製三個字母

  yw  複製一個單詞

  y3w 複製三個單詞

  yy   複製一行

  y3y  複製三行

  d  

  dl    刪除一個字母

  d3l   刪除三個字母

  dw   刪除一個單詞

  d3w  刪除三個單詞

  dd    刪除一行

注意:剪下之後vim會進入插入模式,要貼上需要按esc退出插入模式然後按p貼上

  p     貼上

  u     撤銷

  ctrl + r 回覆撤銷

5.vim視覺化模式

  v      字元視覺化

  V      行視覺化

  ctrl + v  塊視覺化

其中批量新增字元,應該ctrl + v選中要加入字元所在的列 ---- 按大寫I鍵,進入插入模式 ---- 加入字元 ---- 按esc退出

6.字元的替換

  :%s/要替換的字元/替換成的字元/g

  :%s/westos/redhat/g                替換所有位置

  :1,5s/westos/redhat/g               替換1到5行

7.vim的分屏功能

  ctrl + w s                          上下分屏

  ctrl + w v                          左右分屏

  ctrl + w c                          關閉游標所在螢幕

  ctrl + w 上下左右                  游標移動到指定螢幕

  :sp file2                           同時編輯當前檔案和file2

8.在命令模式下游標的移動

  gg                                  游標移動到檔案的第一行

  G                                   游標移動到檔案的最後

  :數字                              游標移動到指定行

  ZZ                                  儲存退出

9.插入模式下游標移動

  i                                   游標所在位置插入     

  I                                   游標所在行行首插入

  o                                  游標所在行下一行插入

  O                                 游標所在行上一行插入

  a                                  游標所在字元的下一個字元插入

  A                                  游標所在行的行尾插入

  s                                  游標所在字元刪除並插入

  S                                  游標所在行刪除並插入

10.vim的退出

  :q                                  退出,在檔案內容沒有改變時使用

  :wq                                 退出儲存

  :q!                                 強制退出不儲存,在改變檔案後不想儲存時使用

  :wq!                                強制退出儲存,在對只讀檔案編寫時使用。注意:所編輯的只讀檔案必須是當前使用者的檔案

11.vim監控    

     watch -n 1 ‘tail -n 3 /etc/passwd /etc/group;ls -l /home/’   每隔1秒監控一次命令實施情況(類似於電腦後臺一直在重複所監控的命令)

注意:watch用於監控的是命令,而tail -f filename監控的是檔案。

十一.使用者管理

1.使用者存在的意義

2.組存在的意義

3.使用者的檢視

1)檢視當前使用者   whoami

2)系統中使用者的檢視

  id             檢視指定使用者id資訊

  id -u           檢視使用者的uid

      -g           檢視使用者的gid

      -G           檢視使用者所在的所有組id

      -n           顯示名字而不是id數字

4.切換使用者

   su - 使用者名稱稱

其中”-”表示使用者身份切換時同時切換當前使用者環境。

執行高階使用者切換低階使用者時不需要密碼,低階使用者切換高階使用者需要密碼,平級切換也需要密碼。

注意:每次su切換到其他使用者操作完成之後退出,在切換到另外使用者操作

5.使用者在系統中的儲存方式

/etc/passwd

  使用者資訊檔案

  使用者名稱稱:使用者密碼:uid:gid:說明文字:家目錄:預設shell

/etc/group

  使用者組資訊檔案

  組名:組密碼:組id:組成員

/etc/shadow

  認證資訊檔案

/home/usename

  使用者家目錄

6.使用者管理命令

1)使用者刪除

      userdel

      userdel    westos          刪除使用者但不刪除使用者的配置檔案

      userdel -r  westos           刪除使用者並刪除使用者的配置檔案

2)使用者建立

      useradd -u  8888     westos  指定使用者uid

      useradd -g  21       westos  指定使用者初始組id,”21”使用者組必須是存在的

      useradd -G  21     westos  指定使用者附加組id,”21”使用者組必須是存在的

      useradd -c  “hello”     westos  指定使用者的說明

      useradd -d  /home/lee     westos  指定使用者的家目錄

      useradd -s  /sbin/nologin     westos  指定使用者預設shell

可以連在一起寫:

3)使用者組

groupadd    建立使用者組   

groupadd  -g  8888 建立使用者組並指定使用者組id

groupdel        刪除使用者組

4)更改使用者資訊 usermod

usermod   -l 新名稱   westos      更改使用者的名稱

usermod   -u 8888     redhat      更改使用者的uid

usermod   -g 21       redhat     更改使用者的初始組

usermod   -G 21       redhat      更改使用者的附加組

usermod   -G “”        redhat     刪除使用者所有附加組

usermod   -c “haha”    redhat      更改使用者說明文字

usermod   -md /home/lee   redhat   更改使用者家目錄

usermod   -s /sbin/nologin  redhat    更改使用者的shell

usermod   -L    westos  凍結使用者

usermod   -U   westos  解凍使用者

5)使用者認證資訊

/etc/shadow      記錄使用者認證資訊

此檔案一共有9列:

使用者名稱稱:使用者密碼:使用者密碼最後一次被更改時間:使用者密碼最短有效期:使用者密碼最長有效期:密碼警告期限:使用者非活躍天數:使用者到期日:使用者自定義列

6)使用者密碼

passwd       redhat    更改redhat密碼

passwd -l     redhat    對密碼加鎖

passwd -u     redhat     對密碼解鎖

passwd -d      redhat   清空redhat密碼

注意:

普通使用者改密碼時:

1.必須知道當前永久原始密碼2.密碼不能和賬號名稱相似3.密碼不能是純數字或字母4.密碼不能是有序的字母和數字的組合

2.使用者密碼最後一次被更改的時間

passwd -e    redhat      改變使用者最後一次更改密碼的時間為0,使用者在登入時會被強制

3.修改密碼

1)使用者密碼最短有效期

passwd -n 1 redhat         redhat使用者在1天之內不能修改密碼

2)使用者到期日

chage -E 2018-09-23 redhat   redhat使用者在2018-09-25到期

十二.檔案許可權

1.檔案許可權的檢視

ls -l file

ls -ld dir

ll  file

ll -d dir

2.檔案許可權的讀取

例如:

- | rw- | rw- | r-- | 1 | kiosk | kiosk | 0 | Sep 23 14:52 | file

[1]        [2]          [3]   [4]        [5]    [6]      [7]                [8]

[1]檔案型別

- 空檔案,或者文字

d 目錄

l 軟連結

s socket套接字

b block塊裝置

c字元裝置

[2]許可權

 rw- | rw- | r--

 1       2      3

1.[u]檔案所有者對檔案能做什麼操作

2.[g]檔案所有組能對檔案做什麼操作

3.[o]其他人能對檔案做什麼操作

[3]對檔案:檔案硬連結個數(檔案內容被記錄的次數)

    對目錄:目錄中子目錄的個數(不是檔案)

[4]檔案所有人

[5]檔案所有組

[6]對檔案:檔案大小

    對目錄:目錄中子檔案元資料大小

[7]檔案內容被修改的時間

[8]檔名稱

3.如何修改檔案的所有人和所有組

chown / chgrp

chown       username    file/dir

chown       user.group    file/dir

chown    -R   user.group    dir     (同時更改了所有人和所有組)

chgrp     group        file/dir

chgrp     -R   group    dir               (只更改了所有組)

不加R只改變資料夾的所有人或所有組

加R改變資料夾裡所有檔案的所有人或所有組(遞迴)

4.如何修改檔案的許可權

1)對許可權的理解

r 對檔案:是否可以檢視檔案中的內容   ----> cat file

  對目錄:是否可以檢視目錄中有什麼子檔案或子目錄   ----> ls dir

w對檔案:是否可以改變檔案裡面記錄的字元

  對目錄:是否可以對目錄中子目錄或子檔案元資料進行更改

x對檔案:是否可以通過檔名稱呼叫檔案內記錄的程式

  對目錄: 是否可以進入目錄

2)更改方式

第一種方式:

chmod <u|g|o><+|-|=><r|w|x>   file|dir

chmod u+x   /mnt/file1

chmod g-r    /mnt/fil2

chmod ug+r   /mnt/file3

chmod u+r,g+x  /mnt/file4

chmod +x   /mnt/file5

chmod o=r-x   /mnt/file6

第二種方式:

rwx(順序不能改變)

分別記為:210

我們令r=4,w=2,x=1

可得r-x|r--|--x

        5   4   1

從而得到:

7=rwx

6=rw-

5=r-x

4=r--

3=-wx

2=-w-

1=--x

0=---

十三.其他

1.自動補齊

       我們為了避免命令輸入錯誤或者只記得命令的前半部分而遺忘後部分時,可以用tab補齊目錄、路徑或命令。

但有的時候一次tab並不能補齊,則代表以此關鍵字開頭的內容不唯一。

      此時tab兩次,列出所有以此關鍵字開頭的內容

2.加入中文輸入法  

     左上角Application ---- System Tools ---- Settings ---- Rejion&language ---- Input source ---- add ----Chinese ---- Intelligent Pinyin

3.截圖方法

     方法一:左上角點選utility,然後screen shot

     方法二:用命令gnome-screenshot-a擷取任意區域

例題

1.新建使用者組,shengchan,caiwu,jishu

2.新建使用者要求如下:

tom是shengchan組的附加使用者

harry是caiwu組的附加使用者

leo是jishu組的附加使用者

新建admin使用者,此使用者不屬於以上提到的三個部門

3.新建目錄要求如下:

/pub目錄為公共儲存目錄,對所有使用者可以讀、寫、執行

/sc目錄為生產部儲存目錄,只能對生產部人員可以寫入

/cw目錄為財務部儲存目錄,只能對財務人員可以寫入

題1答案

題2答案

題3答案

仍然存在的一些問題:

1.本機再嘗試whatis命令時,試圖通過該命令得到關於某些命令的用法,然而所得為<Nothing is appropriate>。具體原因目前還不清楚。

2.本機在用方法一截圖時,總是出現截圖失敗的提示,具體原因不明。(所以才在網上找了命令自己敲)

3.對於已整理的部分,有一些地方不太清楚具體原因以及意義。比如系統的輸入輸出管理(重定向),EOF,man 5 檔案在本機只有部分檔案可以顯示,使用者和使用者組的意義。

本文參考書目為:《Linux命令列大全》 William E.Shotts,Jr.