一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Linux入門(mén)的基礎(chǔ)知識(shí)點(diǎn)匯總,有這篇就夠了

 心本心123 2021-05-21
一口Linux
143篇原創(chuàng)內(nèi)容
公眾號(hào)

很多粉絲給一口君留言,想要學(xué)習(xí)Linux資料,其實(shí)關(guān)注一口君的公眾號(hào),后臺(tái)回復(fù) 1024 ,就有很多非常不錯(cuò)的電子書(shū),但是有一個(gè)問(wèn)題,很多粉絲是初學(xué)者,而這一大堆電子書(shū),估計(jì)隨便一本,還沒(méi)看完就基本上開(kāi)始勸退了。

到底要如何Linux入門(mén)呢?

因?yàn)長(zhǎng)inux的知識(shí)體系非常的龐大,IT行業(yè)很多領(lǐng)域都需要使用到Linux,有運(yùn)維的、有應(yīng)用程序開(kāi)發(fā)的、有驅(qū)動(dòng)開(kāi)發(fā)的、有系統(tǒng)優(yōu)化的、有搞單片機(jī)的、有做系統(tǒng)移植的、有做網(wǎng)絡(luò)產(chǎn)品的等等。

總結(jié)一句話(huà),IT的很大部分從業(yè)者都需要掌握Linux的部分知識(shí),但是由于每個(gè)人的從事領(lǐng)域不一樣,對(duì)Linux的要求也不一樣,這就直接導(dǎo)致,網(wǎng)上搜索學(xué)習(xí)路線(xiàn)有很多種,還有就是推薦的書(shū)籍很多都不利于初學(xué)者。

比如Linux命令的學(xué)習(xí),很多人都力推《鳥(niǎo)哥的私房菜》這本書(shū),一口君在直播間多次強(qiáng)調(diào),初學(xué)者不要看這本書(shū),不是說(shuō)這本書(shū)不好,而是,這本書(shū)其實(shí)你要當(dāng)做一本工具書(shū)來(lái)看,如果你的目標(biāo)是想快速的基于Linux做一些開(kāi)發(fā)工作,最迫切的就是快速掌握一些基本的命令,一些和開(kāi)發(fā)相關(guān)的最基礎(chǔ)的知識(shí),而不是去學(xué)習(xí)那些可能這輩子都用不到的命令。

為了讓初學(xué)者更好的學(xué)習(xí)Linux,入門(mén)Linux,一口君特地整理了Linux入門(mén)必須掌握的一些基礎(chǔ)知識(shí)點(diǎn),掌握這些知識(shí)點(diǎn)之后,就可以學(xué)習(xí)C編程的知識(shí)了,后續(xù)遇到一些不熟悉的命令和配置,只需要網(wǎng)上搜索下就可以很快上手了。

后續(xù)一口君會(huì)陸續(xù)錄制Linux入門(mén)的視頻,手把手教大家Linux入門(mén)。

歡迎大家訪問(wèn)我的B站空間,https://space.bilibili.com/661326452 

持續(xù)更新中。

一、Linux操作系統(tǒng)概述

1、發(fā)展

1991 Linus Linux 0.0.1版,代碼為8K行。現(xiàn)在最新版本為5.12.4。Linux加入了GNU,整體基于GPL協(xié)議,允許開(kāi)源、分享傳播、修改。

內(nèi)核下載的地址:

https://www./

2、組成

  1. kernel內(nèi)核:

核心程序,用于管理硬件設(shè)備、系統(tǒng)的線(xiàn)程進(jìn)程、內(nèi)存、交換空間、文件系統(tǒng)、精靈進(jìn)程(守護(hù)進(jìn)程)等。主要實(shí)現(xiàn)系統(tǒng)程序與硬件之間的控制管理功能。

  1. Shell:

包裹在內(nèi)核之外的人機(jī)交互界面,用于用戶(hù)和內(nèi)核之間打交道的功能,類(lèi)似于windows的cmd。通過(guò)Shell將輸入的命令與內(nèi)核通訊,好讓內(nèi)核可以控制硬件并正確無(wú)誤的操作工作。

Shell有著不同的分類(lèi),比如Bourne shell(sh),Korn shell(ksh)、C shell (csh)、Bourne-again shell(bash)、tcsh。其中最常用的有csh和bash。

ubuntu 16.04的terminal如下:

圖片
  1. user applicationLinux根據(jù)程序的運(yùn)行,分為用戶(hù)空間和內(nèi)核空間,簡(jiǎn)單的理解就是,普通的應(yīng)用程序運(yùn)行在用戶(hù)空間,一些涉及到系統(tǒng)核心資源的操作的程序運(yùn)行在內(nèi)核空間,比如TCP/IP協(xié)議棧、驅(qū)動(dòng)、進(jìn)程調(diào)度、內(nèi)存管理、文件系統(tǒng)等都運(yùn)行于Linux內(nèi)核空間,

其實(shí)一些應(yīng)用程序當(dāng)需要訪問(wèn)系統(tǒng)資源的時(shí)候,必須通過(guò)系統(tǒng)調(diào)用,通過(guò)一些內(nèi)核函數(shù)將系統(tǒng)資源由內(nèi)核空間拷貝到用戶(hù)空間。

  1. Files System:文件系統(tǒng),管理文件和目錄。
圖片

3、Linux的特性:

多用戶(hù)、多任務(wù)(進(jìn)程、線(xiàn)程處理),多平臺(tái),圖形化界面(x-windows)、硬件配置、通信與聯(lián)網(wǎng)、應(yīng)用程序的支持(編輯器、編輯工具、數(shù)據(jù)庫(kù)、辦公軟件、圖形處理、Internet應(yīng)用、游戲)。

二、Linux操作系統(tǒng)安裝

1、Linux的選擇

red hat:企業(yè)級(jí)的,已經(jīng)開(kāi)始收費(fèi)(商用)。

CentOS是RHEL的克隆版本。RedHat一直都提供源代碼的發(fā)行方式,CentOS就是將RedHat發(fā)行的源代碼重新編譯一次,形成一個(gè)可使用的二進(jìn)制版本。由于Linux的源代碼是GNU,所以從獲得RedHat的源代碼到編譯成新的二進(jìn)制,都是合法。只是RedHat是商標(biāo),所以必須在新的發(fā)行版里將RedHat的商標(biāo)去掉。通常搭建服務(wù)器選用CentOS。

ubuntu:桌面開(kāi)源的,比較純正的Linux,android官方指定的編譯操作系統(tǒng),發(fā)展快、已支持ARM架構(gòu)。ubuntu在開(kāi)發(fā)者中,非常受歡迎,一口君所有的文章和視頻都以u(píng)buntu為主。

2、安裝Ubuntu Desktop

Linux環(huán)境安裝篇幅較長(zhǎng),安裝詳細(xì)步驟參考這篇文章:

linux驅(qū)動(dòng)、ARM學(xué)習(xí)環(huán)境搭建

3、基本操作

ctrl+alt F2  可以進(jìn)入終端界面
ctrl+alt F7  進(jìn)入桌面界面
ctrl+alt+t    文本編輯

我們通常用快捷鍵ctrl+alt+t打開(kāi)一個(gè)終端,這個(gè)一定要記住。

圖片

其中:

peng    當(dāng)前用戶(hù)
ubuntu  主機(jī)名
~       當(dāng)前用戶(hù)主目錄,/home/peng,每一個(gè)用戶(hù)都會(huì)在/home下創(chuàng)建一個(gè)與用戶(hù)名同名的目錄
$       普通用戶(hù)

如果切換到管理員用戶(hù)

圖片
root  管理員
/home/peng  當(dāng)前工作目錄
#     當(dāng)前是管理員

三、Linux文件系統(tǒng)及文件基礎(chǔ)

1、文件系統(tǒng)概述

Linux 中一切皆為文件,文件系統(tǒng)用來(lái)組織計(jì)算機(jī)的文件和資料的系統(tǒng),是操作系統(tǒng)封裝的一個(gè)系統(tǒng)服務(wù)程序,實(shí)際是一個(gè)軟件程序,用來(lái)存儲(chǔ)和管理計(jì)算機(jī)文件和資料。文件系統(tǒng)分類(lèi)如下:

磁盤(pán)文件系統(tǒng):NTFS,EXT3
閃存文件系統(tǒng):JFFS2,YAFFS
數(shù)據(jù)庫(kù)文件系統(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)及文件

  1. EXT3:是一個(gè)日志方式的文件系統(tǒng),系統(tǒng)中的每個(gè)文件都有索引,用戶(hù)對(duì)文件的每個(gè)操作都會(huì)記錄在日志中,形成一個(gè)任務(wù)隊(duì)列。

  2. SWAP:是交換分區(qū)的文件系統(tǒng),類(lèi)似于windows的虛擬內(nèi)存,其實(shí)現(xiàn)的方式有以下兩種:第一種是進(jìn)行內(nèi)存排列像內(nèi)存池一樣,進(jìn)行優(yōu)化;第二種是把硬盤(pán)上的空間模擬成內(nèi)存。Swap是Linux 的虛擬內(nèi)存,在安裝時(shí)要設(shè)置好大小,一般設(shè)置為物理內(nèi)存的兩倍。

  3. 目錄結(jié)構(gòu)linux 的結(jié)構(gòu)是由很多文件塊區(qū)組成,與Windows分區(qū)不同。

