【Linux入門教程】1 簡介、檔案管理、目錄

HelloZEX發表於2018-08-01

Linux入門教程

Linux是一個多使用者多工作業系統,不但被很多開發者用作個人作業系統,還大量執行在Web伺服器上。
該教程將帶你快速瞭解Linux系統,包括基本概念、Linux命令、Shell指令碼、常用工具等。
該教程可以讓你快速入門快速上手,能很快讓你看到學習的效果;如果你希望深入研究Linux,成為大師,請閱讀《鳥哥的Lunix私房菜》。
閱讀該教程之前,最好對作業系統有所瞭解,請檢視計算機作業系統教程自行學習。
學習過程中,會涉及到Linux命令和Shell指令碼,如果不希望在本地搭建學習環境,那麼可以線上免費體驗:compileonline.com
Linux有大量的命令,教程中沒有一一詳解,如果遇到困難,可以隨時檢視線上手冊:http://man.linuxde.net/
注意:Linux 是一個類似 Unix 的作業系統,Unix 是閉源收費的,Linux 是開源免費的,Unix 要早於 Linux,所以 Linux 的開發者也模仿了 Unix(但並沒有包括Unix原始碼),使得Linux在外觀和操作上與 Unix 非常相似。

 



Linux簡介

Linux簡介

嚴格的來講,Linux 不算是一個作業系統,只是一個 Linux 系統中的核心,即計算機軟體與硬體通訊之間的平臺;Linux的全稱是GNU/Linux,這才算是一個真正意義上的Linux系統。GNU是Richard Stallman組織的一個專案,世界各地的程式設計師可以變形GNU程式,同時遵循GPL協議,允許任何人任意改動。但是,修改後的程式必須遵循GPL協議。
Linux 是一個多使用者多工的作業系統,也是一款自由軟體,完全相容POSIX標準,擁有良好的使用者介面,支援多種處理器架構,移植方便。
為程式分配系統資源,處理計算機內部細節的軟體叫做作業系統或者核心。如果你希望詳細瞭解作業系統的概念,請檢視作業系統教程
使用者通過Shell與Linux核心互動。Shell是一個命令列解釋工具(是一個軟體),它將使用者輸入的命令轉換為核心能夠理解的語言(命令)。
Linux下,很多工作都是通過命令完成的,學好Linux,首先要掌握常用命令。

Linux版本

核心版本指的是在 Linus 領導下的開發小組開發出的系統核心的版本號。Linux 的每個核心版本使用形式為 x.y.zz-www 的一組數字來表示。其中:

  • x.y:為linux的主版本號。通常y若為奇數,表示此版本為測試版,系統會有較多bug,主要用途是提供給使用者測試。
  • zz:為次版本號。
  • www:代表發行號(注意,它與發行版本號無關)。

當核心功能有一個飛躍時,主版本號升級,如 Kernel2.2、2.4、2.6等。如果核心增加了少量補丁時,常常會升級次版本號,如Kernel2.6.15、2.6.20等。
一些組織或廠家將 Linux 核心與GNU軟體(系統軟體和工具)整合起來,並提供一些安裝介面和系統設定與管理工具,這樣就構成了一個髮型套件,例如Ubuntu、Red Hat、Centos、Fedora、SUSE、Debian、FreeBSD等。相對於核心版本,發行套件的版本號隨著釋出者的不同而不同,與系統核心的版本號是相對獨立的。因此把Red Hat等直接說成是Linux是不確切的,它們是Linux的發行版本,更確切地說,應該叫做“以linux為核心的作業系統軟體包”。

Linux體系結構

下面是Linux體系結構的示意圖:


在所有Linux版本中,都會涉及到以下幾個重要概念:

  • 核心:核心是作業系統的核心。核心直接與硬體互動,並處理大部分較低層的任務,如記憶體管理、程式排程、檔案管理等。
  • Shell:Shell是一個處理使用者請求的工具,它負責解釋使用者輸入的命令,呼叫使用者希望使用的程式。
  • 命令和工具:日常工作中,你會用到很多系統命令和工具,如cp、mv、cat和grep等。在Linux系統中,有250多個命令,每個命令都有多個選項;第三方工具也有很多,他們也扮演著重要角色。
  • 檔案和目錄:Linux系統中所有的資料都被儲存到檔案中,這些檔案被分配到各個目錄,構成檔案系統。Linux的目錄與Windows的資料夾是類似的概念。

