看完这篇Linux基本的操作就会了
這個(gè)學(xué)期開了Linux的課程了,授課的老師也是比較負(fù)責(zé)任的一位。總的來說也算是比較系統(tǒng)地學(xué)習(xí)了一下Linux了~~~
本文章主要是總結(jié)Linux的基礎(chǔ)操作以及一些簡(jiǎn)單的概念~如果不熟悉的同學(xué)可下個(gè)Linux來玩玩(或者去買一個(gè)服務(wù)器玩玩【學(xué)生版的不是很貴】),對(duì)于開發(fā)者來說,能使用Linux做一些基本的操作是必要的!
那么接下來就開始吧,當(dāng)然了我的Linux僅僅是入門水平,如果有錯(cuò)的地方還需請(qǐng)大家多多包涵,并不吝在評(píng)論區(qū)指出錯(cuò)誤~
一、為什么我們要學(xué)習(xí)Linux
相信大部分人的PC端都是用Windows系統(tǒng)的,那我們?yōu)槭裁匆獙W(xué)習(xí)Linux這個(gè)操作系統(tǒng)呢???Windows圖形化界面做得這么好,日常基本使用的話,學(xué)習(xí)成本幾乎為零。
而Linux不一樣,可能剛接觸Linux的人會(huì)認(rèn)為:Linux好麻煩哦,不好玩,都是字符界面。不直觀、這個(gè)破系統(tǒng)是用來干嘛的~~
日常用的話Windows是比較順手的,但是我們要知道的是:我們開發(fā)出來的程序一般都是放在Linux下運(yùn)行的。
那可能就會(huì)有人提出疑問了:Windows同樣是操作系統(tǒng),為啥要放在Linux下,而不放在Windows下呢??相信Windows也是可以運(yùn)行我們寫出來的程序的。
我總結(jié)了Linux的幾個(gè)優(yōu)點(diǎn):
參考資料:
- www.zhihu.com/question/19…
所以開發(fā)者選擇了Linux來跑我們自己寫出來的程序。
二、Linux的基礎(chǔ)知識(shí)
Linux系統(tǒng)的組成:
2.1Shell的基本知識(shí)
除了Shell、其他的都應(yīng)該挺好懂的,那么Shell是什么東西呢???
Shell是系統(tǒng)的用戶界面,提供了用戶與內(nèi)核進(jìn)行交互操作的一種接口(命令解釋器)Shell可以執(zhí)行:
- 內(nèi)部命令
- 應(yīng)用程序
- shell腳本
使用type命令可以區(qū)分內(nèi)部命令和外部命令
于是乎,我們利用Shell就可以干下面這些事了:
- 命令行解釋(這是用得最多的!)
- 命令的多種執(zhí)行順序
- 通配符( wild-card characters )
- 命令補(bǔ)全、別名機(jī)制、命令歷史
- I/O重定向( Input/output redirection )
- 管道( pipes )
- 命令替換( 或$( ) )
- Shell編程語言( Shell Script )
Shell的主要版本有以下這么多:
- 我們常用(默認(rèn))的就是bash(bourne again shell)
使用ps命令觀察正在執(zhí)行的shell
2.2Linux基本目錄結(jié)構(gòu)
在Windows下,會(huì)有基本的目錄結(jié)構(gòu)的:
Linux下也不例外了,也是有基本的目錄結(jié)構(gòu)的:
Linux 文件系統(tǒng)是一個(gè)目錄樹的結(jié)構(gòu),文件系統(tǒng)結(jié)構(gòu)從一個(gè)根目錄開始,根目錄下可以有任意多個(gè)文件和子目錄,子目錄中又可以有任意多個(gè)文件和子目錄
- bin 存放二進(jìn)制可執(zhí)行文件(ls,cat,mkdir等)
- boot 存放用于系統(tǒng)引導(dǎo)時(shí)使用的各種文件
- dev 用于存放設(shè)備文件
- etc 存放系統(tǒng)配置文件
- home 存放所有用戶文件的根目錄
- lib 存放跟文件系統(tǒng)中的程序運(yùn)行所需要的共享庫(kù)及內(nèi)核模塊
- mnt 系統(tǒng)管理員安裝臨時(shí)文件系統(tǒng)的安裝點(diǎn)
- opt 額外安裝的可選應(yīng)用程序包所放置的位置
- proc 虛擬文件系統(tǒng),存放當(dāng)前內(nèi)存的映射
- root 超級(jí)用戶目錄
- sbin 存放二進(jìn)制可執(zhí)行文件,只有root才能訪問
- tmp 用于存放各種臨時(shí)文件
- usr 用于存放系統(tǒng)應(yīng)用程序,比較重要的目錄/usr/local 本地管理員軟件安裝目錄
- var 用于存放運(yùn)行時(shí)需要改變數(shù)據(jù)的文件
2.3命令基本格式
cmd [options] [arguments],options稱為選項(xiàng),arguments稱為參數(shù)
選項(xiàng)和參數(shù)都作為Shell命令執(zhí)行時(shí)的輸入,它們之間用空格分隔開。
- Linux是區(qū)分大小寫的
一般來說,后面跟的選項(xiàng)如果單字符選項(xiàng)前使用一個(gè)減號(hào)-。單詞選項(xiàng)前使用兩個(gè)減號(hào)--
- 這是一般的情況,有些命令還是不歸屬這種規(guī)律的(相對(duì)較少)~~~
- 例子:ls -a和ls -all,a 單個(gè)字符使用一個(gè)-,一個(gè)單詞all 使用兩個(gè)--
在Linux中,可執(zhí)行的文件也進(jìn)行了分類:
- 內(nèi)置命令:出于效率的考慮,將一些常用命令的解釋程序構(gòu)造在Shell內(nèi)部。
- 外置命令:存放在/bin、/sbin目錄下的命令
- 實(shí)用程序:存放在/usr/bin、/usr/sbin、/usr/share、/usr/local/bin等目錄下的實(shí)用程序
- 用戶程序:用戶程序經(jīng)過編譯生成可執(zhí)行文件后,可作為Shell命令運(yùn)行
- Shell腳本:由Shell語言編寫的批處理文件,可作為Shell命令運(yùn)行
2.4通配符
學(xué)過一些正則表達(dá)式的或者有點(diǎn)基礎(chǔ)的同學(xué)對(duì)通配符應(yīng)該就不陌生的了,在Linux也有通配符(在搜索的時(shí)候挺有用的)
- *:匹配任何字符和任何數(shù)目的字符
- ?:匹配單一數(shù)目的任何字符
- [ ]:匹配[ ]之內(nèi)的任意一個(gè)字符
- [! ]:匹配除了[! ]之外的任意一個(gè)字符,!表示非的意思
2.5文件的類型
在Linux下文件的類型有這么多:
- 普通文件-
- 目錄d
- 符號(hào)鏈接 l
- 硬鏈接: 與普通文件沒什么不同,inode 都指向同一個(gè)文件在硬盤中的區(qū)塊
- 軟鏈接: 保存了其代表的文件的絕對(duì)路徑,是另外一種文件,在硬盤上有獨(dú)立的區(qū)塊,訪問時(shí)替換自身路徑(簡(jiǎn)單地理解為 Windows 中常見的快捷方式)。
- 字符設(shè)備文件 c
- 塊設(shè)備文件b
- 套接字s
- 命名管道p
我們常見的就是普通文件,目錄和符號(hào)鏈接。其他的了解一下即可~
符號(hào)鏈接參考資料:
- www.jianshu.com/p/dde6a01c4…
2.5.1用戶主目錄
可能在網(wǎng)上查閱資料的時(shí)候會(huì)出現(xiàn)用戶主目錄這么一個(gè)名詞,那他是什么呢???
前面已經(jīng)說了,我們的Linux是多用戶的網(wǎng)絡(luò)系統(tǒng)!所以,我們可以在Linux下創(chuàng)建多個(gè)用戶,每個(gè)用戶都會(huì)有自己專屬的空間。
- 所以,在創(chuàng)建用戶時(shí),系統(tǒng)管理員會(huì)給每個(gè)用戶建立一個(gè)主目錄,通常在/home/目錄下
- 比如:用戶osmond的主目錄為:/home/osmond
用戶對(duì)自己主目錄的文件擁有所有權(quán),可以在自己的主目錄下進(jìn)行相關(guān)操作。
三、常用的命令
上面說了一堆的基礎(chǔ)概念,這是給我們敲命令之前打了一點(diǎn)基礎(chǔ),在敲命令的同時(shí)也會(huì)遇到一些比較重要的知識(shí)點(diǎn)的。那就到時(shí)候再說說了~~~
3.1常用的文件、目錄操作命令
這是我們使用得最多的命令了,Linux最基礎(chǔ)的命令!
- 可用 pwd命令查看用戶的當(dāng)前目錄
- 可用 cd 命令來切換目錄
- .表示當(dāng)前目錄
- .. 表示當(dāng)前目錄的上一級(jí)目錄(父目錄)
- -表示用 cd 命令切換目錄前所在的目錄
- ~ 表示用戶主目錄的絕對(duì)路徑名
絕對(duì)路徑:
- 以斜線(/)開頭 ,描述到文件位置的完整說明 ,任何時(shí)候你想指定文件名的時(shí)候都可以使用
相對(duì)路徑 :
- 不以斜線(/)開頭 ,指定相對(duì)于你的當(dāng)前工作目錄而言的位置 ,可以被用作指定文件名的簡(jiǎn)捷方式
tips:輸入命令的時(shí)候要常用tab鍵來補(bǔ)全
- ls:顯示文件或目錄信息
- mkdir:當(dāng)前目錄下創(chuàng)建一個(gè)空目錄
- rmdir:要求目錄為空
- touch:生成一個(gè)空文件或更改文件的時(shí)間
- cp:復(fù)制文件或目錄
- mv:移動(dòng)文件或目錄、文件或目錄改名
- rm:刪除文件或目錄
- ln:建立鏈接文件
- find:查找文件
- file/stat:查看文件類型或文件屬性信息
- cat:查看文本文件內(nèi)容
- more:可以分頁看
- less:不僅可以分頁,還可以方便地搜索,回翻等操作
- tail -10: 查看文件的尾部的10行
- head -20:查看文件的頭部20行
- echo:把內(nèi)容重定向到指定的文件中 ,有則打開,無則創(chuàng)建
- 管道命令 | :將前面的結(jié)果給后面的命令,例如:ls -la | wc,將ls的結(jié)果加油wc命令來統(tǒng)計(jì)字?jǐn)?shù)
- 重定向 > 是覆蓋模式,>> 是追加模式,例如:echo "Java3y,zhen de hen xihuan ni" > qingshu.txt把左邊的輸出放到右邊的文件里去
學(xué)了這些命令我們能干嘛?其實(shí)就是在Windows下復(fù)制文件、粘貼文件、創(chuàng)建文件、查看文件這幾種~~~
3.1.1常用的文件、目錄操作練習(xí)題
鞏固一下基礎(chǔ),來做做題目:
- (1)Linux的shell程序默認(rèn)是bash 程序;
- (2)Linux命令格式包含三個(gè)部分,分別是: 命令 、 選項(xiàng) 、 參數(shù) ;
- (3)Linux命令選項(xiàng)前為單個(gè)減號(hào)(-),后面一般為 單字符 ,選項(xiàng)前為雙減號(hào)(--),后面一般為 單詞;
- (4)Linux命令中使用的通配符有 ? * [] ;
- (5)命令 ls /usr/bin/w* 的效果是 列出指定目錄下的所有以w開頭的文件或目錄 ;
- (6)命令 ls /usr/bin/w?? 的效果是 列出指定目錄下的以w開頭名稱長(zhǎng)度為3的所有文件或目錄 ;
- (7)命令 ls /usr/bin/[xyz]* 的效果是 列出指定目錄下的文件名以x或y或z開頭的所有文件或目錄 ;
- (8)命令 ls /usr/bin/[!a-h]* 的效果是 列出指定目錄下的文件名不以a到h區(qū)間字母開頭的所有文件或目錄 ;
- (9)目錄操作時(shí),“.” 表示 當(dāng)前目錄 ;
- (10)目錄操作時(shí),“..” 表示 上一級(jí)目錄 ;
- (11)目錄操作時(shí),“-” 表示 上一次工作目錄 ;
- (12)目錄操作時(shí),“~” 表示 用戶主目錄 ;
- (13)命令ln可以建立文件鏈接,這種鏈接分為: 硬鏈接 和 軟鏈接 ;
- (14)命令touch可以改變文件的三種時(shí)間,分別是: access time 、 modify time 、 change time ;
答:>是覆蓋方式重定向到新的文件;>>是以補(bǔ)充方式,添加到原文件的末尾。
通過管道和more命令,瀏覽文件列表方便在哪里?答:對(duì)于文件列表超出一個(gè)屏幕顯示的情況,這種方式可以分屏瀏覽,比較方便。
3.2文件打包和壓縮命令
在Windows操作系統(tǒng)下,我們會(huì)使用WinRAR或者快壓等等的壓縮軟件來進(jìn)行壓縮或者解壓。
在Linux下當(dāng)然也存在壓縮或解壓的操作咯,下面我們就來學(xué)習(xí)一下在Linux下是怎么壓縮和解壓的!
壓縮的方式也是有好幾種,我們常用的有下面這三種:
- gzip
- bzip2
- tar
常用的壓縮的命令就有:
- gzip filename
- bzip2 filename
- tar -czvf filename
常用的解壓命令有:
- gzip -d filename.gz
- bzip2 -d filename.bz2
- tar -xzvf filename.tar.gz
3.3正則表達(dá)式+grep
上面我們已經(jīng)學(xué)過了cat、more、less、tail這些查看文本文件的命令了,但是我想快速查看這個(gè)文本文件下的某些關(guān)鍵字是否存在,那怎么辦???
在Windows下就比較簡(jiǎn)單的,幾乎所有的文本編輯器(記事本)都支持CTRL+F,往里面輸入關(guān)鍵字就可查找出來:
那在Linux下,沒有圖形界面,沒有CTRL+F的情況下,如果不懂一些命令的話,那還真是難找對(duì)應(yīng)的字符出來。下面我就來說說如何快速查找一個(gè)文本文件下的某些字符。
3.3.1正則表達(dá)式
首先我們就來說說正則表達(dá)式,如果接觸過的同學(xué)就知道:這玩意并不好記。一旦不用就很容易就忘記了,所以只能在用的時(shí)候查查了~~~所以下面我就直接給出一些規(guī)則了,不多說啦。
3.3.2grep命令
grep(global search regular expression)是一個(gè)強(qiáng)大的文本搜索工具。grep 使用正則表達(dá)式搜索文本,并把匹配的行打印出來。
格式:grep [options] PATTERN [FILE...]
- PATTERN 是查找條件:可以是普通字符串、可以是正則表達(dá)式,通常用單引號(hào)將RE括起來。
- FILE 是要查找的文件,可以是用空格間隔的多個(gè)文件,也可是使用Shell的通配符在多個(gè)文件中查找PATTERN,省略時(shí)表示在標(biāo)準(zhǔn)輸入中查找。
- grep命令不會(huì)對(duì)輸入文件進(jìn)行任何修改或影響,可以使用輸出重定向?qū)⒔Y(jié)果存為文件
例子:
- 在文件 myfile 中查找包含字符串 mystr的行
- grep -n mystr myfile
- 顯示 myfile 中第一個(gè)字符為字母的所有行
- grep '^[a-zA-Z]' myfile
- 在文件 myfile 中查找首字符不是 # 的行(即過濾掉注釋行)
- grep -v '^#' myfile
- 列出/etc目錄(包括子目錄)下所有文件內(nèi)容中包含字符串“root”的文件名
- grep -lr root /etc/*
3.4幾種提高工作效率的方法
- 自動(dòng)補(bǔ)全命令
- TAB鍵
- 歷史命令
- 上下箭頭鍵
- 別名alias
這里感覺要說說的就只有別名alias了,我們下面看看例子就懂了!
顯示shell當(dāng)前已經(jīng)定義的別名;執(zhí)行其中的兩個(gè)定義別名的命令;定義一個(gè)別名grep,要求其采用彩色方式顯示結(jié)果3.5Shell變量 和 Shell環(huán)境
在Windows下有用戶的環(huán)境變量,系統(tǒng)的環(huán)境變量。在Linux一樣也是有的。
Shell 變量大致可以分為三類:
- 內(nèi)部變量:由系統(tǒng)提供,用戶只能使用不能修改。
- ?
- GROUPS
- 環(huán)境變量:這些變量決定了用戶工作的環(huán)境,它們不需要用戶去定義,可以直接在 shell 中使用,其中某些變量用戶可以修改。
- 用戶變量:由用戶建立和修改,在 shell 腳本編寫中會(huì)經(jīng)常用到。
- 變量賦值(定義變量)
- varName=Value
- export varName=Value
- 引用變量$varName
Shell變量的作用域:
- 局部變量的作用范圍僅僅限制在其命令行所在的Shell或Shell腳本文件中;
- 全局變量的作用范圍則包括本Shell進(jìn)程及其所有子進(jìn)程。
- 局部變量與全局變量互換:可以使用 export 內(nèi)置命令將局部變量設(shè)置為全局變量。 可以使用 export 內(nèi)置命令將全局變量設(shè)置為局部變量。
export命令:
- 顯示當(dāng)前Shell可見的全局變量
- export [-p]
- 定義變量值的同時(shí)聲明為全局變量。
- export <變量名1=值1> [<變量名2=值2> ...]
- 聲明已經(jīng)賦值的某個(gè)(些)局部變量為全局變量。
- export <變量名1> [<變量名2> ...]
- 聲明已經(jīng)賦值的某個(gè)(些)全局變量為局部變量。
- export -n <變量名1> [<變量名2> ...]
Shell環(huán)境變量:
- 環(huán)境變量定義 Shell 的運(yùn)行環(huán)境,保證 Shell 命令的正確執(zhí)行。
- Shell用環(huán)境變量來確定查找路徑、注冊(cè)目錄、終端類型、終端名稱、用戶名等。
- 所有環(huán)境變量都是全局變量(即可以傳遞給 Shell 的子進(jìn)程),并可以由用戶重新設(shè)置。
Shell變量:查詢、顯示和取消:
- 顯示當(dāng)前已經(jīng)定義的所有變量
- 所有環(huán)境變量:env
- 所有變量和函數(shù)(包括環(huán)境變量) :set
- 顯示某(些)個(gè)變量的值
- echo $NAME1 [$NAME2 ……]
- 取消變量的聲明或賦值
- unset <NAME>
3.5.1Shell變量 和 Shell環(huán)境練習(xí)題
定義Shell變量stuXX(XX為學(xué)生學(xué)號(hào)末兩位),初值為學(xué)生姓名全拼,用echo命令顯示stuXX變量的值;用unset命令取消stuXX變量,檢查結(jié)果;用env命令觀察當(dāng)前有哪些已經(jīng)定義好的shell環(huán)境變量答:環(huán)境變量的值一般情況下,可以修改。但一定要慎重修改,因?yàn)橐坏┬薷腻e(cuò)誤,對(duì)shell正常運(yùn)行造成嚴(yán)重影響,甚至導(dǎo)致shell無法運(yùn)行。
四、VI編輯器
相信沒有用過Linux的同學(xué)在看一些段子的時(shí)候都會(huì)看到過兩個(gè)編輯器:
- vim
- emacs
下面我們學(xué)習(xí)如何簡(jiǎn)單使用vi。vi 是 “Visual interface” 的簡(jiǎn)稱,它可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據(jù)自己的需要對(duì)其進(jìn)行定制,這是其他編輯程序所沒有的。
- vi可以看做成我們Windows下的記事本
- vim 即 Vi IMproved,vi 克隆版本之一
使用Vi來編輯文件:
Vi有三種模式:
4.1普通模式
- G用于直接跳轉(zhuǎn)到文件尾
- ZZ用于存盤退出Vi
- ZQ用于不存盤退出Vi
- /和?用于查找字符串
- n繼續(xù)查找下一個(gè)
- yy復(fù)制一行
- p粘帖在下一行,P粘貼在前一行
- dd刪除一行文本
- x刪除光標(biāo)所在的字符
- u取消上一次編輯操作(undo)
4.2插入模式
在 Normal 模式下輸入插入命令 i、 a 、 o進(jìn)入insert模式。用戶輸入的任何字符都被vim當(dāng)做文件內(nèi)容保存起來,并將其顯示在屏幕上。
- 在文本輸入過程中,若想回到Normal模式下,按 Esc 鍵即可。
4.3命令行模式
Normal 模式下,用戶按冒號(hào) :即可進(jìn)入 Command 模式,此時(shí) vim 會(huì)在顯示窗口的最后一行 (屏幕的最后一行) 顯示一個(gè) “:” 作為 Command 模式的提示符,等待輸入命令。
- :w 保存當(dāng)前編輯文件,但并不退出
- :w newfile 存為另外一個(gè)名為 “newfile” 的文件
- :wq 用于存盤退出Vi
- :q! 用于不存盤退出Vi
- :q用于直接退出Vi (未做修改)
設(shè)置Vi環(huán)境:
- :set autoindent 縮進(jìn),常用于程序的編寫
- :set noautoindent 取消縮進(jìn)
- :set number 在編輯文件時(shí)顯示行號(hào)
- :set nonumber 不顯示行號(hào)
- :set tabstop=value 設(shè)置顯示制表符的空格字符個(gè)數(shù)
- :set 顯示設(shè)置的所有選項(xiàng)
- :set all 顯示所有可以設(shè)置的選項(xiàng)
4.4Vi練習(xí)題
在用戶主目錄下,執(zhí)行vi程序,編輯文件install.log;移動(dòng)光標(biāo)到第10行,第五個(gè)字符;按大寫字母G,達(dá)到文件末尾;不存盤退出;四、總結(jié)
本文主要講解了Linux的最基礎(chǔ)的知識(shí),可以簡(jiǎn)單地操作Linux了。命令可以說是學(xué)不完的,只能是記住Linux是有這個(gè)功能,到時(shí)候去網(wǎng)上查查也很方便。
主要是多練、多玩就可以記住一些常用的Linux命令了~~~~
下面我就花點(diǎn)時(shí)間畫個(gè)Linux命令的腦圖(當(dāng)然了,命令僅限于是本文章的知識(shí)點(diǎn),等寫到用戶、網(wǎng)絡(luò)等知識(shí)點(diǎn)的時(shí)候再繼續(xù)補(bǔ)充上去!)
文章的目錄導(dǎo)航:
- zhongfucheng.bitcron.com/post/shou-j…
12 人已贊賞
LinuxJavaCentOS ?贊同 2.3K??39 條評(píng)論?分享?收藏?贊同 2.3K?分享總結(jié)
以上是生活随笔為你收集整理的看完这篇Linux基本的操作就会了的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超详细中文注释的GPT2新闻标题生成项目
- 下一篇: 【NLP-NER】命名实体识别