目錄應(yīng)放置檔案內(nèi)容
/bin系統(tǒng)有很多放置執(zhí)行檔的目錄,但/bin比較特殊。因?yàn)?bin放置的是在單人維護(hù)模式下還能夠被操作的指令。在/bin底下的指令可以被root與一般賬號(hào)所使用,主要有:cat,chmod(修改權(quán)限), chown, date, mv, mkdir, cp, bash等等常用的指令。
/boot主要放置開(kāi)機(jī)會(huì)使用到的檔案,包括Linux核心檔案以及開(kāi)機(jī)選單與開(kāi)機(jī)所需設(shè)定檔等等。Linux kernel常用的檔名為:vmlinuz ,如果使用的是grub這個(gè)開(kāi)機(jī)管理程式,則還會(huì)存在/boot/grub/這個(gè)目錄。
/dev在Linux系統(tǒng)上,任何裝置與周邊設(shè)備都是以檔案的型態(tài)存在于這個(gè)目錄當(dāng)中。只要通過(guò)存取這個(gè)目錄下的某個(gè)檔案,就等于存取某個(gè)裝置。比較重要的檔案有/dev/null, /dev/zero, /dev/tty , /dev/lp*, / dev/hd*, /dev/sd*等等
/etc系統(tǒng)主要的設(shè)定檔幾乎都放置在這個(gè)目錄內(nèi),例如人員的賬號(hào)密碼檔、各種服務(wù)的啟始檔等等。一般來(lái)說(shuō),這個(gè)目錄下的各檔案屬性是可以讓一般使用者查閱的,但是只有root有權(quán)力修改。FHS建議不要放置可執(zhí)行檔(binary)在這個(gè)目錄中。比較重要的檔案有:/etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/等等。另外,其下重要的目錄有:/etc/init.d/ :所有服務(wù)的預(yù)設(shè)啟動(dòng)script都是放在這里的,例如要啟動(dòng)或者關(guān)閉iptables的話(huà):/etc/init.d/iptables start、/etc/init.d/ iptables stop
/etc/xinetd.d/這就是所謂的super daemon管理的各項(xiàng)服務(wù)的設(shè)定檔目錄。
/etc/X11/與X Window有關(guān)的各種設(shè)定檔都在這里,尤其是xorg.conf或XF86Config這兩個(gè)X Server的設(shè)定檔。
/home這是系統(tǒng)預(yù)設(shè)的使用者家目錄(home directory)。在你新增一個(gè)一般使用者賬號(hào)時(shí),預(yù)設(shè)的使用者家目錄都會(huì)規(guī)范到這里來(lái)。比較重要的是,家目錄有兩種代號(hào):~ :代表當(dāng)前使用者的家目錄,而 ~guest:則代表用戶(hù)名為guest的家目錄。
/lib系統(tǒng)的函式庫(kù)非常的多,而/lib放置的則是在開(kāi)機(jī)時(shí)會(huì)用到的函式庫(kù),以及在/bin或/sbin底下的指令會(huì)呼叫的函式庫(kù)而已 。什么是函式庫(kù)呢?妳可以將他想成是外掛,某些指令必須要有這些外掛才能夠順利完成程式的執(zhí)行之意。尤其重要的是/lib/modules/這個(gè)目錄,因?yàn)樵撃夸洉?huì)放置核心相關(guān)的模組(驅(qū)動(dòng)程式)。
/mediamedia是媒體的英文,顧名思義,這個(gè)/media底下放置的就是可移除的裝置。包括軟碟、光碟、DVD等等裝置都暫時(shí)掛載于此。常見(jiàn)的檔名有:/media/floppy, /media/cdrom等等。
/mnt如果妳想要暫時(shí)掛載某些額外的裝置,一般建議妳可以放置到這個(gè)目錄中。在古早時(shí)候,這個(gè)目錄的用途與/media相同啦。只是有了/media之后,這個(gè)目錄就用來(lái)暫時(shí)掛載用了。
/opt這個(gè)是給第三方協(xié)力軟體放置的目錄 。什么是第三方協(xié)力軟體???舉例來(lái)說(shuō),KDE這個(gè)桌面管理系統(tǒng)是一個(gè)獨(dú)立的計(jì)畫(huà),不過(guò)他可以安裝到Linux系統(tǒng)中,因此KDE的軟體就建議放置到此目錄下了。另外,如果妳想要自行安裝額外的軟體(非原本的distribution提供的),那么也能夠?qū)⒛愕能涹w安裝到這里來(lái)。不過(guò),以前的Linux系統(tǒng)中,我們還是習(xí)慣放置在/usr/local目錄下。
/root系統(tǒng)管理員(root)的家目錄。之所以放在這里,是因?yàn)槿绻M(jìn)入單人維護(hù)模式而僅掛載根目錄時(shí),該目錄就能夠擁有root的家目錄,所以我們會(huì)希望root的家目錄與根目錄放置在同一個(gè)分區(qū)中。
/sbinLinux有非常多指令是用來(lái)設(shè)定系統(tǒng)環(huán)境的,這些指令只有root才能夠利用來(lái)設(shè)定系統(tǒng),其他使用者最多只能用來(lái)查詢(xún)而已。放在/sbin底下的為開(kāi)機(jī)過(guò)程中所需要的,里面包括了開(kāi)機(jī)、修復(fù)、還原系統(tǒng)所需要的指令。至于某些伺服器軟體程式,一般則放置到/usr/sbin/當(dāng)中。至于本機(jī)自行安裝的軟體所產(chǎn)生的系統(tǒng)執(zhí)行檔(system binary),則放置到/usr/local/sbin/當(dāng)中了。常見(jiàn)的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。
/srvsrv可以視為service的縮寫(xiě),是一些網(wǎng)路服務(wù)啟動(dòng)之后,這些服務(wù)所需要取用的資料目錄。常見(jiàn)的服務(wù)例如WWW, FTP等等。舉例來(lái)說(shuō),WWW伺服器需要的網(wǎng)頁(yè)資料就可以放置在/srv/www/里面。呵呵,看來(lái)平時(shí)我們編寫(xiě)的代碼應(yīng)該放到這里了。
/tmp這是讓一般使用者或者是正在執(zhí)行的程序暫時(shí)放置檔案的地方。這個(gè)目錄是任何人都能夠存取的,所以你需要定期的清理一下。當(dāng)然,重要資料不可放置在此目錄啊。因?yàn)镕HS甚至建議在開(kāi)機(jī)時(shí),應(yīng)該要將/tmp下的資料都刪除。

3. Linux文件屬性:

Linux文件屬性一共7種:

類(lèi)型字母說(shuō)明
普通文件類(lèi)型-Linux中最多的一種文件類(lèi)型, 包括 純文本文件(ASCII);二進(jìn)制文件(binary);數(shù)據(jù)格式的文件(data);各種壓縮文件.第一個(gè)屬性為 [-]
目錄文件d就是目錄, 能用 # cd 命令進(jìn)入的。第一個(gè)屬性為 [d],例如 [drwxrwxrwx]
塊設(shè)備文件b塊設(shè)備文件 :就是存儲(chǔ)數(shù)據(jù)以供系統(tǒng)存取的接口設(shè)備,簡(jiǎn)單而言就是硬盤(pán)。例如一號(hào)硬盤(pán)的代碼是 /dev/hda1等文件。第一個(gè)屬性為 [b]
字符設(shè)備c字符設(shè)備文件:即串行端口的接口設(shè)備,例如鍵盤(pán)、鼠標(biāo)等等。第一個(gè)屬性為 [c]
套接字文件s這類(lèi)文件通常用在網(wǎng)絡(luò)數(shù)據(jù)連接。可以啟動(dòng)一個(gè)程序來(lái)監(jiān)聽(tīng)客戶(hù)端的要求,客戶(hù)端就可以通過(guò)套接字來(lái)進(jìn)行數(shù)據(jù)通信。第一個(gè)屬性為 [s],最常在 /var/run目錄中看到這種文件類(lèi)型
管道文件pFIFO也是一種特殊的文件類(lèi)型,它主要的目的是,解決多個(gè)程序同時(shí)存取一個(gè)文件所造成的錯(cuò)誤。FIFO是first-in-first-out(先進(jìn)先出)的縮寫(xiě)。第一個(gè)屬性為 [p]
鏈接文件l類(lèi)似Windows下面的快捷方式。第一個(gè)屬性為 [l],例如 [lrwxrwxrwx]

1、普通文件

使用 ls -l 命令后,

圖片

第一列第一個(gè)字符為 '-' 的文件為普通文件.

2、目錄文件

Linux 中的目錄也是文件,目錄文件中保存著該目錄下其他文件的 inode 號(hào) 和文件名等信息,目錄文件中的每個(gè)數(shù)據(jù)項(xiàng)都是指向某個(gè)文件 inode 號(hào)的鏈接,刪除文件名就等于刪除與之對(duì)應(yīng)的鏈接。目錄文件的字體顏色是藍(lán)色,使用 ls -l 命令查看,第一個(gè)字符為'd'(directory)。

目錄文件的權(quán)限:

  • 1)r 表明該目錄文件具有可讀權(quán)限,即可以使用 ls 命令查看該目錄的存儲(chǔ)情況;
  • 2)w 表明該目錄文件具有寫(xiě)權(quán)限,即可以往該目錄下添加、修改、刪除文件;
  • 3)x 表明該目錄文件具有可執(zhí)行文件,即可以使用 cd 命令進(jìn)入到該目錄下。

可以使用 chmod 指令來(lái)改變文件的權(quán)限。

3、鏈接文件

鏈接文件一般指的是一個(gè)文件的軟連接(或符號(hào)鏈接),使用 ls -l 命令查看,第一個(gè)符號(hào)為  'l',文件名為淺藍(lán)色,如下:

圖片

這里,test_softlink 就是一個(gè)鏈接文件,從結(jié)果上還可以看到它是文件 test.txt 的軟鏈接,刪除原文件 test.txt 的話(huà),對(duì)應(yīng)的軟鏈接文件 test_softlink 也會(huì)消失??梢允褂?ln 命令來(lái)創(chuàng)建一個(gè)文件的鏈接文件:

1)軟鏈接軟鏈接(又稱(chēng)符號(hào)鏈接),使用 ln -s file file_softlink 命令可以創(chuàng)建一個(gè)文件的軟鏈接文件:

ln -s test.txt test_softlink

軟鏈接相當(dāng)于給原文件創(chuàng)建了一個(gè)快捷方式,如果刪除原文件,則對(duì)應(yīng)的軟鏈接文件也會(huì)消失。

2)硬鏈接硬鏈接,相當(dāng)于給原文件取了個(gè)別名,其實(shí)兩者是同一個(gè)文件,刪除二者中任何一個(gè),另一個(gè)不會(huì)消失;對(duì)其中任何一個(gè)進(jìn)行更改,另一個(gè)的內(nèi)容也會(huì)隨之改變,因?yàn)檫@兩個(gè)本質(zhì)上是同一個(gè)文件,只是名字不同。使用 ls -i 命令查看,可以發(fā)現(xiàn)硬鏈接的兩個(gè)文件的 inode 號(hào)是一樣的:

圖片

同樣的,使用 ln 命令可以創(chuàng)建一個(gè)文件的硬鏈接:

ln test.txt test_hardlink

4、設(shè)備文件