系統啟動(開機)

如果你有一臺裝有Linux的電腦,加電後系統會自動啟動,然後提示你登入系統,只有登入後才能進行其他操作。

登入Linux

第一次使用Linux,會看到登入的提示,如下所示:

login:

登入步驟:

  • 登入Linux必須有使用者名稱(使用者ID)和密碼,如果沒有,可以向管理員所要。
  • 在登入提示處輸入使用者名稱並回車;使用者名稱是區分大小寫的,輸入時要注意。
  • 然後會提示你輸入密碼,密碼也是區分大小寫的。
  • 如果使用者名稱和密碼正確,那麼會成功登入,並看到上次登入資訊。
login : amrood
amrood's password:
Last login: Sun Jun 14 09:32:32 2009 from 62.61.164.73
$

登入後會出現命令提示符($),你可以輸入任何命令。下面通過 cal 命令來檢視日曆:

$ cal
     June 2009
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
7   8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

$

修改密碼

Linux系統通過密碼來保證資料和檔案的安全,防止黑客破解和攻擊。你可以通過以下方法來修改密碼:

  • 輸入 password 命令。
  • 輸入你現在使用的密碼。
  • 輸入新密碼。注意密碼不要過於簡單,簡單的密碼往往會為入侵者大開便利之門。
  • 確認密碼,再輸入一遍剛才的密碼。
$ passwd
Changing password for amrood
(current) Linux password:******
New Linux password:*******
Retype new Linux password:*******
passwd: all authentication tokens updated  successfully

$

注意:輸入的密碼是看不到的,只會看到一個佔位符(*)。

檢視目錄和檔案

在Linux中,所有的資料都被儲存在檔案中,所有的檔案又被分配到不同的目錄;目錄是一種類似樹的結構,稱為檔案系統。
你可以使用 ls 命令來檢視當前目錄下的檔案和目錄。下面的例子,使用了 ls 命令的 -l 選項:

$ ls -l
total 19621
drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml
-rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg
drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ
drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia
-rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar
drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr
-rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php
-rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar
-rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid
-rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf

$

注意:以 d* 開頭的為目錄,如 uml、univ、urlspedia等;其他的都是檔案。

檢視當前使用者資訊

登入系統後,如果你希望知道自己的使用者名稱(使用者ID),可以使用 whoami 命令:

$ whoami
amrood

$

如果你希望瞭解更多關於當前使用者的資訊,可以使用 who am i 命令,讀者可以自己嘗試一下。

檢視當前線上使用者

如果你希望知道當前線上的使用者(同時登入到系統的使用者),可以使用 users、who 和 w 命令:

$ users
amrood bablu qadir

$ who
amrood ttyp0 Oct 8 14:10 (limbo)
bablu  ttyp2 Oct 4 09:08 (calliope)
qadir  ttyp4 Oct 8 12:09 (dent)

$

w 命令可以看到線上使用者的更多資訊,讀者可以自己嘗試。

退出登入

完成工作後,你需要退出系統,防止他人使用你的賬戶。

使用 logout 命令即可退出登入,系統會清理有關資訊並斷開連線。

關閉系統(關機)

關係Linux系統可以使用下列命令:

命令 說明
halt 直接關閉系統
init 0 使用預先定義的指令碼關閉系統,關閉前可以清理和更新有關資訊
init 6 重新啟動系統
poweroff 通過斷電來關閉系統
reboot 重新啟動系統
shutdown 安全關閉系統

注意:一般情況下只有超級使用者和root使用者(Linux系統中的最高特權使用者)才有關閉系統的許可權,但是給普通使用者賦予相應許可權也可以關閉系統。

 



Linux檔案管理

Linux中的所有資料都被儲存在檔案中,所有的檔案被分配到不同的目錄。目錄是一種類似於樹的結構,稱為檔案系統。
當你使用Linux時,大部分時間都會和檔案打交道,通過本節可以瞭解基本的檔案操作,如建立檔案、刪除檔案、複製檔案、重新命名檔案以及為檔案建立連結等。

在Linux中,有三種基本的檔案型別:

1) 普通檔案

普通檔案是以位元組為單位的資料流,包括文字檔案、原始碼檔案、可執行檔案等。文字和二進位制對Linux來說並無區別,對普通檔案的解釋由處理該檔案的應用程式進行。

