到底要如何Linux入門呢?
因為Linux的知識體系非常的龐大,IT行業(yè)很多領(lǐng)域都需要使用到Linux,有運維的、有應(yīng)用程序開發(fā)的、有驅(qū)動開發(fā)的、有系統(tǒng)優(yōu)化的、有搞單片機(jī)的、有做系統(tǒng)移植的、有做網(wǎng)絡(luò)產(chǎn)品的等等。
總結(jié)一句話,IT的很大部分從業(yè)者都需要掌握Linux的部分知識,但是由于每個人的從事領(lǐng)域不一樣,對Linux的要求也不一樣,這就直接導(dǎo)致,網(wǎng)上搜索學(xué)習(xí)路線有很多種,還有就是推薦的書籍很多都不利于初學(xué)者。
比如Linux命令的學(xué)習(xí),很多人都力推《鳥哥的私房菜》這本書,一口君在直播間多次強(qiáng)調(diào),初學(xué)者不要看這本書,不是說這本書不好,而是,這本書其實你要當(dāng)做一本工具書來看,如果你的目標(biāo)是想快速的基于Linux做一些開發(fā)工作,最迫切的就是快速掌握一些基本的命令,一些和開發(fā)相關(guān)的最基礎(chǔ)的知識,而不是去學(xué)習(xí)那些可能這輩子都用不到的命令。
為了讓初學(xué)者更好的學(xué)習(xí)Linux,入門Linux,一口君特地整理了Linux入門必須掌握的一些基礎(chǔ)知識點,掌握這些知識點之后,就可以學(xué)習(xí)C編程的知識了,后續(xù)遇到一些不熟悉的命令和配置,只需要網(wǎng)上搜索下就可以很快上手了。
一、Linux操作系統(tǒng)概述
1、發(fā)展
1991 Linus Linux 0.0.1版,代碼為8K行?,F(xiàn)在最新版本為5.12.4。Linux加入了GNU,整體基于GPL協(xié)議,允許開源、分享傳播、修改。
內(nèi)核下載的地址:
https://www.kernel.org/
2、組成
kernel內(nèi)核:
核心程序,用于管理硬件設(shè)備、系統(tǒng)的線程進(jìn)程、內(nèi)存、交換空間、文件系統(tǒng)、精靈進(jìn)程(守護(hù)進(jìn)程)等。主要實現(xiàn)系統(tǒng)程序與硬件之間的控制管理功能。
Shell:
包裹在內(nèi)核之外的人機(jī)交互界面,用于用戶和內(nèi)核之間打交道的功能,類似于windows的cmd。通過Shell將輸入的命令與內(nèi)核通訊,好讓內(nèi)核可以控制硬件并正確無誤的操作工作。
Shell有著不同的分類,比如Bourne shell(sh),Korn shell(ksh)、C shell (csh)、Bourne-again shell(bash)、tcsh。其中最常用的有csh和bash。
ubuntu 16.04的terminal如下:
user applicationLinux根據(jù)程序的運行,分為用戶空間和內(nèi)核空間,簡單的理解就是,普通的應(yīng)用程序運行在用戶空間,一些涉及到系統(tǒng)核心資源的操作的程序運行在內(nèi)核空間,比如TCP/IP協(xié)議棧、驅(qū)動、進(jìn)程調(diào)度、內(nèi)存管理、文件系統(tǒng)等都運行于Linux內(nèi)核空間,
其實一些應(yīng)用程序當(dāng)需要訪問系統(tǒng)資源的時候,必須通過系統(tǒng)調(diào)用,通過一些內(nèi)核函數(shù)將系統(tǒng)資源由內(nèi)核空間拷貝到用戶空間。
Files System:文件系統(tǒng),管理文件和目錄。
3、Linux的特性:
多用戶、多任務(wù)(進(jìn)程、線程處理),多平臺,圖形化界面(x-windows)、硬件配置、通信與聯(lián)網(wǎng)、應(yīng)用程序的支持(編輯器、編輯工具、數(shù)據(jù)庫、辦公軟件、圖形處理、Internet應(yīng)用、游戲)。
二、Linux操作系統(tǒng)安裝
1、Linux的選擇
red hat:企業(yè)級的,已經(jīng)開始收費(商用)。
CentOS是RHEL的克隆版本。RedHat一直都提供源代碼的發(fā)行方式,CentOS就是將RedHat發(fā)行的源代碼重新編譯一次,形成一個可使用的二進(jìn)制版本。由于Linux的源代碼是GNU,所以從獲得RedHat的源代碼到編譯成新的二進(jìn)制,都是合法。只是RedHat是商標(biāo),所以必須在新的發(fā)行版里將RedHat的商標(biāo)去掉。通常搭建服務(wù)器選用CentOS。
ubuntu:桌面開源的,比較純正的Linux,android官方指定的編譯操作系統(tǒng),發(fā)展快、已支持ARM架構(gòu)。ubuntu在開發(fā)者中,非常受歡迎,一口君所有的文章和視頻都以ubuntu為主。
2、安裝Ubuntu Desktop
Linux環(huán)境安裝篇幅較長,安裝詳細(xì)步驟參考這篇文章:
《linux驅(qū)動、ARM學(xué)習(xí)環(huán)境搭建》
3、基本操作
ctrl+altF2可以進(jìn)入終端界面 ctrl+altF7進(jìn)入桌面界面 ctrl+alt+t文本編輯
我們通常用快捷鍵ctrl+alt+t打開一個終端,這個一定要記住。
其中:
peng當(dāng)前用戶 ubuntu主機(jī)名 ~當(dāng)前用戶主目錄,/home/peng,每一個用戶都會在/home下創(chuàng)建一個與用戶名同名的目錄 $普通用戶
如果切換到管理員用戶
root管理員 /home/peng當(dāng)前工作目錄 #當(dāng)前是管理員
三、Linux文件系統(tǒng)及文件基礎(chǔ)
1、文件系統(tǒng)概述
Linux 中一切皆為文件,文件系統(tǒng)用來組織計算機(jī)的文件和資料的系統(tǒng),是操作系統(tǒng)封裝的一個系統(tǒng)服務(wù)程序,實際是一個軟件程序,用來存儲和管理計算機(jī)文件和資料。文件系統(tǒng)分類如下:
磁盤文件系統(tǒng):NTFS,EXT3 閃存文件系統(tǒng):JFFS2,YAFFS 數(shù)據(jù)庫文件系統(tǒng):BFFS,WINFS 網(wǎng)絡(luò)文件系統(tǒng):NFS 虛擬文件系統(tǒng):VFS(Proc)
文件系統(tǒng)的功能:能定義文件的組織方式,文件的結(jié)構(gòu);提供建立和存取文件的環(huán)境(目錄和文件)
2、Linux文件系統(tǒng)及文件
EXT3:是一個日志方式的文件系統(tǒng),系統(tǒng)中的每個文件都有索引,用戶對文件的每個操作都會記錄在日志中,形成一個任務(wù)隊列。
SWAP:是交換分區(qū)的文件系統(tǒng),類似于windows的虛擬內(nèi)存,其實現(xiàn)的方式有以下兩種:第一種是進(jìn)行內(nèi)存排列像內(nèi)存池一樣,進(jìn)行優(yōu)化;第二種是把硬盤上的空間模擬成內(nèi)存。Swap是Linux 的虛擬內(nèi)存,在安裝時要設(shè)置好大小,一般設(shè)置為物理內(nèi)存的兩倍。
目錄結(jié)構(gòu)linux 的結(jié)構(gòu)是由很多文件塊區(qū)組成,與Windows分區(qū)不同。
/bin | 系統(tǒng)有很多放置執(zhí)行檔的目錄,但/bin比較特殊。因為/bin放置的是在單人維護(hù)模式下還能夠被操作的指令。在/bin底下的指令可以被root與一般帳號所使用,主要有:cat,chmod(修改權(quán)限), chown, date, mv, mkdir, cp, bash等等常用的指令。 |
/boot | 主要放置開機(jī)會使用到的檔案,包括Linux核心檔案以及開機(jī)選單與開機(jī)所需設(shè)定檔等等。Linux kernel常用的檔名為:vmlinuz ,如果使用的是grub這個開機(jī)管理程式,則還會存在/boot/grub/這個目錄。 |
/dev | 在Linux系統(tǒng)上,任何裝置與周邊設(shè)備都是以檔案的型態(tài)存在于這個目錄當(dāng)中。只要通過存取這個目錄下的某個檔案,就等于存取某個裝置。比較重要的檔案有/dev/null, /dev/zero, /dev/tty , /dev/lp*, / dev/hd*, /dev/sd*等等 |
/etc | 系統(tǒng)主要的設(shè)定檔幾乎都放置在這個目錄內(nèi),例如人員的帳號密碼檔、各種服務(wù)的啟始檔等等。一般來說,這個目錄下的各檔案屬性是可以讓一般使用者查閱的,但是只有root有權(quán)力修改。FHS建議不要放置可執(zhí)行檔(binary)在這個目錄中。比較重要的檔案有:/etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/等等。另外,其下重要的目錄有:/etc/init.d/ :所有服務(wù)的預(yù)設(shè)啟動script都是放在這里的,例如要啟動或者關(guān)閉iptables的話:/etc/init.d/iptables start、/etc/init.d/ iptables stop |
/etc/xinetd.d/ | 這就是所謂的super daemon管理的各項服務(wù)的設(shè)定檔目錄。 |
/etc/X11/ | 與X Window有關(guān)的各種設(shè)定檔都在這里,尤其是xorg.conf或XF86Config這兩個X Server的設(shè)定檔。 |
/home | 這是系統(tǒng)預(yù)設(shè)的使用者家目錄(home directory)。在你新增一個一般使用者帳號時,預(yù)設(shè)的使用者家目錄都會規(guī)范到這里來。比較重要的是,家目錄有兩種代號:~ :代表當(dāng)前使用者的家目錄,而 ~guest:則代表用戶名為guest的家目錄。 |
/lib | 系統(tǒng)的函式庫非常的多,而/lib放置的則是在開機(jī)時會用到的函式庫,以及在/bin或/sbin底下的指令會呼叫的函式庫而已 。什么是函式庫呢?妳可以將他想成是外掛,某些指令必須要有這些外掛才能夠順利完成程式的執(zhí)行之意。尤其重要的是/lib/modules/這個目錄,因為該目錄會放置核心相關(guān)的模組(驅(qū)動程式)。 |
/media | media是媒體的英文,顧名思義,這個/media底下放置的就是可移除的裝置。包括軟碟、光碟、DVD等等裝置都暫時掛載于此。常見的檔名有:/media/floppy, /media/cdrom等等。 |
/mnt | 如果妳想要暫時掛載某些額外的裝置,一般建議妳可以放置到這個目錄中。在古早時候,這個目錄的用途與/media相同啦。只是有了/media之后,這個目錄就用來暫時掛載用了。 |
/opt | 這個是給第三方協(xié)力軟體放置的目錄 。什么是第三方協(xié)力軟體???舉例來說,KDE這個桌面管理系統(tǒng)是一個獨立的計畫,不過他可以安裝到Linux系統(tǒng)中,因此KDE的軟體就建議放置到此目錄下了。另外,如果妳想要自行安裝額外的軟體(非原本的distribution提供的),那么也能夠?qū)⒛愕能涹w安裝到這里來。不過,以前的Linux系統(tǒng)中,我們還是習(xí)慣放置在/usr/local目錄下。 |
/root | 系統(tǒng)管理員(root)的家目錄。之所以放在這里,是因為如果進(jìn)入單人維護(hù)模式而僅掛載根目錄時,該目錄就能夠擁有root的家目錄,所以我們會希望root的家目錄與根目錄放置在同一個分區(qū)中。 |
/sbin | Linux有非常多指令是用來設(shè)定系統(tǒng)環(huán)境的,這些指令只有root才能夠利用來設(shè)定系統(tǒng),其他使用者最多只能用來查詢而已。放在/sbin底下的為開機(jī)過程中所需要的,里面包括了開機(jī)、修復(fù)、還原系統(tǒng)所需要的指令。至于某些伺服器軟體程式,一般則放置到/usr/sbin/當(dāng)中。至于本機(jī)自行安裝的軟體所產(chǎn)生的系統(tǒng)執(zhí)行檔(system binary),則放置到/usr/local/sbin/當(dāng)中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。 |
/srv | srv可以視為service的縮寫,是一些網(wǎng)路服務(wù)啟動之后,這些服務(wù)所需要取用的資料目錄。常見的服務(wù)例如WWW, FTP等等。舉例來說,WWW伺服器需要的網(wǎng)頁資料就可以放置在/srv/www/里面。呵呵,看來平時我們編寫的代碼應(yīng)該放到這里了。 |
/tmp | 這是讓一般使用者或者是正在執(zhí)行的程序暫時放置檔案的地方。這個目錄是任何人都能夠存取的,所以你需要定期的清理一下。當(dāng)然,重要資料不可放置在此目錄啊。因為FHS甚至建議在開機(jī)時,應(yīng)該要將/tmp下的資料都刪除。 |
目錄 | 應(yīng)放置檔案內(nèi)容 |
---|
3. Linux文件屬性:
Linux文件屬性一共7種:
普通文件類型 | - | Linux中最多的一種文件類型, 包括 純文本文件(ASCII);二進(jìn)制文件(binary);數(shù)據(jù)格式的文件(data);各種壓縮文件.第一個屬性為 [-] |
目錄文件 | d | 就是目錄, 能用 # cd 命令進(jìn)入的。第一個屬性為 [d],例如 [drwxrwxrwx] |
塊設(shè)備文件 | b | 塊設(shè)備文件 :就是存儲數(shù)據(jù)以供系統(tǒng)存取的接口設(shè)備,簡單而言就是硬盤。例如一號硬盤的代碼是 /dev/hda1等文件。第一個屬性為 [b] |
字符設(shè)備 | c | 字符設(shè)備文件:即串行端口的接口設(shè)備,例如鍵盤、鼠標(biāo)等等。第一個屬性為 [c] |
套接字文件 | s | 這類文件通常用在網(wǎng)絡(luò)數(shù)據(jù)連接??梢詥右粋€程序來監(jiān)聽客戶端的要求,客戶端就可以通過套接字來進(jìn)行數(shù)據(jù)通信。第一個屬性為 [s],最常在 /var/run目錄中看到這種文件類型 |
管道文件 | p | FIFO也是一種特殊的文件類型,它主要的目的是,解決多個程序同時存取一個文件所造成的錯誤。FIFO是first-in-first-out(先進(jìn)先出)的縮寫。第一個屬性為 [p] |
鏈接文件 | l | 類似Windows下面的快捷方式。第一個屬性為 [l],例如 [lrwxrwxrwx] |
類型 | 字母 | 說明 |
---|
1、普通文件
使用 ls -l 命令后,
第一列第一個字符為 "-" 的文件為普通文件.
2、目錄文件
Linux 中的目錄也是文件,目錄文件中保存著該目錄下其他文件的 inode 號 和文件名等信息,目錄文件中的每個數(shù)據(jù)項都是指向某個文件 inode 號的鏈接,刪除文件名就等于刪除與之對應(yīng)的鏈接。目錄文件的字體顏色是藍(lán)色,使用 ls -l 命令查看,第一個字符為"d"(directory)。
目錄文件的權(quán)限:
1)r 表明該目錄文件具有可讀權(quán)限,即可以使用 ls 命令查看該目錄的存儲情況;
2)w 表明該目錄文件具有寫權(quán)限,即可以往該目錄下添加、修改、刪除文件;
3)x 表明該目錄文件具有可執(zhí)行文件,即可以使用 cd 命令進(jìn)入到該目錄下。
可以使用 chmod 指令來改變文件的權(quán)限。
3、鏈接文件
鏈接文件一般指的是一個文件的軟連接(或符號鏈接),使用 ls -l 命令查看,第一個符號為 "l",文件名為淺藍(lán)色,如下:
這里,test_softlink 就是一個鏈接文件,從結(jié)果上還可以看到它是文件 test.txt 的軟鏈接,刪除原文件 test.txt 的話,對應(yīng)的軟鏈接文件 test_softlink 也會消失??梢允褂?ln 命令來創(chuàng)建一個文件的鏈接文件:
1)軟鏈接軟鏈接(又稱符號鏈接),使用 ln -s file file_softlink 命令可以創(chuàng)建一個文件的軟鏈接文件:
ln-stest.txttest_softlink
軟鏈接相當(dāng)于給原文件創(chuàng)建了一個快捷方式,如果刪除原文件,則對應(yīng)的軟鏈接文件也會消失。
2)硬鏈接硬鏈接,相當(dāng)于給原文件取了個別名,其實兩者是同一個文件,刪除二者中任何一個,另一個不會消失;對其中任何一個進(jìn)行更改,另一個的內(nèi)容也會隨之改變,因為這兩個本質(zhì)上是同一個文件,只是名字不同。使用 ls -i 命令查看,可以發(fā)現(xiàn)硬鏈接的兩個文件的 inode 號是一樣的:
同樣的,使用 ln 命令可以創(chuàng)建一個文件的硬鏈接:
lntest.txttest_hardlink
4、設(shè)備文件
Linux 中的硬件設(shè)備如硬盤、鼠標(biāo)等也都被表示為文件,即為設(shè)備文件。
設(shè)備文件一般存放在 /dev/ 目錄下,文件名為黃色,如下:
設(shè)備文件分兩種:
1)塊設(shè)備文件:
塊設(shè)備文件支持以塊(block)為單位的訪問方式。在 EXT4 文件系統(tǒng)中,一個 block 通常為 4KB 的大小,也就是說每次可以存取 4096(或其整數(shù)倍) 個字節(jié)的數(shù)據(jù)。應(yīng)用程序可以隨機(jī)訪問塊設(shè)備文件的數(shù)據(jù),程序可以自行確定數(shù)據(jù)的位置,硬盤、軟盤等都是塊設(shè)備。使用 ls -l 命令查看,塊設(shè)備文件的第一個字符是 "b"(block)。
2)字符設(shè)備文件:
字符設(shè)備文件以字節(jié)流的方式進(jìn)行訪問,由字符設(shè)備驅(qū)動程序來實現(xiàn)這種特性,這通常要用到 open、close、read、write 等系統(tǒng)調(diào)用。字符終端、串口和鍵盤等就是字符設(shè)備。另外,由于字符設(shè)備文件是以文件流的方式進(jìn)行訪問的,因此可以順序讀取,但通常不支持隨機(jī)存取。使用 ls -l 命令查看,字符設(shè)備文件的第一個字符是 "c"(char)。
5、管道文件(FIFO文件)
管道文件主要用于進(jìn)程間通信,使用 ls -l 命令查看,第一個字符為 "p"(pipe)??梢允褂?mkfifo 命令來創(chuàng)建一個管道文件:
mkfifoffo_file
在 FIFO 中可以很好地解決在無關(guān)進(jìn)程間數(shù)據(jù)交換的要求,F(xiàn)IFO 的通信方式類似于在進(jìn)程中使用文件來傳輸數(shù)據(jù),只不過 FIFO 類型的文件同時具有管道的特性,在讀取數(shù)據(jù)時,F(xiàn)IFO 管道中同時清除數(shù)據(jù)。
6、套接字文件
套接字文件,通常指域套接字文件,使用 ls -l 命令查看,第一個字符為 "s"。
域套接字是進(jìn)程間通信(IPC)的一種方法,是可靠的一種IPC通信,是POSIX標(biāo)準(zhǔn)的一個組件,只能用于同一主機(jī)間的通信。
后續(xù)學(xué)習(xí)進(jìn)程間通信需要學(xué)習(xí)該知識。
4. 文件顏色
常見的文件顏色如下:
藍(lán)色:目錄文件
綠色:可執(zhí)行文件
淺藍(lán)色:鏈接文件
紅色:壓縮文件
黃色:字符設(shè)備
灰色:其他文件
四、Linux操作系統(tǒng)命令使用基礎(chǔ)
1、命令格式
$command[option(s)][argument(s)] 命令名空格選項空格參數(shù)
command :命令名
[option(s)] :選項
[argument(s)] :參數(shù)
注意:
在命令行中,每兩個部分之間有空格分隔
每個命令行可使用的最多的命令字符是256個
命令區(qū)分大小寫
不同的命令提示符使用分隔符號 “/”
命令中的參數(shù)/選項可以是多個,并且參數(shù)其實就是要傳入命令程序主函數(shù)main的參數(shù)。
[ ]表示這個內(nèi)容可以不包含,比如 [argument(s)] ,輸入命令時可以不加參數(shù)
2、聯(lián)機(jī)幫助、清屏與歷史記錄命令
1)聯(lián)機(jī)幫助
遇到一些函數(shù)和命令,不知道含義時可以使用命令man來查看幫助信息。
manls man-kkeyword
man手冊根據(jù)內(nèi)容分為9個手冊,可以使用下面命令查看
manman
man文檔的分類編號
1-commands(普通的命令) 2-systemcalls(系統(tǒng)調(diào)用) 3-librarycalls(庫函數(shù)) 4 - special files(特殊文件:/dev下設(shè)備文件) 5-fileformatsandconvertions(文件格式) 6-gamesforlinux(游戲和娛樂) 7-macropackagesandconventions(雜項) 8-systemmanagementcommands(管理員命令) 9-其他(Linux特定,用來存放內(nèi)核例行程序的文檔)
使用-k參數(shù),man可以在所有的man文檔和簡介中查找符合條件的命令。
peng@ubuntu:~/test$man-kbash bash(1)-GNUBourne-AgainSHell bash-builtins(7)-bashbuilt-incommands,seebash(1) bashbug(1)-reportabuginbash builtins(7)-bashbuilt-incommands,seebash(1) dh_bash-completion(1)-installbashcompletionsforpackage rbash(1)-restrictedbash,seebash(1)
有的關(guān)鍵詞在系統(tǒng)中對應(yīng)多個手冊,使用-f參數(shù),用于查找同名的手冊:
peng@ubuntu:~/test$man-ftime time(7)-overviewoftimeandtimers time(1)-runprogramsandsummarizesystemresourceusage time(2)-gettimeinseconds
2)清屏 clear
清屏使用命令clear或者使用快捷鍵:ctrl + l
3)歷史紀(jì)錄 history(history -n)
這是一個非常有用的命令,想知道之前輸入過的所有命令,就可以用他。
history:查看最近使用的命令,最多500條 historyn :曾經(jīng)使用的最近n條命令 !n:執(zhí)行最近第n條命令 !! :執(zhí)行最近使用的第一條命令 方向上鍵:執(zhí)行上一條命令 方向下鍵:執(zhí)行下一條命令
五、文件管理
1)查看文件目錄
下面這幾個命令是使用最頻繁的命令:
pwd | 顯示當(dāng)前工作目錄 |
cd [要改變的目錄] | 改變目錄 |
ls | 列出當(dāng)前目錄的文件和子目錄 |
file | 辨識文件類型 |
命令 | 說明 |
---|
cd
-d 使用Socket的SO_DEBUG功能。 -c<完成次數(shù)>設(shè)置完成要求回應(yīng)的次數(shù)。 -f 極限檢測。 -i<間隔秒數(shù)>指定收發(fā)信息的間隔時間。 -I<網(wǎng)絡(luò)界面>使用指定的網(wǎng)絡(luò)界面送出數(shù)據(jù)包。 -l<前置載入>設(shè)置在送出要求信息之前,先行發(fā)出的數(shù)據(jù)包。 -n 只輸出數(shù)值。 -p<范本樣式>設(shè)置填滿數(shù)據(jù)包的范本樣式。 -q 不顯示指令執(zhí)行過程,開頭和結(jié)尾的相關(guān)信息除外。 -r 忽略普通的Routing Table,直接將數(shù)據(jù)包送到遠(yuǎn)端主機(jī)上。 -R 記錄路由過程。 -s<數(shù)據(jù)包大小>設(shè)置數(shù)據(jù)包的大小。 -t<存活數(shù)值>設(shè)置存活數(shù)值TTL的大小。 -v 詳細(xì)顯示指令的執(zhí)行過程。
2、ifconfig
查看和配置當(dāng)前機(jī)器的網(wǎng)絡(luò)參數(shù)信息
語法:
ifconfig[網(wǎng)絡(luò)設(shè)備][downup-allmulti-arp-promisc][add<地址>][del<地址>][
補(bǔ)充說明:ifconfig可設(shè)置網(wǎng)絡(luò)設(shè)備的狀態(tài),或是顯示目前的設(shè)置。
參數(shù):
add<地址>設(shè)置網(wǎng)絡(luò)設(shè)備IPv6的IP地址。 del<地址>刪除網(wǎng)絡(luò)設(shè)備IPv6的IP地址。 down 關(guān)閉指定的網(wǎng)絡(luò)設(shè)備。
ifconfig -a //顯示產(chǎn)看當(dāng)前機(jī)器的IP、Netmask、Gateway等網(wǎng)絡(luò)信息 ifconfigeth0up(down)//激活與關(guān)閉某個網(wǎng)絡(luò)適配器 ifconfigeth0[ipaddress]netmask[address]//設(shè)置IP和子網(wǎng)掩碼
十、Linux應(yīng)用程序的安裝與卸載基礎(chǔ)
1、Linux安裝包
Linux安裝包的通常是tar的格式,同時也支持自己定義的格式。在redhat中軟件安裝包的格式通常是rpm在Ubuntu中軟件安裝包的格式通常是deb
2、 安裝包命名通用規(guī)則
在Linux中常用的命名格式是:
軟件名稱版本號-修訂版本號體系架構(gòu).擴(kuò)展名
3、安裝包的離線安裝及卸載
dpkg dpkg-i安裝 dpkg-p卸載
源文件安裝的過程:
配置configure>>編譯make>>安裝makeinstall
4、在線安裝及卸載
安裝 :
apt-getinstall
卸載
apt-getremove-purge
十一、VIM編譯工具
Vim是從 vi 發(fā)展出來的一個文本編輯器。代碼補(bǔ)完、編譯及錯誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。
簡單的來說, vi 是老式的字處理器,不過功能已經(jīng)很齊全了,但是還是有可以進(jìn)步的地方。vim 則可以說是程序開發(fā)者的一項很好用的工具。
連 vim 的官方網(wǎng)站 (http://www.vim.org) 自己也說 vim 是一個程序開發(fā)工具而不是文字處理軟件。
1、vim優(yōu)勢:
a)所有Unix Like系統(tǒng)都會內(nèi)置vi文本編輯器,其他的文本編輯器則不一定會存在;
b)很多軟件的編輯接口都會主動調(diào)用vi
c)vi具有程序編輯能力,可以主動以字體顏色辨別語法的正確性,方便程序設(shè)計;
d)程序簡單編輯速度快。
2、vi的模式:
基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)。這三種模式的作用分別是:
1)命令模式:
用戶剛剛啟動 vi/vim,便進(jìn)入了命令模式。
此狀態(tài)下敲擊鍵盤動作會被Vim識別為命令,而非輸入字符。比如我們此時按下i,并不會輸入一個字符,i被當(dāng)作了一個命令。
以下是常用的幾個命令:
i 切換到輸入模式,以輸入字符。 x 刪除當(dāng)前光標(biāo)所在處的字符。 :切換到底線命令模式,以在最底一行輸入命令。
若想要編輯文本:啟動Vim,進(jìn)入了命令模式,按下i,切換到輸入模式。
命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。
2)輸入模式
在命令模式下按下i就進(jìn)入了輸入模式。
在輸入模式中,可以使用以下按鍵:
字符按鍵以及Shift組合,輸入字符
ENTER,回車鍵,換行 BACKSPACE,退格鍵,刪除光標(biāo)前一個字符 DEL,刪除鍵,刪除光標(biāo)后一個字符 方向鍵,在文本中移動光標(biāo) HOME/END,移動光標(biāo)到行首/行尾 PageUp/PageDown,上/下翻頁 Insert,切換光標(biāo)為輸入/替換模式,光標(biāo)將變成豎線/下劃線 ESC,退出輸入模式,切換到命令模式
3)底行命令模式
在命令模式下按下:(英文冒號)就進(jìn)入了底線命令模式。
底線命令模式可以輸入單個或多個字符的命令,可用的命令非常多。
在底線命令模式中,基本的命令有(已經(jīng)省略了冒號):
q退出程序 w保存文件 按ESC鍵可隨時退出底線命令模式。
簡單的說,我們可以將這三個模式想成底下的圖標(biāo)來表示:
3. vim cheat sheet
下圖就是赫赫有名的vim cheat sheet,一圖包含了大部分常用的vim命令,建議保存
4. 舉例
如果你想要使用 vim 來建立一個名為 peng.c 的文件時,輸入下面命令:
peng@ubuntu:~$vimpeng.c
按下 i 進(jìn)入輸入模式(也稱為編輯模式),開始編輯文字
在一般模式之中,只要按下 i, o, a 等字符就可以進(jìn)入輸入模式了!
在編輯模式當(dāng)中,你可以發(fā)現(xiàn)在左下角狀態(tài)欄中會出現(xiàn) –INSERT- 的字樣,那就是可以輸入任意字符的提示。
這個時候,鍵盤上除了 Esc 這個按鍵之外,其他的按鍵都可以視作為一般的輸入按鈕了,所以你可以進(jìn)行任何的編輯。
按下 ESC 按鈕回到一般模式
好了,假設(shè)我已經(jīng)按照上面的樣式給他編輯完畢了,那么應(yīng)該要如何退出呢?是的!沒錯!就是給他按下 Esc 這個按鈕即可!馬上你就會發(fā)現(xiàn)畫面左下角的 – INSERT – 不見了!
在一般模式中按下 :wq 儲存后離開 vi
OK,我們要存檔了,存盤并離開的指令很簡單,輸入 :wq 即可保存離開!
OK! 這樣我們就成功創(chuàng)建了一個peng.c 的文件。
5. 快捷鍵說明
移動光標(biāo)的方法
h 或 向左箭頭鍵(←) | 光標(biāo)向左移動一個字符 |
j 或 向下箭頭鍵(↓) | 光標(biāo)向下移動一個字符 |
k 或 向上箭頭鍵(↑) | 光標(biāo)向上移動一個字符 |
l 或 向右箭頭鍵(→) | 光標(biāo)向右移動一個字符 |
操作 | 含義 |
---|
如果你將右手放在鍵盤上的話,你會發(fā)現(xiàn) hjkl 是排列在一起的,因此可以使用這四個按鈕來移動光標(biāo)。如果想要進(jìn)行多次移動的話,例如向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵, 亦即加上想要進(jìn)行的次數(shù)(數(shù)字)后,按下動作即可!
[Ctrl] + [f] | 屏幕『向下』移動一頁,相當(dāng)于 [Page Down]按鍵 (常用) |
[Ctrl] + [b] | 屏幕『向上』移動一頁,相當(dāng)于 [Page Up] 按鍵 (常用) |
[Ctrl] + [d] | 屏幕『向下』移動半頁 |
[Ctrl] + [u] | 屏幕『向上』移動半頁 |
+ | 光標(biāo)移動到非空格符的下一行 |
- | 光標(biāo)移動到非空格符的上一行 |
n | 那個 n 表示『數(shù)字』,例如 20 。按下數(shù)字后再按空格鍵,光標(biāo)會向右移動這一行的 n 個字符。例如 20則光標(biāo)會向后面移動 20 個字符距離。 |
0 或功能鍵[Home] | 這是數(shù)字『 0 』:移動到這一行的最前面字符處 (常用) |
$ 或功能鍵[End] | 移動到這一行的最后面字符處(常用) |
H | 光標(biāo)移動到這個屏幕的最上方那一行的第一個字符 |
M | 光標(biāo)移動到這個屏幕的中央那一行的第一個字符 |
L | 光標(biāo)移動到這個屏幕的最下方那一行的第一個字符 |
G | 移動到這個檔案的最后一行(常用) |
nG | n 為數(shù)字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu) |
gg | 移動到這個檔案的第一行,相當(dāng)于 1G ??!(常用) |
n | n 為數(shù)字。光標(biāo)向下移動 n 行(常用) |
快捷鍵 | 含義 |
---|
搜索替換
/word | 向光標(biāo)之下尋找一個名稱為 word 的字符串。例如要在檔案內(nèi)搜尋 vbird 這個字符串,就輸入 /vbird 即可!(常用) |
?word | 向光標(biāo)之上尋找一個字符串名稱為 word 的字符串。 |
n | 這個 n 是英文按鍵。代表重復(fù)前一個搜尋的動作。舉例來說, 如果剛剛我們執(zhí)行 /vbird 去向下搜尋 vbird 這個字符串,則按下 n 后,會向下繼續(xù)搜尋下一個名稱為 vbird 的字符串。如果是執(zhí)行 ?vbird 的話,那么按下 n 則會向上繼續(xù)搜尋名稱為 vbird 的字符串! |
N | 這個 N 是英文按鍵。與 n 剛好相反,為『反向』進(jìn)行前一個搜尋動作。例如 /vbird 后,按下 N 則表示『向上』搜尋 vbird 。 |
快捷鍵 | 含義 |
---|
使用 /word 配合 n 及 N 是非常有幫助的!可以讓你重復(fù)的找到一些你搜尋的關(guān)鍵詞!
:n1,n2s/word1/word2/g | n1 與 n2 為數(shù)字。在第 n1 與 n2 行之間尋找 word1 這個字符串,并將該字符串取代為 word2 !舉例來說,在 100 到 200 行之間搜尋 vbird 并取代為 VBIRD 則:『:100,200s/vbird/VBIRD/g』。(常用) |
:1,$s/word1/word2/g 或 :%s/word1/word2/g | 從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2 !(常用) |
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc | 從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2 !且在取代前顯示提示字符給用戶確認(rèn) (confirm) 是否需要取代!(常用) |
快捷鍵 | 含義 |
---|
刪除、復(fù)制與貼上
x, X | 在一行字當(dāng)中,x 為向后刪除一個字符 (相當(dāng)于 [del] 按鍵), X 為向前刪除一個字符(相當(dāng)于 [backspace] 亦即是退格鍵) (常用) |
nx | n 為數(shù)字,連續(xù)向后刪除 n 個字符。舉例來說,我要連續(xù)刪除 10 個字符, 『10x』。 |
dd | 刪除游標(biāo)所在的那一整行(常用) |
ndd | n 為數(shù)字。刪除光標(biāo)所在的向下 n 行,例如 20dd 則是刪除 20 行 (常用) |
d1G | 刪除光標(biāo)所在到第一行的所有數(shù)據(jù) |
dG | 刪除光標(biāo)所在到最后一行的所有數(shù)據(jù) |
d$ | 刪除游標(biāo)所在處,到該行的最后一個字符 |
d0 | 那個是數(shù)字的 0 ,刪除游標(biāo)所在處,到該行的最前面一個字符 |
yy | 復(fù)制游標(biāo)所在的那一行(常用) |
nyy | n 為數(shù)字。復(fù)制光標(biāo)所在的向下 n 行,例如 20yy 則是復(fù)制 20 行(常用) |
y1G | 復(fù)制游標(biāo)所在行到第一行的所有數(shù)據(jù) |
yG | 復(fù)制游標(biāo)所在行到最后一行的所有數(shù)據(jù) |
y0 | 復(fù)制光標(biāo)所在的那個字符到該行行首的所有數(shù)據(jù) |
y$ | 復(fù)制光標(biāo)所在的那個字符到該行行尾的所有數(shù)據(jù) |
p, P | p 為將已復(fù)制的數(shù)據(jù)在光標(biāo)下一行貼上,P 則為貼在游標(biāo)上一行!舉例來說,我目前光標(biāo)在第 20 行,且已經(jīng)復(fù)制了 10 行數(shù)據(jù)。則按下 p 后, 那 10 行數(shù)據(jù)會貼在原本的 20 行之后,亦即由 21 行開始貼。但如果是按下 P 呢?那么原本的第 20 行會被推到變成 30 行。(常用) |
J | 將光標(biāo)所在行與下一行的數(shù)據(jù)結(jié)合成同一行 |
c | 重復(fù)刪除多個數(shù)據(jù),例如向下刪除 10 行,[ 10cj ] |
u | 復(fù)原前一個動作。(常用) |
. | 重復(fù)前一個動作的意思。如果你想要重復(fù)刪除、重復(fù)貼上等等動作,按下小數(shù)點『.』就好了!(常用) |
[Ctrl]+r | 重做上一個動作。(常用) |
快捷鍵 | 含義 |
---|
這個 u 與 [Ctrl]+r 是很常用的指令!一個是復(fù)原,另一個則是重做一次~ 利用這兩個功能按鍵,你的編輯,嘿嘿!很快樂的啦!
一般模式切換到編輯模式的可用的按鈕說明
進(jìn)入輸入或取代的編輯模式
i, I | 進(jìn)入輸入模式(Insert mode):i 為『從目前光標(biāo)所在處輸入』, I 為『在目前所在行的第一個非空格符處開始輸入』。(常用) |
a, A | 進(jìn)入輸入模式(Insert mode):a 為『從目前光標(biāo)所在的下一個字符處開始輸入』, A 為『從光標(biāo)所在行的最后一個字符處開始輸入』。(常用) |
o, O | 進(jìn)入輸入模式(Insert mode):這是英文字母 o 的大小寫。o 為在目前光標(biāo)所在的下一行處輸入新的一行;O 為在目前光標(biāo)所在的上一行處輸入新的一行!(常用) |
r, R | 進(jìn)入取代模式(Replace mode):r 只會取代光標(biāo)所在的那一個字符一次;R會一直取代光標(biāo)所在的文字,直到按下 ESC 為止;(常用) |
[Esc] | 退出編輯模式,回到一般模式中(常用) |
快捷鍵 | 含義 |
---|
上面這些按鍵中,在 vi 畫面的左下角處會出現(xiàn)『--INSERT--』或『--REPLACE--』的字樣。由名稱就知道該動作了吧??!特別注意的是,我們上面也提過了,你想要在檔案里面輸入字符時, 一定要在左下角處看到 INSERT 或 REPLACE 才能輸入。
一般模式切換到指令行模式的可用的按鈕說明
指令行的儲存、離開等指令
:w | 將編輯的數(shù)據(jù)寫入硬盤檔案中(常用) |
:w! | 若文件屬性為『只讀』時,強(qiáng)制寫入該檔案。不過,到底能不能寫入, 還是跟你對該檔案的檔案權(quán)限有關(guān)??! |
:q | 離開 vi (常用) |
:q! | 若曾修改過檔案,又不想儲存,使用 ! 為強(qiáng)制離開不儲存檔案。 |
:wq | 儲存后離開,若為 :wq! 則為強(qiáng)制儲存后離開 (常用) |
ZZ | 這是大寫的 Z 喔!如果修改過,保存當(dāng)前文件,然后退出!效果等同于(保存并退出) |
ZQ | 不保存,強(qiáng)制退出。效果等同于 :q!。 |
:w [filename] | 將編輯的數(shù)據(jù)儲存成另一個檔案(類似另存新檔) |
:r [filename] | 在編輯的數(shù)據(jù)中,讀入另一個檔案的數(shù)據(jù)。亦即將 『filename』 這個檔案內(nèi)容加到游標(biāo)所在行后面 |
:n1,n2 w [filename] | 將 n1 到 n2 的內(nèi)容儲存成 filename 這個檔案。 |
:! command | 暫時離開 vi 到指令行模式下執(zhí)行 command 的顯示結(jié)果!例如:『:! ls /home』即可在 vi 當(dāng)中查看 /home 底下以 ls 輸出的檔案信息! |
快捷鍵 | 含義 |
---|
vim 環(huán)境的變更
:set nu | 顯示行號,設(shè)定之后,會在每一行的前綴顯示該行的行號(常用) |
:set nonu | 與 set nu 相反,為取消行號! |
快捷鍵 | 含義 |
---|
cd //回到當(dāng)前用戶主目錄 cd ~//回到當(dāng)前用戶主目錄 cd ~[用戶名] //進(jìn)入指定用戶主目錄
file功能說明:辨識文件類型。
語法:file [-beLvz][-f 《名稱文件》][-m 《魔法數(shù)字文件》…][文件或目錄…]
參數(shù):
-b 列出辨識結(jié)果時,不顯示文件名稱。 -c 詳細(xì)顯示指令執(zhí)行過程,便于排錯或分析程序執(zhí)行的情形。 -f《名稱文件》 指定名稱文件,其內(nèi)容有一個或多個文件名稱呢感,讓file依序辨識這些文件,格式為每列一個文件名稱。 -L 直接顯示符號連接所指向的文件的類別。 -m《魔法數(shù)字文件》 指定魔法數(shù)字文件。 -v 顯示版本信息。 -z 嘗試去解讀壓縮文件的內(nèi)容。
補(bǔ)充說明:通過file指令,我們得以辨識該文件的類型。
peng@ubuntu:~/test$ file wait.c wait.c: ASCII text peng@ubuntu:~/test$ file fifo_file fifo_file: fifo (named pipe)
2) 文件路徑
什么是文件的路徑?就是文件存放的地方,可以聯(lián)想為 文件的“家”。
在Linux中,存在著絕對路徑和相對路徑:
絕對路徑:
路徑的寫法一定是由根目錄 / 寫起的,例如 /usr/local/mysql
相對路徑:
路徑的寫法不是由根目錄 / 寫起的。
例如 首先用戶進(jìn)入到 /home,然后再進(jìn)入到peng,執(zhí)行的命令為
#cd /home #cd peng
此時用戶所在的路徑為 /home/peng。
第一個cd命令后緊跟/home,前面有斜杠,是絕對路徑;而第二個cd命令后緊跟peng,前面沒有斜杠,表示從當(dāng)前目錄下找peng這個目錄,這個peng是相對于/home目錄來講的,所以稱為相對路徑。
3)創(chuàng)建和刪除文件目錄
1、創(chuàng)建文件touch
功能說明:
文件名不存在,則創(chuàng)建一個新的空文件 如果文件名存在,更新該文件或者目錄的修改訪問時間,內(nèi)容不變。
語法:
touch [-acfm][-d 《日期時間》][-r 《參考文件或目錄》][-t 《日期時間》][–help] [–version][文件或目錄…] 或 touch [-acfm][–help][–version][日期時間][文件或目錄…]
補(bǔ)充說明:使用touch指令可更改文件或目錄的日期時間,包括存取時間和更改時間。
參數(shù):
-a或–time=atime或–time=access或–time=use 只更改存取時間。 -c或–no-create 不建立任何文件。 -d《時間日期》 使用指定的日期時間,而非現(xiàn)在的時間。 -f 此參數(shù)將忽略不予處理,僅負(fù)責(zé)解決BSD版本touch指令的兼容性問題。 -m或–time=mtime或–time=modify 只更改變動時間。 -r《參考文件或目錄》 把指定文件或目錄的日期時間,統(tǒng)統(tǒng)設(shè)成和參考文件或目錄的日期時間相同。 -t《日期時間》 使用指定的日期時間,而非現(xiàn)在的時間。 –help 在線幫助。 –version 顯示版本信息。
2、創(chuàng)建目錄mkdir
功能說明:
建立目錄
語法:
mkdir [-p][–help][–version][-m 《目錄屬性》][目錄名稱]
補(bǔ)充說明:mkdir可建立目錄并同時設(shè)置目錄的權(quán)限。
參數(shù):
-m《目錄屬性》或–mode《目錄屬性》 建立目錄時同時設(shè)置目錄的權(quán)限。 -p或–parents 若所要建立目錄的上層目錄目前尚未建立,則會一并建立上層目錄。 –help 顯示幫助。 –verbose 執(zhí)行時顯示詳細(xì)的信息。 –version 顯示版本信息。
3、刪除文件rm
功能說明:
刪除文件或目錄。
語法:
rm [-dfirv][–help][–version][文件或目錄…]
補(bǔ)充說明:執(zhí)行rm指令可刪除文件或目錄,如欲刪除目錄必須加上參數(shù)”-r”,否則預(yù)設(shè)僅會刪除文件。
參數(shù):
-d或–directory 直接把欲刪除的目錄的硬連接數(shù)據(jù)刪成0,刪除該目錄。 -f或–force 強(qiáng)制刪除文件或目錄。 -i或–interactive 刪除既有文件或目錄之前先詢問用戶。 -r或-R或–recursive 遞歸處理,將指定目錄下的所有文件及子目錄一并處理。 -v或–verbose 顯示指令執(zhí)行過程。 –help 在線幫助。 –version 顯示版本信息。
4、刪除目錄
rmdir(remove directory)
功能說明:刪除目錄。
語法:
rmdir [-p][–help][–ignore-fail-on-non-empty][–verbose][–version][目錄…]
補(bǔ)充說明:當(dāng)有空目錄要刪除時,可使用rmdir指令。
參數(shù):
-p或–parents 刪除指定目錄后,若該目錄的上層目錄已變成空目錄,則將其一并刪除。 –help 在線幫助。 –ignore-fail-on-non-empty 忽略非空目錄的錯誤信息。 –verbose 顯示指令執(zhí)行過程。 –version 顯示版本信息。
3)顯示文件內(nèi)容
1. cat
功能:
把檔案串連接后傳到基本輸出到屏幕或加 》 fileName 到另一個檔案
使用權(quán)限:
所有使用者
語法:
cat [-AbeEnstTuv] [–help] [–version] fileName
參數(shù):
-n 或 –number 由 1 開始對所有輸出的行數(shù)編號 -b 或 –number-nonblank 和 -n 相似,只不過對于空白行不編號 -s 或 –squeeze-blank 當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行 -v 或 –show-nonprinting
范例:
cat -n textfile1 》 textfile2 把 textfile1 的檔案內(nèi)容加上行號后輸入 textfile2 這個檔案里 cat -b textfile1 textfile2 》》 textfile3 把 textfile1 和 textfile2 的檔案內(nèi)容加上行號(空白行不加)之后將內(nèi)容附加到 textfile3 里。 cat 《 /dev/stdin 》 1.txt //利用輸入重定向 CRTL+D 結(jié)束輸入 cat /dev/null 》 1.txt //輸出重定向進(jìn)行清空
2. head
功能:
查找文件的前多少行
語法:
head [-n] filename
3. tail
功能:
查找文件的莫問多少行
語法:
tail [-n] filename
4. more
功能:
分屏顯示
用法
more filename
4)拷貝和移動文件目錄
1. cp
功能說明:
cp 源文件 目標(biāo)文件 將源文件復(fù)制為目標(biāo)文件或目錄。
語法:
cp [-abdfilpPrRsuvx][-S 《備份字尾字符串》][-V 《備份方式》][–help][–spares=《使用時機(jī)》][–version][源文件或目錄][目標(biāo)文件或目錄] [目的目錄]
補(bǔ)充說明:cp指令用在復(fù)制文件或目錄,如同時指定兩個以上的文件或目錄,且最后的目的地是一個已經(jīng)存在的目錄,則它會把前面指定的所有文件或目錄復(fù)制到該目錄中。若同時指定多個文件或目錄,而最后的目的地并非是一個已存在的目錄,則會出現(xiàn)錯誤信息。
2. mv
功能說明:
mv [源文件、目錄] [目的文件、目錄] 移動或更名現(xiàn)有的文件或目錄。
語法:
mv [-bfiuv][–help][–version][-S 《附加字尾》][-V 《方法》][源文件或目錄][目標(biāo)文件或目錄]
補(bǔ)充說明:mv可移動文件或目錄,或是更改文件或目錄的名稱。
參數(shù):
-b或–backup 若需覆蓋文件,則覆蓋前先行備份。 -f或–force 若目標(biāo)文件或目錄與現(xiàn)有的文件或目錄重復(fù),則直接覆蓋現(xiàn)有的文 件或目錄。 -i或–interactive 覆蓋前先行詢問用戶。 -S《附加字尾》或 –suffix=《附加字尾》 與-b參數(shù)一并使用,可指定備份文件的所要附加的字尾。 -u或–update 在移動或更改文件名時,若目標(biāo)文件已存在,且其文件日期比源文件新,則不覆蓋目標(biāo)文件。 -v或–verbose 執(zhí)行時顯示詳細(xì)的信息。 -V=《方法》或 –version-control=《方法》 與-b參數(shù)一并使用,可指定備份的方法。 –help 顯示幫助。 –version 顯示版本信息
5)文件目錄權(quán)限
1. 權(quán)限
文件的權(quán)限:
以普通文件為例,使用 ls -l 命令,可以看到結(jié)果的第一列是 -rwxrwxrwx 的形式,其中第一個字符 “-” 表示這個文件為普通文件,它也可以是其他的字符,不同的字符代表不同類型的文件。其后的一串字符表明了該文件的權(quán)限,其中:
1)r 表明該文件具有可讀權(quán)限,若該位置為 “-” ,則表明文件不可讀;
2)w 表明該文件具有寫權(quán)限,若該位置為 “-” ,則表明文件不可寫;
3)x 表明該文件具有可執(zhí)行權(quán)限,若該位置為 “-” ,則表明文件不具有可執(zhí)行權(quán)限;
4)第一個 rwx 表示該文件的所有者對該文件的權(quán)限;第二個 rwx 表示該文件所屬組對該文件的權(quán)限;第三個 rwx 表示其他用戶對該文件的權(quán)限。
2. 權(quán)限所屬對象
文件所有者:生成文件或目錄的當(dāng)前人,權(quán)限最高,用u表示。文件所屬用戶組:系統(tǒng)管理員分配的同組一個或幾個人,用g表示。其他人對此文件的權(quán)限:除擁有者、用戶組以外的人,用o 表示。所有人:包括擁有者,所屬用戶組、其他用戶,用a表示
-rwxr(所有者) -xr(所在組) -x(其他人)
3.修改屬性chmod
chmod命令用來修改文件目錄的訪問權(quán)限,修改權(quán)限的前提條件是在修改權(quán)限時具有可操作權(quán)限。
(a)用字母表示權(quán)限Who(u、g、o、a)+cp(“=”設(shè)置權(quán)限“+”添加權(quán)限“-”刪除權(quán)限)+permission(“r”讀權(quán)限“w”寫權(quán)限“x”操作權(quán)限)例如:
chmod g=wr 1.c; chmod u+w,g-w,o=wr 1.c
(b)用八進(jìn)制數(shù)字表示權(quán)限
r w x 0 0 0 無權(quán)限 1 1 1 有權(quán)限 R:4,w;2,x:1
例如 :
Chmod 777 build 將build的權(quán)限成所有人rwx
注意:在Ubuntu中建立的文件默認(rèn)權(quán)限是664
4. Chown改變文件的所屬者和所屬組
chown(英文全拼:change owner)命令用于設(shè)置文件所有者和文件關(guān)聯(lián)組的命令。
語法
chown [-cfhvR] [--help] [--version] user[:group] file.。。
參數(shù) :
user : 新的文件擁有者的使用者 ID group : 新的文件擁有者的使用者組(group) -c : 顯示更改的部分的信息 -f : 忽略錯誤信息 -h :修復(fù)符號鏈接 -v : 顯示詳細(xì)的處理信息 -R : 處理指定目錄以及其子目錄下的所有文件 --help : 顯示輔助說明 --version : 顯示版本
實例:把 /var/run/httpd.pid 的所有者設(shè)置 root:
chown root /var/run/httpd.pid
5. chgrp改變文件或目錄所屬組
Linux chgrp(英文全拼:change group)命令用于變更文件或目錄的所屬群組。
與 chown 命令不同,chgrp 允許普通用戶改變文件所屬的組,只要該用戶是該組的一員。
語法
chgrp [-cfhRv][--help][--version][所屬群組][文件或目錄。。.] 或 chgrp [-cfhRv][--help][--reference=《參考文件或目錄》][--version][文件或目錄。。.]
參數(shù)說明:
-c或--changes 效果類似“-v”參數(shù),但僅回報更改的部分。 -f或--quiet或--silent 不顯示錯誤信息。 -h或--no-dereference 只對符號連接的文件作修改,而不更動其他任何相關(guān)文件。 -R或--recursive 遞歸處理,將指定目錄下的所有文件及子目錄一并處理。 -v或--verbose 顯示指令執(zhí)行過程。 --help 在線幫助。 --reference=《參考文件或目錄》 把指定文件或目錄的所屬群組全部設(shè)成和參考文件或目錄的所屬群組相同。 --version 顯示版本信息。
Chown、chgroup使用頻率較低,了解即可。
6)find查找文件
Linux find 命令用來在指定目錄下查找文件。任何位于參數(shù)之前的字符串都將被視為欲查找的目錄名。
如果使用該命令時,不設(shè)置任何參數(shù),則 find 命令將在當(dāng)前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進(jìn)行顯示。
我們有時候還要模糊查找某個文件,比如根據(jù)文件的后綴名,文件創(chuàng)建時間,文件大小等等。
語法:
find path -option [ -print ] [ -exec -ok command ] {} ;
find 根據(jù)下列規(guī)則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 之前的部份為 path,之后的是 expression。
如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 為預(yù)設(shè) expression。
expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。
參數(shù)說明:
-name name, -iname name : 文件名稱符合 name 的文件。iname 會忽略大小寫 -user 按照用戶(文件的屬主) -size n : 文件大小 是 n 單位,b 代表 512 位元組的區(qū)塊,c 表示字元數(shù),k 表示 kilo bytes,w 是二個位元組。 -mtime 按照最后一次修改時間 -atime 按照最后一次訪問時間 -perm :按照文件的權(quán)限 -type typen : 查找文件類型為typen的文件 c: 字符設(shè)備 d: 目錄 c: 字型裝置文件 b: 區(qū)塊裝置文件 p: 具名貯列 f: 一般文件 l: 符號連結(jié) s: socket
注意find 的使用條件所查找的路徑必須具有讀權(quán)限。查找選項通過文件屬性來查找。
例如:實例
1.將當(dāng)前目錄及其子目錄下所有文件后綴為 .c 的文件列出來:
# find 。 -name “*.c”
2.將目前目錄及其下子目錄中所有一般文件列出
# find 。 -type f
3.將當(dāng)前目錄及其子目錄下所有最近 20 天內(nèi)更新過的文件列出:
# find 。 -ctime -20
4.查找 /var/log 目錄中更改時間在 7 日以前的普通文件,并在刪除之前詢問它們:
# find /var/log -type f -mtime +7 -ok rm {} ;
5.查找當(dāng)前目錄中文件屬主具有讀、寫權(quán)限,并且文件所屬組的用戶和其他用戶具有讀權(quán)限的文件:
# find 。 -type f -perm 644 -exec ls -l {} ;
6.查找系統(tǒng)中所有文件長度為 0 的普通文件,并列出它們的完整路徑:
# find / -type f -size 0 -exec ls -l {} ;
whereiswhereis命令用于查找文件。該指令會在特定目錄中查找符合條件的文件。這些文件應(yīng)屬于原始代碼、二進(jìn)制文件,或是幫助文件。該指令只能用于查找二進(jìn)制文件、源代碼文件和man手冊頁,一般文件的定位需使用locate命令。
語法
whereis [-bfmsu][-B 《目錄》。。.][-M 《目錄》。。.][-S 《目錄》。。.][文件。。.]
參數(shù):
-b 只查找二進(jìn)制文件。 -B《目錄》 只在設(shè)置的目錄下查找二進(jìn)制文件。 -f 不顯示文件名前的路徑名稱。 -m 只查找說明文件。 -M《目錄》 只在設(shè)置的目錄下查找說明文件。 -s 只查找原始代碼文件。 -S《目錄》 只在設(shè)置的目錄下查找原始代碼文件。 -u 查找不包含指定類型的文件。
實例:
1.使用指令“whereis”查看指令“bash”的位置,輸入如下命令:
peng@ubuntu:~/test$ whereis bash bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
2.查找標(biāo)準(zhǔn)庫頭文件stdio.h位置
peng@ubuntu:~/test$ whereis stdio.h stdio: /usr/include/stdio.h /usr/share/man/man3/stdio.3.gz
7)grep過濾和統(tǒng)計
功能:查出包含某些字符串的結(jié)果,對文件或輸出結(jié)果進(jìn)行過濾,對于大小寫有一定 要求。
語法:
grep [option] string filename
補(bǔ)充說明:grep指令用于查找內(nèi)容包含指定的范本樣式的文件,如果發(fā)現(xiàn)某文件的內(nèi)容符合所指定的范本樣式,預(yù)設(shè)grep指令會把含有范本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為“-”,則grep指令會從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù)。
-A《顯示行數(shù)》:除了顯示匹配 pattern 的那一行外,顯示該行之后的內(nèi)容 -B《顯示行數(shù)》:除了顯示匹配 pattern 的那一行外,顯示該行之前的內(nèi)容 -C《顯示行數(shù)》:除了顯示匹配 pattern 的那一行外,顯示該行前、后的內(nèi)容 -c:統(tǒng)計匹配的行數(shù) -e:同時匹配多個pattern -i:忽略字符的大小寫 -n:顯示匹配的行號 -o:只顯示匹配的字符串 -v:顯示沒有匹配pattern的那一行,相當(dāng)于反向匹配 -w:匹配整個單詞
舉例:
1、在當(dāng)前目錄中,查找后綴有 file 字樣的文件中包含 test 字符串的文件,并打印出該字符串的行。此時,可以使用如下命令:
grep test *file
2、以遞歸的方式查找符合條件的文件。例如,查找指定目錄/etc/acpi 及其子目錄(如果存在子目錄的話)下所有文件中包含字符串“update”的文件,并打印出該字符串所在行的內(nèi)容,使用的命令為:
grep -r update /etc/acpi
3、反向查找。前面各個例子是查找并打印出符合條件的行,通過“-v”參數(shù)可以打印出不符合條件行的內(nèi)容。
查找文件名中包含 test 的文件中不包含test 的行,此時,使用的命令為:
grep -v test *test*
grep應(yīng)用非常頻繁,經(jīng)常還會和正則表達(dá)式一起使用,常用的正則表達(dá)式:
。:任意單個字符 *:任意字符多次 []:指定范圍,如[0-9]、[a-z]、[A-Z]、[0-9a-zA-Z] ^:行首 $:行尾 ^$:空行
舉例假定如下文件:
9)wc計數(shù)
功能:Linux wc命令用于計算字?jǐn)?shù)。利用wc指令我們可以計算文件的Byte數(shù)、字?jǐn)?shù)、或是列數(shù),若不指定文件名稱、或是所給予的文件名為“-”,則wc指令會從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù)。
wc [選項] 文件名
l 統(tǒng)計多少行
w 統(tǒng)計多少單詞
c 統(tǒng)計多少個字符
語法
wc [-clw][--help][--version][文件。。.]
參數(shù):
-c或--bytes或--chars 只顯示Bytes數(shù)。 -l或--lines 顯示行數(shù)。 -w或--words 只顯示字?jǐn)?shù)。 --help 在線幫助。 --version 顯示版本信息。
實例
在默認(rèn)的情況下,wc將計算指定文件的行數(shù)、字?jǐn)?shù),以及字節(jié)數(shù)。使用的命令為:
wc testfile
8) tar文件壓縮解壓
tar命令可以為linux的文件和目錄創(chuàng)建檔案。利用tar命令,可以把一大堆的文件和目錄全部打包成一個文件,這對于備份文件或?qū)讉€文件組合成為一個文件以便于網(wǎng)絡(luò)傳輸是非常有用的。
語法
tar[必要參數(shù)][選擇參數(shù)][文件]
常用命令參數(shù):
-A 新增壓縮文件到已存在的壓縮 -B 設(shè)置區(qū)塊大小 -c 建立新的壓縮文件 -d 記錄文件的差別 -r 添加文件到已經(jīng)壓縮的文件 -u 添加改變了和現(xiàn)有的文件到已經(jīng)存在的壓縮文件 -x 從壓縮的文件中提取文件 -t 顯示壓縮文件的內(nèi)容 -z 支持gzip解壓文件 -j 支持bzip2解壓文件 -Z 支持compress解壓文件 -v 顯示操作過程 -l 文件系統(tǒng)邊界設(shè)置 -k 保留原有文件不覆蓋 -m 保留文件不被覆蓋 -W 確認(rèn)壓縮文件的正確性
常見解壓/壓縮命令tar
解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是壓縮?。?/p>
.gz
解壓1:gunzip FileName.gz 解壓2:gzip -d FileName.gz 壓縮:gzip FileName
.tar.gz 和 .tgz
解壓:tar zxvf FileName.tar.gz 壓縮:tar zcvf FileName.tar.gz DirName
.bz2
解壓1:bzip2 -d FileName.bz2 解壓2:bunzip2 FileName.bz2 壓縮:bzip2 -z FileName
.tar.bz2
解壓:tar jxvf FileName.tar.bz2 壓縮:tar jcvf FileName.tar.bz2 DirName
.bz
解壓1:bzip2 -d FileName.bz 解壓2:bunzip2 FileName.bz 壓縮:未知
.tar.bz
解壓:tar jxvf FileName.tar.bz 壓縮:未知
.Z
解壓:uncompress FileName.Z 壓縮:compress FileName
.tar.Z
解壓:tar Zxvf FileName.tar.Z 壓縮:tar Zcvf FileName.tar.Z DirName
.zip
解壓:unzip FileName.zip 壓縮:zip FileName.zip DirName
.rar
解壓:rar x FileName.rar 壓縮:rar a FileName.rar DirName
舉例:
實例1:將文件log2021全部打包成tar包
命令:
tar -cvf log.tar log2021.log 僅打包,不壓縮! tar -zcvf log.tar.gz log2021.log 打包后,以 gzip 壓縮 tar -jcvf log.tar.bz2 log2021.log 打包后,以 bzip2 壓縮
實例2:查閱上述 tar包內(nèi)有哪些文件
說明:
由于我們使用 gzip 壓縮的log.tar.gz,所以要查閱log.tar.gz包內(nèi)的文件時,就得要加上 z 這個參數(shù)了。
實例3:將tar 包解壓縮
命令:
tar -zxvf /opt/soft/test/log.tar.gz
六、shell的特殊字符
1) 通配符* ?
* :通配0個或多個字符 * ? :通配任意單個字符 * [s] :通配某個范圍內(nèi)的任意一個字符
2) 一行執(zhí)行多條命令
一行執(zhí)行多條命令:在命令與命令之間用“;”隔開
cd ; ls
3) 輸出重定向:》,》》
》 :將一個命令的輸出放入文件中 》》 :輸出重定向但不會把源文件覆蓋,在原文件末尾追加
舉例:將ls的輸出結(jié)果輸出給test.txt
當(dāng)前目錄沒有操作權(quán)限cd 。。 退回上一級目錄
修改文件夾權(quán)限為方便起見,我們將test的權(quán)限全部打開
用“》”的輸出結(jié)果如下:
然后再用“》》”做測試其結(jié)果如下
4) 輸入重定向:《
下面再實現(xiàn)以下輸入重定向:
5) 管道符:|
管道符“|”:將一個進(jìn)程的輸出作為另一個進(jìn)程的輸入
輸入命令 :
ls -l /etc | cat
顯示的結(jié)果如上圖所示。
6) 其他:%,$,~
% :作業(yè)控制,提示符等 $ : 取某一列的值,取變量值等
七、用戶及進(jìn)程
1、日期時間進(jìn)程查看
a) date: 顯示日期時間
b) cal :顯示日歷
2、ps進(jìn)程查詢
功能:ps (英文全拼:process status)命令用于顯示當(dāng)前進(jìn)程的狀態(tài),類似于 windows 的任務(wù)管理器。
語法
ps [options] [--help]
ps 的參數(shù)非常多, 在此僅列出幾個常用的參數(shù)并大略介紹含義:
-A 列出所有的進(jìn)程 -w 顯示加寬可以顯示較多的資訊 -au 顯示較詳細(xì)的資訊 -aux 顯示所有包含其他使用者的行程 au(x) 輸出格式 : USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER: 行程擁有者 PID: pid %CPU: 占用的 CPU 使用率 %MEM: 占用的記憶體使用率 VSZ: 占用的虛擬記憶體大小 RSS: 占用的記憶體大小 TTY: 終端的次要裝置號碼 (minor device number of tty) STAT: 該行程的狀態(tài): D: 無法中斷的休眠狀態(tài) (通常 IO 的進(jìn)程) R: 正在執(zhí)行中 S: 靜止?fàn)顟B(tài) T: 暫停執(zhí)行 Z: 不存在但暫時無法消除 W: 沒有足夠的記憶體分頁可分配 《: 高優(yōu)先序的行程 N: 低優(yōu)先序的行程 L: 有記憶體分頁分配并鎖在記憶體內(nèi) (實時系統(tǒng)或捱A I/O) START: 行程開始時間 TIME: 執(zhí)行的時間 COMMAND:所執(zhí)行的指令
實例
顯示所有進(jìn)程信息,連同命令行
查找指定進(jìn)程init:
顯示指定用戶信息
3、sudo用戶管理
終端的命令行最右邊的字符
$ 普通用戶 # 管理員用戶
有很多命令需要管理員權(quán)限才能使用,可以輸入命令前加sudo,也可以直接切換到管理員再執(zhí)行。
切換到管理員root
切換用戶
su 用戶名 :切換賬戶
4、電源管理
a) shutdown
安全關(guān)閉或重啟Linux系統(tǒng),它在系統(tǒng)關(guān)閉之前給系統(tǒng)上的所有登陸用戶提示一條警告信息。該命令還允許用戶指定一個時間參數(shù)、可以是一個精確的時間、也可以是從現(xiàn)在開始的一段時間。精確時間的格式:hh:mm 表示小時和分鐘,時間段由 + 和分鐘數(shù)表示。系統(tǒng)執(zhí)行該命令后會自動進(jìn)行數(shù)據(jù)同步的工作。
功能說明:系統(tǒng)關(guān)機(jī)指令。
語 法:shutdown [-efFhknr][-t 秒數(shù)][時間][警告信息]
補(bǔ)充說明:shutdown指令可以關(guān)閉所有程序,并依用戶的需要,進(jìn)行重新開機(jī)或關(guān)機(jī)的動作。
參數(shù):
-c 當(dāng)執(zhí)行”shutdown -h 11:50”指令時,只要按+鍵就可以中斷關(guān)機(jī)的指令。 -f 重新啟動時不執(zhí)行fsck。 -F 重新啟動時執(zhí)行fsck。 -h 將系統(tǒng)關(guān)機(jī)。 -k 只是送出信息給所有用戶,但不會實際關(guān)機(jī)。 -n 不調(diào)用init程序進(jìn)行關(guān)機(jī),而由shutdown自己進(jìn)行。 -r shutdown之后重新啟動。 -t《秒數(shù)》 送出警告信息和刪除信息之間要延遲多少秒。 [時間] 設(shè)置多久時間后執(zhí)行shutdown指令。 [警告信息] 要傳送給所有登入用戶的信息。
b) reboot
功能說明:重新開機(jī)。
語法:
dreboot [-dfinw]
補(bǔ)充說明:執(zhí)行reboot指令可讓系統(tǒng)停止運作,并重新開機(jī)。
參數(shù):
-d 重新開機(jī)時不把數(shù)據(jù)寫入記錄文件/var/tmp/wtmp。本參數(shù)具有”-n”參數(shù)的效果。 -f 強(qiáng)制重新開機(jī),不調(diào)用shutdown指令的功能。 -i 在重開機(jī)之前,先關(guān)閉所有網(wǎng)絡(luò)界面。 -n 重開機(jī)之前不檢查是否有未結(jié)束的程序。 -w 僅做測試,并不真的將系統(tǒng)重新開機(jī),只會把重開機(jī)的數(shù)據(jù)寫入/var/log目錄下的wtmp記錄文件。
c) halt
功能說明:關(guān)閉系統(tǒng)。
語法:
halt [-dfinpw]
補(bǔ)充說明:halt會先檢測系統(tǒng)的runlevel。若runlevel為0或6,則關(guān)閉系統(tǒng),否則即調(diào)用shutdown來關(guān)閉系統(tǒng)。
參數(shù):
-d 不要在wtmp中記錄。 -f 不論目前的runlevel為何,不調(diào)用shutdown即強(qiáng)制關(guān)閉系統(tǒng)。 -i 在halt之前,關(guān)閉全部的網(wǎng)絡(luò)界面。 -n halt前,不用先執(zhí)行sync。 -p halt之后,執(zhí)行poweroff。 -w 僅在wtmp中記錄,而不實際結(jié)束系統(tǒng)。
4、用戶管理補(bǔ)充
(1)用戶密碼要求
用戶的密碼要求有6~8個字符,其中至少要包含2個字母、1個數(shù)字或特殊字符,而且不能與用戶名相同,還要不同于以前的密碼,至少要有三個字符不同與以前的密碼。
(2)passwd修改密碼命令
輸入命令 passwd 輸入原密碼 **** 輸入新密碼 確認(rèn)新密碼
注意:在輸入密碼過程中機(jī)器是沒有任何動作的
(3)查找用戶
id
查看用戶ID(用戶名)及其所屬組ID(組名)
user
查看已經(jīng)登陸到當(dāng)前系統(tǒng)中的用戶,只顯示出用戶名。
who
查看用戶的詳細(xì)信息
who am i
查看當(dāng)前用戶自己的信息
whoanmi
查看當(dāng)前用戶自己的用戶名
八、相關(guān)信息查詢
產(chǎn)看磁盤信息
1. du
顯示磁盤使用摘要信息
du 以Block為單位方式顯示 -k 以k字節(jié)方式顯示 -m 以m字節(jié)方式顯示 -s 顯示當(dāng)前目錄下的內(nèi)容總的占用磁盤的大小,以Block為單位 以Block單位顯示的數(shù)字是以k字節(jié)方式顯示的數(shù)字的2倍,1k字節(jié)=2個Block
2. df
顯示整個文件系統(tǒng)的空間使用磁盤情況
-k 以k字節(jié)方式顯示
九、網(wǎng)絡(luò)配置
1、ping
查看當(dāng)前機(jī)器與另一臺機(jī)器的聯(lián)通情況ping 主機(jī)名稱或者主機(jī)的IP:向ping后面的主機(jī)發(fā)送數(shù)據(jù)包,若被ping的主機(jī)有回復(fù)則表示連通的。
語法:
ping [-dfnqrRv][-c《完成次數(shù)》][-i《間隔秒數(shù)》][-I《網(wǎng)絡(luò)界面》][-l《前置載入》][-p《范本樣式》][-s《數(shù)據(jù)包大小》][-t《存活數(shù)值》][主機(jī)名稱或IP地址]
補(bǔ)充說明:執(zhí)行ping指令會使用ICMP傳輸協(xié)議,發(fā)出要求回應(yīng)的信息,若遠(yuǎn)端主機(jī)的網(wǎng)絡(luò)功能沒有問題,就會回應(yīng)該信息,因而得知該主機(jī)運作正常。
參數(shù):
這些基礎(chǔ)知識都是必須掌握的知識點,學(xué)會以后,就可以進(jìn)入到下一步Linux下的C程序開發(fā)的學(xué)習(xí)了!
編輯:jq
-
Linux
+關(guān)注
關(guān)注
87文章
11213瀏覽量
208736 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4286瀏覽量
62336
原文標(biāo)題:Linux入門的基礎(chǔ)知識點匯總,有這篇就夠了
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論