Linux 中的硬件設(shè)備如硬盤(pán)、鼠標(biāo)等也都被表示為文件,即為設(shè)備文件。

設(shè)備文件一般存放在 /dev/ 目錄下,文件名為黃色,如下:

圖片

設(shè)備文件分兩種:

  • 1)塊設(shè)備文件:

塊設(shè)備文件支持以塊(block)為單位的訪問(wèn)方式。在 EXT4 文件系統(tǒng)中,一個(gè) block 通常為 4KB 的大小,也就是說(shuō)每次可以存取 4096(或其整數(shù)倍) 個(gè)字節(jié)的數(shù)據(jù)。應(yīng)用程序可以隨機(jī)訪問(wèn)塊設(shè)備文件的數(shù)據(jù),程序可以自行確定數(shù)據(jù)的位置,硬盤(pán)、軟盤(pán)等都是塊設(shè)備。使用 ls -l 命令查看,塊設(shè)備文件的第一個(gè)字符是 'b'(block)。

  • 2)字符設(shè)備文件:

字符設(shè)備文件以字節(jié)流的方式進(jìn)行訪問(wèn),由字符設(shè)備驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)這種特性,這通常要用到 open、close、read、write 等系統(tǒng)調(diào)用。字符終端、串口和鍵盤(pán)等就是字符設(shè)備。另外,由于字符設(shè)備文件是以文件流的方式進(jìn)行訪問(wèn)的,因此可以順序讀取,但通常不支持隨機(jī)存取。使用 ls -l 命令查看,字符設(shè)備文件的第一個(gè)字符是 'c'(char)。

5、管道文件(FIFO文件)

管道文件主要用于進(jìn)程間通信,使用 ls -l 命令查看,第一個(gè)字符為 'p'(pipe)??梢允褂?mkfifo 命令來(lái)創(chuàng)建一個(gè)管道文件:

mkfifo fifo_file
圖片

在 FIFO 中可以很好地解決在無(wú)關(guān)進(jìn)程間數(shù)據(jù)交換的要求,F(xiàn)IFO 的通信方式類(lèi)似于在進(jìn)程中使用文件來(lái)傳輸數(shù)據(jù),只不過(guò) FIFO 類(lèi)型的文件同時(shí)具有管道的特性,在讀取數(shù)據(jù)時(shí),F(xiàn)IFO 管道中同時(shí)清除數(shù)據(jù)。

6、套接字文件

套接字文件,通常指域套接字文件,使用 ls -l 命令查看,第一個(gè)字符為 's'。

域套接字是進(jìn)程間通信(IPC)的一種方法,是可靠的一種IPC通信,是POSIX標(biāo)準(zhǔn)的一個(gè)組件,只能用于同一主機(jī)間的通信。

后續(xù)學(xué)習(xí)進(jìn)程間通信需要學(xué)習(xí)該知識(shí)。

4. 文件顏色

常見(jiàn)的文件顏色如下:

  • 藍(lán)色:目錄文件
  • 綠色:可執(zhí)行文件
  • 淺藍(lán)色:鏈接文件
  • 紅色:壓縮文件
  • 黃色:字符設(shè)備
  • 灰色:其他文件

圖片圖片

四、Linux操作系統(tǒng)命令使用基礎(chǔ)

1、命令格式

$command    [option(s)]   [argument(s)]
命令名    空格  選項(xiàng)    空格     參數(shù)
  • command  :命令名
  • [option(s)]  :選項(xiàng)
  • [argument(s)] :參數(shù)

注意:

  • 在命令行中,每?jī)蓚€(gè)部分之間有空格分隔
  • 每個(gè)命令行可使用的最多的命令字符是256個(gè)
  • 命令區(qū)分大小寫(xiě)
  • 不同的命令提示符使用分隔符號(hào) “/”
  • 命令中的參數(shù)/選項(xiàng)可以是多個(gè),并且參數(shù)其實(shí)就是要傳入命令程序主函數(shù)main的參數(shù)。
  • [ ] 表示這個(gè)內(nèi)容可以不包含,比如  [argument(s)] ,輸入命令時(shí)可以不加參數(shù)

2、聯(lián)機(jī)幫助、清屏與歷史記錄命令

1)聯(lián)機(jī)幫助

遇到一些函數(shù)和命令,不知道含義時(shí)可以使用命令man來(lái)查看幫助信息。

man ls
man -k keyword
圖片

man手冊(cè)根據(jù)內(nèi)容分為9個(gè)手冊(cè),可以使用下面命令查看

man man
圖片

man文檔的分類(lèi)編號(hào)

1 - commands(普通的命令)
2 - system calls(系統(tǒng)調(diào)用)

3 - library calls(庫(kù)函數(shù))
4 - special files(特殊文件:/dev下設(shè)備文件)
5 - file formats and convertions(文件格式)

6 - games for linux(游戲和娛樂(lè))
7 - macro packages and conventions(雜項(xiàng))
8 - system management commands(管理員命令)
9 - 其他(Linux特定, 用來(lái)存放內(nèi)核例行程序的文檔)

使用-k參數(shù),man可以在所有的man文檔和簡(jiǎn)介中查找符合條件的命令。

peng@ubuntu:~/test$ man -k bash
bash (1)             - GNU Bourne-Again SHell
bash-builtins (7)    - bash built-in commands, see bash(1)
bashbug (1)          - report a bug in bash
builtins (7)         - bash built-in commands, see bash(1)
dh_bash-completion (1) - install bash completions for package
rbash (1)            - restricted bash, see bash(1)

有的關(guān)鍵詞在系統(tǒng)中對(duì)應(yīng)多個(gè)手冊(cè),使用-f參數(shù),用于查找同名的手冊(cè):

peng@ubuntu:~/test$ man -f time
time (7)             - overview of time and timers
time (1)             - run programs and summarize system resource usage
time (2)             - get time in seconds

2)清屏 clear

清屏使用命令clear或者使用快捷鍵:ctrl + l

3)歷史紀(jì)錄 history(history -n)

這是一個(gè)非常有用的命令,想知道之前輸入過(guò)的所有命令,就可以用他。

history :查看最近使用的命令,最多500條
history n :曾經(jīng)使用的最近n條命令
!n    :執(zhí)行最近第n條命令
!!    :執(zhí)行最近使用的第一條命令
方向上鍵:執(zhí)行上一條命令
方向下鍵:執(zhí)行下一條命令

五、文件管理

1)查看文件目錄

下面這幾個(gè)命令是使用最頻繁的命令:

命令說(shuō)明
pwd顯示當(dāng)前工作目錄
cd  [要改變的目錄](méi)改變目錄
ls列出當(dāng)前目錄的文件和子目錄
file辨識(shí)文件類(lèi)型
  • cd
cd  //回到當(dāng)前用戶(hù)主目錄
cd ~//回到當(dāng)前用戶(hù)主目錄
cd ~[用戶(hù)名]  //進(jìn)入指定用戶(hù)主目錄
  • file功能說(shuō)明:辨識(shí)文件類(lèi)型。
語(yǔ)法:file [-beLvz][-f <名稱(chēng)文件>][-m <魔法數(shù)字文件>…][文件或目錄…] 

參數(shù):

 -b  列出辨識(shí)結(jié)果時(shí),不顯示文件名稱(chēng)。 
 -c  詳細(xì)顯示指令執(zhí)行過(guò)程,便于排錯(cuò)或分析程序執(zhí)行的情形。 
 -f<名稱(chēng)文件>  指定名稱(chēng)文件,其內(nèi)容有一個(gè)或多個(gè)文件名稱(chēng)呢感,讓file依序辨識(shí)這些文件,格式為每列一個(gè)文件名稱(chēng)。
 -L  直接顯示符號(hào)連接所指向的文件的類(lèi)別。 
 -m<魔法數(shù)字文件>  指定魔法數(shù)字文件。 
 -v  顯示版本信息。 
 -z  嘗試去解讀壓縮文件的內(nèi)容。

補(bǔ)充說(shuō)明:通過(guò)file指令,我們得以辨識(shí)該文件的類(lèi)型。

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中,存在著絕對(duì)路徑和相對(duì)路徑:

絕對(duì)路徑:

路徑的寫(xiě)法一定是由根目錄 / 寫(xiě)起的,例如 /usr/local/mysql

相對(duì)路徑:

路徑的寫(xiě)法不是由根目錄 / 寫(xiě)起的。

例如 首先用戶(hù)進(jìn)入到 /home,然后再進(jìn)入到peng,執(zhí)行的命令為

#cd /home
#cd peng

此時(shí)用戶(hù)所在的路徑為 /home/peng。

第一個(gè)cd命令后緊跟/home,前面有斜杠,是絕對(duì)路徑;而第二個(gè)cd命令后緊跟peng,前面沒(méi)有斜杠,表示從當(dāng)前目錄下找peng這個(gè)目錄,這個(gè)peng是相對(duì)于/home目錄來(lái)講的,所以稱(chēng)為相對(duì)路徑。

3)創(chuàng)建和刪除文件目錄

1、創(chuàng)建文件touch

功能說(shuō)明:

文件名不存在,則創(chuàng)建一個(gè)新的空文件
如果文件名存在,更新該文件或者目錄的修改訪問(wèn)時(shí)間,內(nèi)容不變。

語(yǔ)法:

touch [-acfm][-d <日期時(shí)間>][-r <參考文件或目錄>][-t <日期時(shí)間>][–help]   [–version][文件或目錄…] 

或 touch [-acfm][–help][–version][日期時(shí)間][文件或目錄…]

補(bǔ)充說(shuō)明:使用touch指令可更改文件或目錄的日期時(shí)間,包括存取時(shí)間和更改時(shí)間。

參數(shù):

 -a或–time=atime或–time=access或–time=use  只更改存取時(shí)間。 
 -c或–no-create  不建立任何文件。 
 -d<時(shí)間日期>  使用指定的日期時(shí)間,而非現(xiàn)在的時(shí)間。 
 -f  此參數(shù)將忽略不予處理,僅負(fù)責(zé)解決BSD版本touch指令的兼容性問(wèn)題。 
 -m或–time=mtime或–time=modify  只更改變動(dòng)時(shí)間。 
 -r<參考文件或目錄>  把指定文件或目錄的日期時(shí)間,統(tǒng)統(tǒng)設(shè)成和參考文件或目錄的日期時(shí)間相同。 
 -t<日期時(shí)間>  使用指定的日期時(shí)間,而非現(xiàn)在的時(shí)間。 
 –help  在線(xiàn)幫助。 
 –version  顯示版本信息。