2) 目錄

目錄可以包含普通檔案和特殊檔案,目錄相當於Windows和Mac OS中的資料夾。

3) 裝置檔案

有些教程中稱特殊檔案,是一個含義。Linux 與外部裝置(例如光碟機,印表機,終端,modern等)是通過一種被稱為裝置檔案的檔案來進行通訊。Linux 輸入輸出到外部裝置的方式和輸入輸出到一個檔案的方式是相同的。Linux 和一個外部裝置通訊之前,這個裝置必須首先要有一個裝置檔案存在。

例如,每一個終端都有自己的裝置檔案來供 Linux 寫資料(出現在終端螢幕上)和讀取資料(使用者通過鍵盤輸入)。

裝置檔案和普通檔案不一樣,裝置檔案中並不包含任何資料。

裝置檔案有兩種型別:字元裝置檔案和塊裝置檔案。

  • 字元裝置檔案以字母"c"開頭。字元裝置檔案向裝置傳送資料時,一次傳送一個字元。典型的通過字元傳送資料的裝置有終端、印表機、繪圖儀、modern等。字元裝置檔案有時也被稱為"raw"裝置檔案。
  • 塊裝置檔案以字母"b"開頭。塊裝置檔案向裝置傳送資料時,先從記憶體中的buffer中讀或寫資料,而不是直接傳送資料到物理磁碟。磁碟和CD-ROMS既可以使用字元裝置檔案也可以使用塊裝置檔案。

檢視檔案

檢視當前目錄下的檔案和目錄可以使用 ls 命令,例如:

$ls

bin        hosts  lib     res.03
ch07       hw1    pub     test_results
ch07.bak   hw2    res.01  users
docs       hw3    res.02  work

通過 ls 命令的 -l 選項,你可以獲取更多檔案資訊,例如:

$ls -l
total 1962188

drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml
-rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg
drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ
drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia
-rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar
drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr
drwxr-xr-x  2    200    300      4096 Nov 25  2007 webthumb-1.01
-rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php
-rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar
-rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid
-rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf
drwxr-xr-x 11 amrood amrood      4096 May 29  2007 zlib-1.2.3
$

每一列的含義如下:

  • 第一列:檔案型別。
  • 第二列:表示檔案個數。如果是檔案,那麼就是1;如果是目錄,那麼就是該目錄中檔案的數目。
  • 第三列:檔案的所有者,即檔案的建立者。
  • 第四列:檔案所有者所在的使用者組。在Linux中,每個使用者都隸屬於一個使用者組。
  • 第五列:檔案大小(以位元組計)。
  • 第六列:檔案被建立或上次被修改的時間。
  • 第七列:檔名或目錄名。

注意:每一個目錄都有一個指向它本身的子目錄"." 和指向它上級目錄的子目錄"..",所以對於一個空目錄,第二列應該為 2。

通過 ls -l 列出的檔案,每一行都是以 a、d、- 或 l 開頭,這些字元表示檔案型別:

字首 描述
- 普通檔案。如文字檔案、二進位制可執行檔案、原始碼等。
b 塊裝置檔案。硬碟可以使用塊裝置檔案。
c 字元裝置檔案。硬碟也可以使用字元裝置檔案。
d 目錄檔案。目錄可以包含檔案和其他目錄。
l 符號連結(軟連結)。可以連結任何普通檔案,類似於 Windows 中的快捷方式。
p 具名管道。管道是程式間的一種通訊機制。
s 用於程式間通訊的套接字。


提示:通俗的講軟連線就是windows的快捷方式,原來檔案刪了,快捷方式雖然在但是不起作用了。

元字元

元字元是具有特殊含義的字元。* 和 ? 都是元字元:

  • * 可以匹配 0 個或多個任意字元;
  • ? 匹配一個字元。

例如

$ls ch*.doc

可以顯示所有以 ch 開頭,以 .doc 結尾的檔案:

ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc ch02-1.doc c

這裡,* 匹配任意一個字元。如果你希望顯示所有以 .doc 結尾的檔案,可以使用

$ls *.doc。

隱藏檔案

隱藏檔案的第一個字元為英文句號或點號(.),Linux程式(包括Shell)通常使用隱藏檔案來儲存配置資訊。

