【Linux入門教程】1 簡介、檔案管理、目錄
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 $
相關文章
- Linux — 檔案、目錄管理Linux
- Linux檔案及目錄管理Linux
- Linux 檔案與目錄管理Linux
- Linux檔案和目錄管理Linux
- C#快速入門教程(24)—— 路徑、目錄與檔案C#
- BCSphere入門教程目錄
- linux檔案與目錄管理命令Linux
- Linux檔案與目錄管理(2)Linux
- Linux 檔案與目錄管理(轉)Linux
- Linux檔案系統-目錄和檔案管理Linux
- Linux 基礎-檔案及目錄管理Linux
- Linux指令入門-檔案管理Linux
- adb命令管理Linux 檔案和目錄Linux
- 筆記:Linux命令(目錄和檔案管理)筆記Linux
- linux學習(3)檔案和目錄管理Linux
- 《C#快速入門教程》目錄C#
- Qt快速入門系列教程目錄QT
- Linux 檔案與目錄管理常用命令 記錄Linux
- Linux基礎學習——檔案與目錄管理Linux
- Linux 檔案與目錄Linux
- Android入門教程 |res資源目錄簡介與shape的繪製和使用Android
- GraphQL 快速入門【1】簡介
- 第六章 Linux檔案與目錄管理Linux
- linux入門——基本目錄認識Linux
- 儲存、檔案管理/目錄、裝置管理
- gitbook 入門教程之 gitbook 簡介Git
- Flutter入門教程(一)Flutter簡介Flutter
- Android入門教程 | mmap 檔案對映介紹Android
- Linux檔案系統、目錄Linux
- 【Linux】檔案系統目錄Linux
- Gradle入門系列(1):簡介Gradle
- 簡述 Linux 檔案系統的目錄結構(轉)Linux
- 檔案管理簡單介紹
- (五)Linux之檔案與目錄管理以及文字處理Linux
- [MySQL光速入門]000 開篇介紹&目錄MySql
- Linux快速入門(05)Linux檔案系統介紹Linux
- Android入門教程 | SharedPreferences 簡介Android
- Linux 檔案系統的目錄Linux