2、創(chuàng)建目錄mkdir

功能說(shuō)明:

建立目錄

語(yǔ)法:

mkdir [-p][–help][–version][-m <目錄屬性>][目錄名稱(chēng)]

補(bǔ)充說(shuō)明:mkdir可建立目錄并同時(shí)設(shè)置目錄的權(quán)限。

參數(shù):

  -m<目錄屬性>或–mode<目錄屬性>   建立目錄時(shí)同時(shí)設(shè)置目錄的權(quán)限。
  -p或–parents   若所要建立目錄的上層目錄目前尚未建立,則會(huì)一并建立上層目錄。
  –help   顯示幫助。
  –verbose   執(zhí)行時(shí)顯示詳細(xì)的信息。
  –version   顯示版本信息。

3、刪除文件rm

功能說(shuō)明:

刪除文件或目錄。

語(yǔ)法:

rm [-dfirv][–help][–version][文件或目錄…]

補(bǔ)充說(shuō)明:執(zhí)行rm指令可刪除文件或目錄,如欲刪除目錄必須加上參數(shù)”-r”,否則預(yù)設(shè)僅會(huì)刪除文件。

參數(shù):

 -d或–directory  直接把欲刪除的目錄的硬連接數(shù)據(jù)刪成0,刪除該目錄。 
 -f或–force  強(qiáng)制刪除文件或目錄。 
 -i或–interactive  刪除既有文件或目錄之前先詢(xún)問(wèn)用戶(hù)。 
 -r或-R或–recursive  遞歸處理,將指定目錄下的所有文件及子目錄一并處理。 
 -v或–verbose  顯示指令執(zhí)行過(guò)程。 
 –help  在線(xiàn)幫助。 
 –version  顯示版本信息。

4、刪除目錄

rmdir(remove directory)

功能說(shuō)明:刪除目錄。

語(yǔ)  法:

rmdir [-p][–help][–ignore-fail-on-non-empty][–verbose][–version][目錄…]

補(bǔ)充說(shuō)明:當(dāng)有空目錄要?jiǎng)h除時(shí),可使用rmdir指令。

參  數(shù):

  -p或–parents   刪除指定目錄后,若該目錄的上層目錄已變成空目錄,則將其一并刪除。
  –help   在線(xiàn)幫助。
  –ignore-fail-on-non-empty   忽略非空目錄的錯(cuò)誤信息。
  –verbose   顯示指令執(zhí)行過(guò)程。
  –version   顯示版本信息。

3)顯示文件內(nèi)容

1. cat

功能:

把檔案串連接后傳到基本輸出到屏幕或加 > fileName 到另一個(gè)檔案

使用權(quán)限:

所有使用者 

語(yǔ)法:

cat [-AbeEnstTuv] [–help] [–version] fileName 

參數(shù):

-n 或 –number 由 1 開(kāi)始對(duì)所有輸出的行數(shù)編號(hào)
-b 或 –number-nonblank 和 -n 相似,只不過(guò)對(duì)于空白行不編號(hào)
-s 或 –squeeze-blank 當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
-v 或 –show-nonprinting

范例:

cat -n textfile1 > textfile2 把 textfile1 的檔案內(nèi)容加上行號(hào)后輸入 textfile2 這個(gè)檔案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的檔案內(nèi)容加上行號(hào)(空白行不加)之后將內(nèi)容附加到 textfile3 里。

cat < /dev/stdin > 1.txt //利用輸入重定向 CRTL+D 結(jié)束輸入
cat /dev/null > 1.txt   //輸出重定向進(jìn)行清空

2. head

功能:

查找文件的前多少行

語(yǔ)法:

head [-n] filename

3. tail

功能:

查找文件的莫問(wèn)多少行

語(yǔ)法:

tail [-n] filename

4. more

功能:

分屏顯示

用法

more filename

4)拷貝和移動(dòng)文件目錄

1. cp

功能說(shuō)明:

cp 源文件 目標(biāo)文件
將源文件復(fù)制為目標(biāo)文件或目錄。

語(yǔ)法:

cp [-abdfilpPrRsuvx][-S <備份字尾字符串>][-V <備份方式>][–help][–spares=<使用時(shí)機(jī)>][–version][源文件或目錄](méi)[目標(biāo)文件或目錄](méi) [目的目錄](méi)

補(bǔ)充說(shuō)明:cp指令用在復(fù)制文件或目錄,如同時(shí)指定兩個(gè)以上的文件或目錄,且最后的目的地是一個(gè)已經(jīng)存在的目錄,則它會(huì)把前面指定的所有文件或目錄復(fù)制到該目錄中。若同時(shí)指定多個(gè)文件或目錄,而最后的目的地并非是一個(gè)已存在的目錄,則會(huì)出現(xiàn)錯(cuò)誤信息。

2. mv

功能說(shuō)明:

mv [源文件、目錄](méi) [目的文件、目錄](méi)
移動(dòng)或更名現(xiàn)有的文件或目錄。

語(yǔ)法:

mv [-bfiuv][–help][–version][-S <附加字尾>][-V <方法>][源文件或目錄](méi)[目標(biāo)文件或目錄](méi)

補(bǔ)充說(shuō)明:mv可移動(dòng)文件或目錄,或是更改文件或目錄的名稱(chēng)。

參數(shù):

 -b或–backup  若需覆蓋文件,則覆蓋前先行備份。 
 -f或–force  若目標(biāo)文件或目錄與現(xiàn)有的文件或目錄重復(fù),則直接覆蓋現(xiàn)有的文 件或目錄。 
 -i或–interactive  覆蓋前先行詢(xún)問(wèn)用戶(hù)。 
 -S<附加字尾>或
 –suffix=<附加字尾>  與-b參數(shù)一并使用,可指定備份文件的所要附加的字尾。 
 -u或–update  在移動(dòng)或更改文件名時(shí),若目標(biāo)文件已存在,且其文件日期比源文件新,則不覆蓋目標(biāo)文件。 
 -v或–verbose  執(zhí)行時(shí)顯示詳細(xì)的信息。 
 -V=<方法>或
 –version-control=<方法>  與-b參數(shù)一并使用,可指定備份的方法。 
 –help  顯示幫助。 
 –version  顯示版本信息

5)文件目錄權(quán)限

1. 權(quán)限

文件的權(quán)限:

以普通文件為例,使用 ls -l 命令,可以看到結(jié)果的第一列是 -rwxrwxrwx 的形式,其中第一個(gè)字符 '-' 表示這個(gè)文件為普通文件,它也可以是其他的字符,不同的字符代表不同類(lèi)型的文件。其后的一串字符表明了該文件的權(quán)限,其中:

  • 1)r 表明該文件具有可讀權(quán)限,若該位置為 '-' ,則表明文件不可讀;
  • 2)w 表明該文件具有寫(xiě)權(quán)限,若該位置為 '-' ,則表明文件不可寫(xiě);
  • 3)x 表明該文件具有可執(zhí)行權(quán)限,若該位置為 '-' ,則表明文件不具有可執(zhí)行權(quán)限;
  • 4)第一個(gè) rwx 表示該文件的所有者對(duì)該文件的權(quán)限;第二個(gè) rwx 表示該文件所屬組對(duì)該文件的權(quán)限;第三個(gè) rwx 表示其他用戶(hù)對(duì)該文件的權(quán)限。

2. 權(quán)限所屬對(duì)象

文件所有者:生成文件或目錄的當(dāng)前人,權(quán)限最高,用u表示。文件所屬用戶(hù)組:系統(tǒng)管理員分配的同組一個(gè)或幾個(gè)人,用g表示。其他人對(duì)此文件的權(quán)限:除擁有者、用戶(hù)組以外的人,用o 表示。所有人:包括擁有者,所屬用戶(hù)組、其他用戶(hù),用a表示

-rwxr(所有者) -xr(所在組) -x(其他人)

3.修改屬性chmod

chmod命令用來(lái)修改文件目錄的訪問(wèn)權(quán)限,修改權(quán)限的前提條件是在修改權(quán)限時(shí)具有可操作權(quán)限。