下面是一些常見的隱藏檔案:
.profile:Bourne shell (sh) 初始化指令碼
.kshrc:Korn shell (ksh) 初始化指令碼
.cshrc:C shell (csh) 初始化指令碼
.rhosts:Remote shell (rsh) 配置檔案

檢視隱藏檔案需要使用 ls 命令的 -a 選項:

$ ls -a

.         .profile       docs     lib     test_results
..        .rhosts        hosts    pub     users
.emacs    bin            hw1      res.01  work
.exrc     ch07           hw2      res.02
.kshrc    ch07.bak       hw3      res.03
$

一個點號(.)表示當前目錄,兩個點號(..)表示上級目錄

注意:輸入密碼時,星號(*)作為佔位符,代表你輸入的字元個數。

建立檔案

在Linux中,可以使用 vi 編輯器建立一個文字檔案,例如:

$ vi filename

上面的命令會建立檔案 filename 並開啟,按下 i 鍵即可進入編輯模式,你可以向檔案中寫入內容。例如:

This is Linux file....I created it for the first time.....
I'm going to save this content in this file.

完成編輯後,可以按 esc 鍵退出編輯模式,也可以按組合鍵 Shift + ZZ 完全退出檔案。這樣,就完成了檔案的建立。

$ vi filename
$

編輯檔案

vi 編輯器可以用來編輯檔案。由於篇幅限制,這裡僅作簡單介紹,將在後面章節進行詳細講解。

如下可以開啟一個名為 filename 的檔案:

$ vi filename

當檔案被開啟後,可以按 i 鍵進入編輯模式,按照自己的方式編輯檔案。如果想移動游標,必須先按 esc 鍵退出編輯模式,然後使用下面的按鍵在檔案內移動游標:

  • l 鍵向右移動
  • h 鍵向左移動
  • k 鍵向上移動
  • j 鍵向下移動

使用上面的按鍵,可以將游標快速定位到你想編輯的地方。定位好游標後,按 i 鍵再次進入編輯模式。編輯完成後按 esc 鍵退出編輯模式或者按組合鍵 Shift+ZZ 退出當前檔案。

檢視檔案內容

可以使用 cat 命令來檢視檔案內容,下面是一個簡單的例子:

$ cat filename
This is Linux file....I created it for the first time.....
I'm going to save this content in this file.
$

可以通過 cat 命令的 -b 選項來顯示行號,例如:

$ cat -b filename
1   This is Linux file....I created it for the first time.....
2   I'm going to save this content in this file.

統計單詞數目

可以使用 wc 命令來統計當前檔案的行數、單詞數和字元數,下面是一個簡單的例子:

$ wc filename
2  19 103 filename

每一列的含義如下:

  • 第一列:檔案的總行數
  • 第二列:單詞數目
  • 第三列:檔案的位元組數,即檔案的大小
  • 第四列:檔名


也可以一次檢視多個檔案的內容,例如:

$ wc filename1 filename2 filename3

複製檔案

可以使用 cp 命令來複制檔案。cp 命令的基本語法如下:

$ cp source_file destination_file

下面的例子將會複製 filename 檔案:

$ cp filename copyfile

現在在當前目錄中會多出一個和 filename 一模一樣的 copyfile 檔案。

重新命名檔案

重新命名檔案可以使用 mv 命令,語法為:

$ mv old_file new_file

下面的例子將會把 filename 檔案重新命名為 newfile:

$ mv filename newfile

現在在當前目錄下,只有一個 newfile 檔案。

mv 命令其實是一個移動檔案的命令,不但可以更改檔案的路徑,也可以更改檔名。

刪除檔案

rm命令可以刪除檔案,語法為:

$ rm filename

注意:刪除檔案是一種危險的行為,因為檔案內可能包含有用資訊,建議結合 -i 選項來使用 rm 命令。

下面的例子會徹底刪除一個檔案:

$ rm filename

你也可以一次刪除多個檔案:

$ rm filename1 filename2 filename3

標準的Linux流

一般情況下,每個Linux程式執行時都會建立三個檔案流(三個檔案):

  • 標準輸入流(stdin):stdin的檔案描述符為0,Linux程式預設從stdin讀取資料。
  • 標準輸出流(stdout):stdout 的檔案描述符為1,Linux程式預設向stdout輸出資料。
  • 標準錯誤流(stderr):stderr的檔案描述符為2,Linux程式會向stderr流中寫入錯誤資訊。

 