(a)用字母表示權(quán)限Who(u、g、o、a)+cp(“=”設(shè)置權(quán)限“+”添加權(quán)限“-”刪除權(quán)限)+permission(“r”讀權(quán)限“w”寫(xiě)權(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   無(wú)權(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)組的命令。

語(yǔ)法

chown [-cfhvR] [--help] [--version] user[:group] file...

參數(shù) :

user : 新的文件擁有者的使用者 ID
group : 新的文件擁有者的使用者組(group)
-c : 顯示更改的部分的信息
-f : 忽略錯(cuò)誤信息
-h :修復(fù)符號(hào)鏈接
-v : 顯示詳細(xì)的處理信息
-R : 處理指定目錄以及其子目錄下的所有文件
--help : 顯示輔助說(shuō)明
--version : 顯示版本

實(shí)例:把 /var/run/httpd.pid 的所有者設(shè)置 root:

chown root /var/run/httpd.pid

5. chgrp改變文件或目錄所屬組

Linux chgrp(英文全拼:change group)命令用于變更文件或目錄的所屬群組。

與 chown 命令不同,chgrp 允許普通用戶(hù)改變文件所屬的組,只要該用戶(hù)是該組的一員。

語(yǔ)法

chgrp [-cfhRv][--help][--version][所屬群組][文件或目錄...] 或 chgrp [-cfhRv][--help][--reference=<參考文件或目錄>][--version][文件或目錄...]

參數(shù)說(shuō)明:

  -c或--changes 效果類(lèi)似'-v'參數(shù),但僅回報(bào)更改的部分。
  -f或--quiet或--silent  不顯示錯(cuò)誤信息。
  -h或--no-dereference  只對(duì)符號(hào)連接的文件作修改,而不更動(dòng)其他任何相關(guān)文件。
  -R或--recursive  遞歸處理,將指定目錄下的所有文件及子目錄一并處理。
  -v或--verbose  顯示指令執(zhí)行過(guò)程。
  --help  在線(xiàn)幫助。
  --reference=<參考文件或目錄>  把指定文件或目錄的所屬群組全部設(shè)成和參考文件或目錄的所屬群組相同。
  --version  顯示版本信息。

Chown、chgroup使用頻率較低,了解即可。

6)find查找文件

Linux find 命令用來(lái)在指定目錄下查找文件。任何位于參數(shù)之前的字符串都將被視為欲查找的目錄名。

如果使用該命令時(shí),不設(shè)置任何參數(shù),則 find 命令將在當(dāng)前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進(jìn)行顯示。

我們有時(shí)候還要模糊查找某個(gè)文件,比如根據(jù)文件的后綴名,文件創(chuàng)建時(shí)間,文件大小等等。

語(yǔ)法:

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

find 根據(jù)下列規(guī)則判斷 path 和 expression,在命令列上第一個(gè) - ( ) , ! 之前的部份為 path,之后的是 expression。

如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 為預(yù)設(shè) expression。

expression 中可使用的選項(xiàng)有二三十個(gè)之多,在此只介紹最常用的部份。

參數(shù)說(shuō)明:



-name name, -iname name : 文件名稱(chēng)符合 name 的文件。iname 會(huì)忽略大小寫(xiě)
-user 按照用戶(hù)(文件的屬主)
-size n : 文件大小 是 n 單位,b 代表 512 位元組的區(qū)塊,c 表示字元數(shù),k 表示 kilo bytes,w 是二個(gè)位元組。
-mtime 按照最后一次修改時(shí)間
-atime 按照最后一次訪問(wèn)時(shí)間
-perm :按照文件的權(quán)限
-type typen : 查找文件類(lèi)型為typen的文件
 c: 字符設(shè)備
 d: 目錄
 c: 字型裝置文件
 b: 區(qū)塊裝置文件
 p: 具名貯列
 f: 一般文件
 l: 符號(hào)連結(jié)
 s: socket

注意find 的使用條件所查找的路徑必須具有讀權(quán)限。查找選項(xiàng)通過(guò)文件屬性來(lái)查找。

例如:實(shí)例

  • 1.將當(dāng)前目錄及其子目錄下所有文件后綴為 .c 的文件列出來(lái):
# find . -name '*.c'
  • 2.將目前目錄及其下子目錄中所有一般文件列出
# find . -type f
  • 3.將當(dāng)前目錄及其子目錄下所有最近 20 天內(nèi)更新過(guò)的文件列出:
# find . -ctime -20
  • 4.查找 /var/log 目錄中更改時(shí)間在 7 日以前的普通文件,并在刪除之前詢(xún)問(wèn)它們:
# find /var/log -type f -mtime +7 -ok rm {} \;
  • 5.查找當(dāng)前目錄中文件屬主具有讀、寫(xiě)權(quán)限,并且文件所屬組的用戶(hù)和其他用戶(hù)具有讀權(quán)限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
  • 6.查找系統(tǒng)中所有文件長(zhǎng)度為 0 的普通文件,并列出它們的完整路徑:
# find / -type f -size 0 -exec ls -l {} \;
  1. whereiswhereis命令用于查找文件。該指令會(huì)在特定目錄中查找符合條件的文件。這些文件應(yīng)屬于原始代碼、二進(jìn)制文件,或是幫助文件。該指令只能用于查找二進(jìn)制文件、源代碼文件和man手冊(cè)頁(yè),一般文件的定位需使用locate命令。

語(yǔ)法

whereis [-bfmsu][-B <目錄>...][-M <目錄>...][-S <目錄>...][文件...]

參數(shù):

-b  只查找二進(jìn)制文件。
-B<目錄>  只在設(shè)置的目錄下查找二進(jìn)制文件。
-f  不顯示文件名前的路徑名稱(chēng)。
-m  只查找說(shuō)明文件。
-M<目錄>  只在設(shè)置的目錄下查找說(shuō)明文件。
-s  只查找原始代碼文件。
-S<目錄>  只在設(shè)置的目錄下查找原始代碼文件。
-u  查找不包含指定類(lèi)型的文件。

實(shí)例:

  • 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)庫(kù)頭文件stdio.h位置
peng@ubuntu:~/test$ whereis stdio.h
stdio: /usr/include/stdio.h /usr/share/man/man3/stdio.3.gz

7)grep過(guò)濾和統(tǒng)計(jì)

功能:查出包含某些字符串的結(jié)果,對(duì)文件或輸出結(jié)果進(jìn)行過(guò)濾,對(duì)于大小寫(xiě)有一定 要求。

語(yǔ)法:

grep [option] string filename

補(bǔ)充說(shuō)明:grep指令用于查找內(nèi)容包含指定的范本樣式的文件,如果發(fā)現(xiàn)某文件的內(nèi)容符合所指定的范本樣式,預(yù)設(shè)grep指令會(huì)把含有范本樣式的那一列顯示出來(lái)。若不指定任何文件名稱(chēng),或是所給予的文件名為“-”,則grep指令會(huì)從標(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)計(jì)匹配的行數(shù)
-e:同時(shí)匹配多個(gè)pattern
-i:忽略字符的大小寫(xiě)
-n:顯示匹配的行號(hào)
-o:只顯示匹配的字符串
-v:顯示沒(méi)有匹配pattern的那一行,相當(dāng)于反向匹配
-w:匹配整個(gè)單詞

舉例:

1、在當(dāng)前目錄中,查找后綴有 file 字樣的文件中包含 test 字符串的文件,并打印出該字符串的行。此時(shí),可以使用如下命令:

grep test *file 

2、以遞歸的方式查找符合條件的文件。例如,查找指定目錄/etc/acpi 及其子目錄(如果存在子目錄的話(huà))下所有文件中包含字符串'update'的文件,并打印出該字符串所在行的內(nèi)容,使用的命令為:

grep -r update /etc/acpi  

3、反向查找。前面各個(gè)例子是查找并打印出符合條件的行,通過(guò)'-v'參數(shù)可以打印出不符合條件行的內(nèi)容。

查找文件名中包含 test 的文件中不包含test 的行,此時(shí),使用的命令為:

grep -v test *test*

grep應(yīng)用非常頻繁,經(jīng)常還會(huì)和正則表達(dá)式一起使用,常用的正則表達(dá)式:

.:任意單個(gè)字符
*:任意字符多次
[]:指定范圍,如[0-9]、[a-z]、[A-Z]、[0-9a-zA-Z]
^:行首
$:行尾
^$:空行

舉例假定如下文件:圖片

圖片圖片

9)wc計(jì)數(shù)

功能:Linux wc命令用于計(jì)算字?jǐn)?shù)。利用wc指令我們可以計(jì)算文件的Byte數(shù)、字?jǐn)?shù)、或是列數(shù),若不指定文件名稱(chēng)、或是所給予的文件名為'-',則wc指令會(huì)從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù)。

wc [選項(xiàng)] 文件名

  • l 統(tǒng)計(jì)多少行
  • w 統(tǒng)計(jì)多少單詞
  • c 統(tǒng)計(jì)多少個(gè)字符

語(yǔ)法

wc [-clw][--help][--version][文件...]

參數(shù):

-c或--bytes或--chars 只顯示Bytes數(shù)。
-l或--lines 顯示行數(shù)。
-w或--words 只顯示字?jǐn)?shù)。
--help 在線(xiàn)幫助。
--version 顯示版本信息。

實(shí)例

在默認(rèn)的情況下,wc將計(jì)算指定文件的行數(shù)、字?jǐn)?shù),以及字節(jié)數(shù)。使用的命令為:

wc testfile 

8) tar文件壓縮解壓

tar命令可以為linux的文件和目錄創(chuàng)建檔案。利用tar命令,可以把一大堆的文件和目錄全部打包成一個(gè)文件,這對(duì)于備份文件或?qū)讉€(gè)文件組合成為一個(gè)文件以便于網(wǎng)絡(luò)傳輸是非常有用的。

語(yǔ)法

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 顯示操作過(guò)程
-l 文件系統(tǒng)邊界設(shè)置
-k 保留原有文件不覆蓋
-m 保留文件不被覆蓋
-W 確認(rèn)壓縮文件的正確性

常見(jiàn)解壓/壓縮命令tar

解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是壓縮!)

.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

舉例:

實(shí)例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 壓縮 

實(shí)例2:查閱上述 tar包內(nèi)有哪些文件

圖片說(shuō)明:

由于我們使用 gzip 壓縮的log.tar.gz,所以要查閱log.tar.gz包內(nèi)的文件時(shí),就得要加上 z 這個(gè)參數(shù)了。

實(shí)例3:將tar 包解壓縮

命令:

tar -zxvf /opt/soft/test/log.tar.gz

六、shell的特殊字符

1) 通配符* ?

* :通配0個(gè)或多個(gè)字符 
* ? :通配任意單個(gè)字符 
* [s] :通配某個(gè)范圍內(nèi)的任意一個(gè)字符 

舉例:圖片圖片

2) 一行執(zhí)行多條命令

一行執(zhí)行多條命令:在命令與命令之間用“;”隔開(kāi)

cd ; ls

3)  輸出重定向:>,>>

>  :將一個(gè)命令的輸出放入文件中
>> :輸出重定向但不會(huì)把源文件覆蓋,在原文件末尾追加

舉例:將ls的輸出結(jié)果輸出給test.txt

  1. 當(dāng)前目錄沒(méi)有操作權(quán)限cd .. 退回上一級(jí)目錄
圖片
  1. 修改文件夾權(quán)限為方便起見(jiàn),我們將test的權(quán)限全部打開(kāi)
圖片

用“>”的輸出結(jié)果如下:

圖片

然后再用“>>”做測(cè)試其結(jié)果如下

圖片

4) 輸入重定向:<

下面再實(shí)現(xiàn)以下輸入重定向:

圖片

5) 管道符:|

管道符“|”:將一個(gè)進(jìn)程的輸出作為另一個(gè)進(jìn)程的輸入

輸入命令 :

 ls -l /etc | cat

顯示的結(jié)果如上圖所示。

6) 其他:%,$,~

% :作業(yè)控制,提示符等
$ : 取某一列的值,取變量值等

七、用戶(hù)及進(jìn)程

1、日期時(shí)間進(jìn)程查看

a) date: 顯示日期時(shí)間

圖片

b) cal :顯示日歷

圖片

2、ps進(jìn)程查詢(xún)

功能:ps (英文全拼:process status)命令用于顯示當(dāng)前進(jìn)程的狀態(tài),類(lèi)似于 windows 的任務(wù)管理器。

語(yǔ)法

ps [options] [--help]

ps 的參數(shù)非常多, 在此僅列出幾個(gè)常用的參數(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: 終端的次要裝置號(hào)碼 (minor device number of tty)
 STAT: 該行程的狀態(tài):
  D: 無(wú)法中斷的休眠狀態(tài) (通常 IO 的進(jìn)程)
  R: 正在執(zhí)行中
  S: 靜止?fàn)顟B(tài)
  T: 暫停執(zhí)行
  Z: 不存在但暫時(shí)無(wú)法消除
  W: 沒(méi)有足夠的記憶體分頁(yè)可分配
  <: 高優(yōu)先序的行程
  N: 低優(yōu)先序的行程
  L: 有記憶體分頁(yè)分配并鎖在記憶體內(nèi) (實(shí)時(shí)系統(tǒng)或捱A I/O)
START: 行程開(kāi)始時(shí)間
TIME: 執(zhí)行的時(shí)間
COMMAND:所執(zhí)行的指令 

實(shí)例

  1. 顯示所有進(jìn)程信息,連同命令行
圖片
  1. 查找指定進(jìn)程init:
圖片
  1. 顯示指定用戶(hù)信息
圖片

3、sudo用戶(hù)管理

終端的命令行最右邊的字符

$  普通用戶(hù)
# 管理員用戶(hù)

有很多命令需要管理員權(quán)限才能使用,可以輸入命令前加sudo,也可以直接切換到管理員再執(zhí)行。

切換到管理員root

圖片

切換用戶(hù)

su 用戶(hù)名  :切換賬戶(hù)
圖片

4、電源管理

a) shutdown

安全關(guān)閉或重啟Linux系統(tǒng),它在系統(tǒng)關(guān)閉之前給系統(tǒng)上的所有登陸用戶(hù)提示一條警告信息。該命令還允許用戶(hù)指定一個(gè)時(shí)間參數(shù)、可以是一個(gè)精確的時(shí)間、也可以是從現(xiàn)在開(kāi)始的一段時(shí)間。精確時(shí)間的格式:hh:mm 表示小時(shí)和分鐘,時(shí)間段由 + 和分鐘數(shù)表示。系統(tǒng)執(zhí)行該命令后會(huì)自動(dòng)進(jìn)行數(shù)據(jù)同步的工作。

功能說(shuō)明:系統(tǒng)關(guān)機(jī)指令。

語(yǔ)  法:shutdown [-efFhknr][-t 秒數(shù)][時(shí)間][警告信息]

補(bǔ)充說(shuō)明:shutdown指令可以關(guān)閉所有程序,并依用戶(hù)的需要,進(jìn)行重新開(kāi)機(jī)或關(guān)機(jī)的動(dòng)作。

參數(shù):

 -c  當(dāng)執(zhí)行”shutdown -h 11:50”指令時(shí),只要按+鍵就可以中斷關(guān)機(jī)的指令。 
 -f  重新啟動(dòng)時(shí)不執(zhí)行fsck。 
 -F  重新啟動(dòng)時(shí)執(zhí)行fsck。 
 -h  將系統(tǒng)關(guān)機(jī)。 
 -k  只是送出信息給所有用戶(hù),但不會(huì)實(shí)際關(guān)機(jī)。 
 -n  不調(diào)用init程序進(jìn)行關(guān)機(jī),而由shutdown自己進(jìn)行。 
 -r shutdown之后重新啟動(dòng)。 
 -t<秒數(shù)>  送出警告信息和刪除信息之間要延遲多少秒。 
 [時(shí)間]  設(shè)置多久時(shí)間后執(zhí)行shutdown指令。 
 [警告信息]  要傳送給所有登入用戶(hù)的信息。

b) reboot

功能說(shuō)明:重新開(kāi)機(jī)。

語(yǔ)  法:

dreboot [-dfinw]

補(bǔ)充說(shuō)明:執(zhí)行reboot指令可讓系統(tǒng)停止運(yùn)作,并重新開(kāi)機(jī)。

參數(shù):

  -d  重新開(kāi)機(jī)時(shí)不把數(shù)據(jù)寫(xiě)入記錄文件/var/tmp/wtmp。本參數(shù)具有”-n”參數(shù)的效果。 
  -f  強(qiáng)制重新開(kāi)機(jī),不調(diào)用shutdown指令的功能。 
  -i  在重開(kāi)機(jī)之前,先關(guān)閉所有網(wǎng)絡(luò)界面。 
  -n  重開(kāi)機(jī)之前不檢查是否有未結(jié)束的程序。 
  -w  僅做測(cè)試,并不真的將系統(tǒng)重新開(kāi)機(jī),只會(huì)把重開(kāi)機(jī)的數(shù)據(jù)寫(xiě)入/var/log目錄下的wtmp記錄文件。

c) halt

功能說(shuō)明:關(guān)閉系統(tǒng)。

語(yǔ)法:

halt [-dfinpw]

補(bǔ)充說(shuō)明:halt會(huì)先檢測(cè)系統(tǒng)的runlevel。若runlevel為0或6,則關(guān)閉系統(tǒng),否則即調(diào)用shutdown來(lái)關(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中記錄,而不實(shí)際結(jié)束系統(tǒng)。

4、用戶(hù)管理補(bǔ)充

(1)用戶(hù)密碼要求

用戶(hù)的密碼要求有6~8個(gè)字符,其中至少要包含2個(gè)字母、1個(gè)數(shù)字或特殊字符,而且不能與用戶(hù)名相同,還要不同于以前的密碼,至少要有三個(gè)字符不同與以前的密碼。

(2)passwd修改密碼命令

輸入命令 passwd
輸入原密碼 ****
輸入新密碼
確認(rèn)新密碼

注意:在輸入密碼過(guò)程中機(jī)器是沒(méi)有任何動(dòng)作的

(3)查找用戶(hù)

id

查看用戶(hù)ID(用戶(hù)名)及其所屬組ID(組名)

user

查看已經(jīng)登陸到當(dāng)前系統(tǒng)中的用戶(hù),只顯示出用戶(hù)名。

who

查看用戶(hù)的詳細(xì)信息

who am i

查看當(dāng)前用戶(hù)自己的信息

whoanmi

查看當(dāng)前用戶(hù)自己的用戶(hù)名

八、相關(guān)信息查詢(xún)

產(chǎn)看磁盤(pán)信息

1. du

顯示磁盤(pán)使用摘要信息

du 以Block為單位方式顯示
-k  以k字節(jié)方式顯示
-m 以m字節(jié)方式顯示
-s 顯示當(dāng)前目錄下的內(nèi)容總的占用磁盤(pán)的大小,以Block為單位
以Block單位顯示的數(shù)字是以k字節(jié)方式顯示的數(shù)字的2倍,1k字節(jié)=2個(gè)Block

2. df

顯示整個(gè)文件系統(tǒng)的空間使用磁盤(pán)情況

-k 以k字節(jié)方式顯示

九、網(wǎng)絡(luò)配置

1、ping

查看當(dāng)前機(jī)器與另一臺(tái)機(jī)器的聯(lián)通情況ping 主機(jī)名稱(chēng)或者主機(jī)的IP:向ping后面的主機(jī)發(fā)送數(shù)據(jù)包,若被ping的主機(jī)有回復(fù)則表示連通的。

語(yǔ)法:

ping [-dfnqrRv][-c<完成次數(shù)>][-i<間隔秒數(shù)>][-I<網(wǎng)絡(luò)界面>][-l<前置載入>][-p<范本樣式>][-s<數(shù)據(jù)包大小>][-t<存活數(shù)值>][主機(jī)名稱(chēng)或IP地址]

補(bǔ)充說(shuō)明:執(zhí)行ping指令會(huì)使用ICMP傳輸協(xié)議,發(fā)出要求回應(yīng)的信息,若遠(yuǎn)端主機(jī)的網(wǎng)絡(luò)功能沒(méi)有問(wèn)題,就會(huì)回應(yīng)該信息,因而得知該主機(jī)運(yùn)作正常。

參數(shù):

  -d   使用Socket的SO_DEBUG功能。
  -c<完成次數(shù)>   設(shè)置完成要求回應(yīng)的次數(shù)。
  -f   極限檢測(cè)。
  -i<間隔秒數(shù)>   指定收發(fā)信息的間隔時(shí)間。
  -I<網(wǎng)絡(luò)界面>   使用指定的網(wǎng)絡(luò)界面送出數(shù)據(jù)包。
  -l<前置載入>   設(shè)置在送出要求信息之前,先行發(fā)出的數(shù)據(jù)包。
  -n   只輸出數(shù)值。
  -p<范本樣式>   設(shè)置填滿(mǎn)數(shù)據(jù)包的范本樣式。
  -q   不顯示指令執(zhí)行過(guò)程,開(kāi)頭和結(jié)尾的相關(guān)信息除外。
  -r   忽略普通的Routing Table,直接將數(shù)據(jù)包送到遠(yuǎn)端主機(jī)上。
  -R   記錄路由過(guò)程。
  -s<數(shù)據(jù)包大小>   設(shè)置數(shù)據(jù)包的大小。
  -t<存活數(shù)值>   設(shè)置存活數(shù)值TTL的大小。
  -v   詳細(xì)顯示指令的執(zhí)行過(guò)程。

圖片圖片

2、ifconfig

查看和配置當(dāng)前機(jī)器的網(wǎng)絡(luò)參數(shù)信息

語(yǔ)  法:

ifconfig [網(wǎng)絡(luò)設(shè)備][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<網(wǎng)絡(luò)設(shè)備類(lèi)型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<網(wǎng)絡(luò)媒介類(lèi)型>][mem_start<內(nèi)存地址>][metric<數(shù)目>][mtu<字節(jié)>][netmask<子網(wǎng)掩碼>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]

補(bǔ)充說(shuō)明: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è)備。
  <hw<網(wǎng)絡(luò)設(shè)備類(lèi)型><硬件地址>   設(shè)置網(wǎng)絡(luò)設(shè)備的類(lèi)型與硬件地址。
  io_addr<I/O地址>   設(shè)置網(wǎng)絡(luò)設(shè)備的I/O地址。
  irq<IRQ地址>   設(shè)置網(wǎng)絡(luò)設(shè)備的IRQ。
  media<網(wǎng)絡(luò)媒介類(lèi)型>   設(shè)置網(wǎng)絡(luò)設(shè)備的媒介類(lèi)型。
  mem_start<內(nèi)存地址>   設(shè)置網(wǎng)絡(luò)設(shè)備在主內(nèi)存所占用的起始地址。
  metric<數(shù)目>   指定在計(jì)算數(shù)據(jù)包的轉(zhuǎn)送次數(shù)時(shí),所要加上的數(shù)目。
  mtu<字節(jié)>   設(shè)置網(wǎng)絡(luò)設(shè)備的MTU。
  netmask<子網(wǎng)掩碼>   設(shè)置網(wǎng)絡(luò)設(shè)備的子網(wǎng)掩碼。
  tunnel<地址>   建立IPv4與IPv6之間的隧道通信地址。
  up   啟動(dòng)指定的網(wǎng)絡(luò)設(shè)備。
  -broadcast<地址>   將要送往指定地址的數(shù)據(jù)包當(dāng)成廣播數(shù)據(jù)包來(lái)處理。
  -pointopoint<地址>   與指定地址的網(wǎng)絡(luò)設(shè)備建立直接連線(xiàn),此模式具有保密功能。
  -promisc   關(guān)閉或啟動(dòng)指定網(wǎng)絡(luò)設(shè)備的promiscuous模式。
  [IP地址]   指定網(wǎng)絡(luò)設(shè)備的IP地址。
  [網(wǎng)絡(luò)設(shè)備]   指定網(wǎng)絡(luò)設(shè)備的名稱(chēng)。