Linux目錄

目錄也是一個檔案,它的唯一功能是用來儲存檔案及其相關資訊。所有的檔案,包括普通檔案、裝置檔案和目錄檔案,都會被儲存到目錄中。

主目錄

登入後,你所在的位置就是你的主目錄(或登入目錄),接下來你主要是在這個目錄下進行操作,如建立檔案、刪除檔案等。
使用下面的命令可以隨時進入主目錄:

$cd ~

這裡 ~ 就表示主目錄。如果你希望進入其他使用者的主目錄,可以使用下面的命令:

$cd ~username

返回進入當前目錄前所在的目錄可以使用下面的命令:

$cd -

絕對路徑和相對路徑

Linux 的目錄有清晰的層次結構,/ 代表根目錄,所有的目錄都位於 / 下面;檔案在層次結構中的位置可以用路徑來表示。

如果一個路徑以 / 開頭,就稱為絕對路徑;它表示當前檔案與根目錄的關係。舉例如下:

/etc/passwd
/users/sjones/chem/notes
/dev/rdsk/Os3

不以 / 開頭的路徑稱為相對路徑,它表示檔案與當前目錄的關係。例如:

chem/notes
personal/res

獲取當前所在的目錄可以使用 pwd 命令:

$pwd
/user0/home/amrood

檢視目錄中的檔案可以使用 ls 命令:

$ls dirname

下面的例子將遍歷 /usr/local 目錄下的檔案:

$ls /usr/local

X11       bin          gimp       jikes       sbin
ace       doc          include    lib         share
atalk     etc          info       man         ami

建立目錄

可以使用 mkdir 命令來建立目錄,語法為:

$mkdir dirname

dirname 可以為絕對路徑,也可以為相對路徑。例如

$mkdir mydir

會在當前目錄下建立 mydir 目錄。又如

$mkdir /tmp/test-dir

會在 /tmp 目錄下建立 test-dir 目錄。mkdir 成功建立目錄後不會輸出任何資訊。

也可以使用 mkdir 命令同時建立多個目錄,例如

$mkdir docs pub

會在當前目錄下建立 docs 和 pub 兩個目錄。

建立父目錄

使用 mkdir 命令建立目錄時,如果上級目錄不存在,就會報錯。下面的例子中,mkdir 會輸出錯誤資訊:

$mkdir /tmp/amrood/test
mkdir: Failed to make directory "/tmp/amrood/test";
No such file or directory

為 mkdir 命令增加 -p 選項,可以一級一級建立所需要的目錄,即使上級目錄不存在也不會報錯。例如

$mkdir -p /tmp/amrood/test

會建立所有不存在的上級目錄。

刪除目錄

可以使用 rmdir 命令來刪除目錄,例如:

$rmdir dirname

注意:刪除目錄時請確保目錄為空,不會包含其他檔案或目錄。

也可以使用 rmdir 命令同時刪除多個目錄:

$rmdir dirname1 dirname2 dirname3

如果 dirname1、dirname2、dirname3 為空,就會被刪除。rmdir 成功刪除目錄後不會輸出任何資訊。

改變所在目錄

可以使用 cd 命令來改變當前所在目錄,進入任何有許可權的目錄,語法為:

$cd dirname

dirname 為路徑,可以為相對路徑,也可以為絕對路徑。例如

$cd /usr/local/bin

可以進入 /usr/local/bin 目錄。可以使用相對路徑從這個目錄進入 /usr/home/amrood 目錄:

$cd ../../home/amrood

重新命名目錄

mv (move) 命令也可以用來重新命名目錄,語法為:

$mv olddir newdir

下面的例子將會把 mydir 目錄重新命名為 yourdir 目錄:

$mv mydir yourdir

點號(.)

一個點號(.)表示當前目錄,兩個點號(..)表示上級目錄(父目錄)。

ls 命令的 -a 選項可以檢視所有檔案,包括隱藏檔案;-l 選項可以檢視檔案的所有資訊,共有7列。例如:

$ls -la
drwxrwxr-x    4    teacher   class   2048  Jul 16 17.56 .
drwxr-xr-x    60   root              1536  Jul 13 14:18 ..
----------    1    teacher   class   4210  May 1 08:27 .profile
-rwxr-xr-x    1    teacher   class   1948  May 12 13:42 memo
$

 

相關文章