舉例

ifconfig -a // 顯示產(chǎn)看當(dāng)前機(jī)器的IP、Netmask、Gateway等網(wǎng)絡(luò)信息
ifconfig eth0 up(down) //激活與關(guān)閉某個(gè)網(wǎng)絡(luò)適配器
ifconfig eth0 [ip address] netmask [address] //設(shè)置IP和子網(wǎng)掩碼
圖片

十、Linux應(yīng)用程序的安裝與卸載基礎(chǔ)

1、Linux安裝包

Linux安裝包的通常是tar的格式,同時(shí)也支持自己定義的格式。在redhat中軟件安裝包的格式通常是rpm在Ubuntu中軟件安裝包的格式通常是deb

2、 安裝包命名通用規(guī)則

在Linux中常用的命名格式是:

軟件名稱(chēng)版本號(hào)-修訂版本號(hào)體系架構(gòu).擴(kuò)展名

3、安裝包的離線(xiàn)安裝及卸載

dpkg
dpkg  -i   安裝
dpkg     -p   卸載

源文件安裝的過(guò)程:

配置configure  >>  編譯make  >>  安裝 make  install

4、在線(xiàn)安裝及卸載

安裝 :

apt-get install 

卸載 :

apt-get remove -purge  

十一、VIM編譯工具

Vim是從 vi 發(fā)展出來(lái)的一個(gè)文本編輯器。代碼補(bǔ)完、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。

簡(jiǎn)單的來(lái)說(shuō), vi 是老式的字處理器,不過(guò)功能已經(jīng)很齊全了,但是還是有可以進(jìn)步的地方。vim 則可以說(shuō)是程序開(kāi)發(fā)者的一項(xiàng)很好用的工具。

連 vim 的官方網(wǎng)站 (http://www.) 自己也說(shuō) vim 是一個(gè)程序開(kāi)發(fā)工具而不是文字處理軟件。

1、vim優(yōu)勢(shì):

  • a)所有Unix Like系統(tǒng)都會(huì)內(nèi)置vi文本編輯器,其他的文本編輯器則不一定會(huì)存在;
  • b)很多軟件的編輯接口都會(huì)主動(dòng)調(diào)用vi
  • c)vi具有程序編輯能力,可以主動(dòng)以字體顏色辨別語(yǔ)法的正確性,方便程序設(shè)計(jì);
  • d)程序簡(jiǎn)單編輯速度快。

2、vi的模式:

基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線(xiàn)命令模式(Last line mode)。這三種模式的作用分別是:

1)命令模式:

用戶(hù)剛剛啟動(dòng) vi/vim,便進(jìn)入了命令模式。

此狀態(tài)下敲擊鍵盤(pán)動(dòng)作會(huì)被Vim識(shí)別為命令,而非輸入字符。比如我們此時(shí)按下i,并不會(huì)輸入一個(gè)字符,i被當(dāng)作了一個(gè)命令。

以下是常用的幾個(gè)命令:

i 切換到輸入模式,以輸入字符。
x 刪除當(dāng)前光標(biāo)所在處的字符。
: 切換到底線(xiàn)命令模式,以在最底一行輸入命令。

若想要編輯文本:?jiǎn)?dòng)Vim,進(jìn)入了命令模式,按下i,切換到輸入模式。

命令模式只有一些最基本的命令,因此仍要依靠底線(xiàn)命令模式輸入更多命令。

2)輸入模式

在命令模式下按下i就進(jìn)入了輸入模式。

在輸入模式中,可以使用以下按鍵:

字符按鍵以及Shift組合,輸入字符

ENTER,回車(chē)鍵,換行
BACK SPACE,退格鍵,刪除光標(biāo)前一個(gè)字符
DEL,刪除鍵,刪除光標(biāo)后一個(gè)字符
方向鍵,在文本中移動(dòng)光標(biāo)
HOME/END,移動(dòng)光標(biāo)到行首/行尾
Page Up/Page Down,上/下翻頁(yè)
Insert,切換光標(biāo)為輸入/替換模式,光標(biāo)將變成豎線(xiàn)/下劃線(xiàn)
ESC,退出輸入模式,切換到命令模式

3)底行命令模式

在命令模式下按下:(英文冒號(hào))就進(jìn)入了底線(xiàn)命令模式。

底線(xiàn)命令模式可以輸入單個(gè)或多個(gè)字符的命令,可用的命令非常多。

在底線(xiàn)命令模式中,基本的命令有(已經(jīng)省略了冒號(hào)):

q 退出程序
w 保存文件
按ESC鍵可隨時(shí)退出底線(xiàn)命令模式。

簡(jiǎn)單的說(shuō),我們可以將這三個(gè)模式想成底下的圖標(biāo)來(lái)表示:

圖片

3. vim cheat sheet

下圖就是赫赫有名的vim cheat sheet,一圖包含了大部分常用的vim命令,建議保存

圖片

4. 舉例

如果你想要使用 vim 來(lái)建立一個(gè)名為 peng.c 的文件時(shí),輸入下面命令:

peng@ubuntu:~$ vim peng.c
圖片

按下 i 進(jìn)入輸入模式(也稱(chēng)為編輯模式),開(kāi)始編輯文字

在一般模式之中,只要按下 i, o, a 等字符就可以進(jìn)入輸入模式了!

在編輯模式當(dāng)中,你可以發(fā)現(xiàn)在左下角狀態(tài)欄中會(huì)出現(xiàn) –INSERT- 的字樣,那就是可以輸入任意字符的提示。

這個(gè)時(shí)候,鍵盤(pán)上除了 Esc 這個(gè)按鍵之外,其他的按鍵都可以視作為一般的輸入按鈕了,所以你可以進(jìn)行任何的編輯。

圖片

按下 ESC 按鈕回到一般模式

好了,假設(shè)我已經(jīng)按照上面的樣式給他編輯完畢了,那么應(yīng)該要如何退出呢?是的!沒(méi)錯(cuò)!就是給他按下 Esc 這個(gè)按鈕即可!馬上你就會(huì)發(fā)現(xiàn)畫(huà)面左下角的 – INSERT – 不見(jiàn)了!

在一般模式中按下 :wq 儲(chǔ)存后離開(kāi) vi

OK,我們要存檔了,存盤(pán)并離開(kāi)的指令很簡(jiǎn)單,輸入 :wq 即可保存離開(kāi)!

圖片

OK! 這樣我們就成功創(chuàng)建了一個(gè)peng.c 的文件。

5. 快捷鍵說(shuō)明

移動(dòng)光標(biāo)的方法

操作含義
h 或 向左箭頭鍵(←)光標(biāo)向左移動(dòng)一個(gè)字符
j 或 向下箭頭鍵(↓)光標(biāo)向下移動(dòng)一個(gè)字符
k 或 向上箭頭鍵(↑)光標(biāo)向上移動(dòng)一個(gè)字符
l 或 向右箭頭鍵(→)光標(biāo)向右移動(dòng)一個(gè)字符

如果你將右手放在鍵盤(pán)上的話(huà),你會(huì)發(fā)現(xiàn) hjkl 是排列在一起的,因此可以使用這四個(gè)按鈕來(lái)移動(dòng)光標(biāo)。如果想要進(jìn)行多次移動(dòng)的話(huà),例如向下移動(dòng) 30 行,可以使用 '30j' 或 '30↓' 的組合按鍵, 亦即加上想要進(jìn)行的次數(shù)(數(shù)字)后,按下動(dòng)作即可!

快捷鍵含義
[Ctrl] + [f]屏幕『向下』移動(dòng)一頁(yè),相當(dāng)于 [Page Down]按鍵 (常用)
[Ctrl] + [b]屏幕『向上』移動(dòng)一頁(yè),相當(dāng)于 [Page Up] 按鍵 (常用)
[Ctrl] + [d]屏幕『向下』移動(dòng)半頁(yè)
[Ctrl] + [u]屏幕『向上』移動(dòng)半頁(yè)
+光標(biāo)移動(dòng)到非空格符的下一行
-光標(biāo)移動(dòng)到非空格符的上一行
n那個(gè) n 表示『數(shù)字』,例如 20 。按下數(shù)字后再按空格鍵,光標(biāo)會(huì)向右移動(dòng)這一行的 n 個(gè)字符。例如 20則光標(biāo)會(huì)向后面移動(dòng) 20 個(gè)字符距離。
0 或功能鍵[Home]這是數(shù)字『 0 』:移動(dòng)到這一行的最前面字符處 (常用)
$ 或功能鍵[End]移動(dòng)到這一行的最后面字符處(常用)
H光標(biāo)移動(dòng)到這個(gè)屏幕的最上方那一行的第一個(gè)字符
M光標(biāo)移動(dòng)到這個(gè)屏幕的中央那一行的第一個(gè)字符
L光標(biāo)移動(dòng)到這個(gè)屏幕的最下方那一行的第一個(gè)字符
G移動(dòng)到這個(gè)檔案的最后一行(常用)
nGn 為數(shù)字。移動(dòng)到這個(gè)檔案的第 n 行。例如 20G 則會(huì)移動(dòng)到這個(gè)檔案的第 20 行(可配合 :set nu)
gg移動(dòng)到這個(gè)檔案的第一行,相當(dāng)于 1G 啊!(常用)
nn 為數(shù)字。光標(biāo)向下移動(dòng) n 行(常用)

搜索替換

快捷鍵含義
/word向光標(biāo)之下尋找一個(gè)名稱(chēng)為 word 的字符串。例如要在檔案內(nèi)搜尋 vbird 這個(gè)字符串,就輸入 /vbird 即可!(常用)
?word向光標(biāo)之上尋找一個(gè)字符串名稱(chēng)為 word 的字符串。
n這個(gè) n 是英文按鍵。代表重復(fù)前一個(gè)搜尋的動(dòng)作。舉例來(lái)說(shuō), 如果剛剛我們執(zhí)行 /vbird 去向下搜尋 vbird 這個(gè)字符串,則按下 n 后,會(huì)向下繼續(xù)搜尋下一個(gè)名稱(chēng)為 vbird 的字符串。如果是執(zhí)行 ?vbird 的話(huà),那么按下 n 則會(huì)向上繼續(xù)搜尋名稱(chēng)為 vbird 的字符串!
N這個(gè) N 是英文按鍵。與 n 剛好相反,為『反向』進(jìn)行前一個(gè)搜尋動(dòng)作。例如 /vbird 后,按下 N 則表示『向上』搜尋 vbird 。

使用 /word 配合 n 及 N 是非常有幫助的!可以讓你重復(fù)的找到一些你搜尋的關(guān)鍵詞!

快捷鍵含義
:n1,n2s/word1/word2/gn1 與 n2 為數(shù)字。在第 n1 與 n2 行之間尋找 word1 這個(gè)字符串,并將該字符串取代為 word2 !舉例來(lái)說(shuō),在 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 !且在取代前顯示提示字符給用戶(hù)確認(rèn) (confirm) 是否需要取代!(常用)

刪除、復(fù)制與貼上

快捷鍵含義
x, X在一行字當(dāng)中,x 為向后刪除一個(gè)字符 (相當(dāng)于 [del] 按鍵), X 為向前刪除一個(gè)字符(相當(dāng)于 [backspace] 亦即是退格鍵) (常用)
nxn 為數(shù)字,連續(xù)向后刪除 n 個(gè)字符。舉例來(lái)說(shuō),我要連續(xù)刪除 10 個(gè)字符, 『10x』。
dd刪除游標(biāo)所在的那一整行(常用)
nddn 為數(shù)字。刪除光標(biāo)所在的向下 n 行,例如 20dd 則是刪除 20 行 (常用)
d1G刪除光標(biāo)所在到第一行的所有數(shù)據(jù)
dG刪除光標(biāo)所在到最后一行的所有數(shù)據(jù)
d$刪除游標(biāo)所在處,到該行的最后一個(gè)字符
d0那個(gè)是數(shù)字的 0 ,刪除游標(biāo)所在處,到該行的最前面一個(gè)字符
yy復(fù)制游標(biāo)所在的那一行(常用)
nyyn 為數(shù)字。復(fù)制光標(biāo)所在的向下 n 行,例如 20yy 則是復(fù)制 20 行(常用)
y1G復(fù)制游標(biāo)所在行到第一行的所有數(shù)據(jù)
yG復(fù)制游標(biāo)所在行到最后一行的所有數(shù)據(jù)
y0復(fù)制光標(biāo)所在的那個(gè)字符到該行行首的所有數(shù)據(jù)
y$復(fù)制光標(biāo)所在的那個(gè)字符到該行行尾的所有數(shù)據(jù)
p, Pp 為將已復(fù)制的數(shù)據(jù)在光標(biāo)下一行貼上,P 則為貼在游標(biāo)上一行!舉例來(lái)說(shuō),我目前光標(biāo)在第 20 行,且已經(jīng)復(fù)制了 10 行數(shù)據(jù)。則按下 p 后, 那 10 行數(shù)據(jù)會(huì)貼在原本的 20 行之后,亦即由 21 行開(kāi)始貼。但如果是按下 P 呢?那么原本的第 20 行會(huì)被推到變成 30 行。(常用)
J將光標(biāo)所在行與下一行的數(shù)據(jù)結(jié)合成同一行
c重復(fù)刪除多個(gè)數(shù)據(jù),例如向下刪除 10 行,[ 10cj ]
u復(fù)原前一個(gè)動(dòng)作。(常用)
.重復(fù)前一個(gè)動(dòng)作的意思。如果你想要重復(fù)刪除、重復(fù)貼上等等動(dòng)作,按下小數(shù)點(diǎn)『.』就好了!(常用)
[Ctrl]+r重做上一個(gè)動(dòng)作。(常用)

這個(gè) u 與 [Ctrl]+r 是很常用的指令!一個(gè)是復(fù)原,另一個(gè)則是重做一次~ 利用這兩個(gè)功能按鍵,你的編輯,嘿嘿!很快樂(lè)的啦!

一般模式切換到編輯模式的可用的按鈕說(shuō)明

進(jìn)入輸入或取代的編輯模式

快捷鍵含義
i, I進(jìn)入輸入模式(Insert mode):i 為『從目前光標(biāo)所在處輸入』, I 為『在目前所在行的第一個(gè)非空格符處開(kāi)始輸入』。(常用)
a, A進(jìn)入輸入模式(Insert mode):a 為『從目前光標(biāo)所在的下一個(gè)字符處開(kāi)始輸入』, A 為『從光標(biāo)所在行的最后一個(gè)字符處開(kāi)始輸入』。(常用)
o, O進(jìn)入輸入模式(Insert mode):這是英文字母 o 的大小寫(xiě)。o 為在目前光標(biāo)所在的下一行處輸入新的一行;O 為在目前光標(biāo)所在的上一行處輸入新的一行!(常用)
r, R進(jìn)入取代模式(Replace mode):r 只會(huì)取代光標(biāo)所在的那一個(gè)字符一次;R會(huì)一直取代光標(biāo)所在的文字,直到按下 ESC 為止;(常用)
[Esc]退出編輯模式,回到一般模式中(常用)

上面這些按鍵中,在 vi 畫(huà)面的左下角處會(huì)出現(xiàn)『--INSERT--』或『--REPLACE--』的字樣。由名稱(chēng)就知道該動(dòng)作了吧!!特別注意的是,我們上面也提過(guò)了,你想要在檔案里面輸入字符時(shí), 一定要在左下角處看到 INSERT 或 REPLACE 才能輸入。

一般模式切換到指令行模式的可用的按鈕說(shuō)明

指令行的儲(chǔ)存、離開(kāi)等指令

快捷鍵含義
:w將編輯的數(shù)據(jù)寫(xiě)入硬盤(pán)檔案中(常用)
:w!若文件屬性為『只讀』時(shí),強(qiáng)制寫(xiě)入該檔案。不過(guò),到底能不能寫(xiě)入, 還是跟你對(duì)該檔案的檔案權(quán)限有關(guān)?。?/td>
:q離開(kāi) vi (常用)
:q!若曾修改過(guò)檔案,又不想儲(chǔ)存,使用 ! 為強(qiáng)制離開(kāi)不儲(chǔ)存檔案。
:wq儲(chǔ)存后離開(kāi),若為 :wq! 則為強(qiáng)制儲(chǔ)存后離開(kāi) (常用)
ZZ這是大寫(xiě)的 Z 喔!如果修改過(guò),保存當(dāng)前文件,然后退出!效果等同于(保存并退出)
ZQ不保存,強(qiáng)制退出。效果等同于 :q!。
:w [filename]將編輯的數(shù)據(jù)儲(chǔ)存成另一個(gè)檔案(類(lèi)似另存新檔)
:r [filename]在編輯的數(shù)據(jù)中,讀入另一個(gè)檔案的數(shù)據(jù)。亦即將 『filename』 這個(gè)檔案內(nèi)容加到游標(biāo)所在行后面
:n1,n2 w [filename]將 n1 到 n2 的內(nèi)容儲(chǔ)存成 filename 這個(gè)檔案。
:! command暫時(shí)離開(kāi) vi 到指令行模式下執(zhí)行 command 的顯示結(jié)果!例如:『:! ls /home』即可在 vi 當(dāng)中查看 /home 底下以 ls 輸出的檔案信息!

vim 環(huán)境的變更

快捷鍵含義
:set nu顯示行號(hào),設(shè)定之后,會(huì)在每一行的前綴顯示該行的行號(hào)(常用)
:set nonu與 set nu 相反,為取消行號(hào)!

這些基礎(chǔ)知識(shí)都是必須掌握的知識(shí)點(diǎn),學(xué)會(huì)以后,就可以進(jìn)入到下一步Linux下的C程序開(kāi)發(fā)的學(xué)習(xí)了!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    免费观看一区二区三区黄片| 国产真人无遮挡免费视频一区| 国产av精品高清一区二区三区 | 手机在线观看亚洲中文字幕| 亚洲国产精品久久综合网| 欧美大粗爽一区二区三区| 午夜视频成人在线免费| 亚洲欧洲在线一区二区三区| 欧美日韩成人在线一区| 91香蕉国产观看免费人人| av一区二区三区天堂| 男女激情视频在线免费观看| 日韩欧美综合中文字幕| 欧美一区日韩二区亚洲三区| 日韩黄色大片免费在线| 国产精品不卡高清在线观看 | 亚洲精品中文字幕欧美| 亚洲熟女诱惑一区二区| 亚洲中文字幕免费人妻| 青青操视频在线观看国产| 国产又爽又猛又粗又色对黄| 亚洲一级二级三级精品| 国产视频在线一区二区| 婷婷色网视频在线播放| 富婆又大又白又丰满又紧又硬| 日本不卡一本二本三区| 亚洲一区二区三区av高清| 人妻久久一区二区三区精品99| 一区二区三区日韩中文| 99久久精品免费看国产高清| 亚洲欧美日韩另类第一页| 中国少妇精品偷拍视频| 免费观看潮喷到高潮大叫| 国产一区二区三区口爆在线| 国产高清精品福利私拍| 亚洲欧美中文日韩综合| 久久青青草原中文字幕| 风间中文字幕亚洲一区| 国内尹人香蕉综合在线| 中文字幕无线码一区欧美| 国产不卡在线免费观看视频|