前言
只有光頭才能變強
這個學期開了Linux的課程了严卖,授課的老師也是比較負責任的一位≌洌總的來說也算是比較系統(tǒng)地學習了一下Linux了~~~
本文章主要是總結Linux的基礎操作以及一些簡單的概念~如果不熟悉的同學可下個Linux來玩玩(或者去買一個服務器玩玩【學生版的不是很貴】)夸盟,對于開發(fā)者來說,能使用Linux做一些基本的操作是必要的骤公!
那么接下來就開始吧抚官,當然了我的Linux僅僅是入門水平,如果有錯的地方還需請大家多多包涵阶捆,并不吝在評論區(qū)指出錯誤~
一凌节、為什么我們要學習Linux
相信大部分人的PC端都是用Windows系統(tǒng)的,那我們?yōu)槭裁匆獙W習Linux這個操作系統(tǒng)呢洒试?倍奢??Windows圖形化界面做得這么好垒棋,日匙渖罚基本使用的話,學習成本幾乎為零叼架。
而Linux不一樣畔裕,可能剛接觸Linux的人會認為:Linux好麻煩哦,不好玩乖订,都是字符界面扮饶。不直觀、這個破系統(tǒng)是用來干嘛的~~
日常用的話Windows是比較順手的乍构,但是我們要知道的是:我們開發(fā)出來的程序一般都是放在Linux下運行的甜无。
那可能就會有人提出疑問了:Windows同樣是操作系統(tǒng),為啥要放在Linux下,而不放在Windows下呢岂丘?陵究?相信Windows也是可以運行我們寫出來的程序的。
我總結了Linux的幾個優(yōu)點:
- 免費
- 很多軟件原生是在Linux下運行的元潘,龐大的社區(qū)支持畔乙,生態(tài)環(huán)境好。
- 開源翩概,可被定制,開放返咱,多用戶的網絡操作系統(tǒng)钥庇。
- 相對安全穩(wěn)定
參考資料:
所以開發(fā)者選擇了Linux來跑我們自己寫出來的程序。
二咖摹、Linux的基礎知識
Linux系統(tǒng)的組成:
- linux內核(linus 團隊管理)
- shell:用戶與內核交互的接口
- 文件系統(tǒng):ext3评姨、ext4等。windows 有 fat32 萤晴、ntfs
- 第三方應用軟件
2.1Shell的基本知識
除了Shell吐句、其他的都應該挺好懂的,那么Shell是什么東西呢店读?嗦枢??
Shell是系統(tǒng)的用戶界面屯断,提供了用戶與內核進行交互操作的一種接口(命令解釋器)
Shell可以執(zhí)行:
- 內部命令
- 應用程序
- shell腳本
使用type
命令可以區(qū)分內部命令和外部命令
于是乎文虏,我們利用Shell就可以干下面這些事了:
- 命令行解釋(這是用得最多的!)
- 命令的多種執(zhí)行順序
- 通配符( wild-card characters )
- 命令補全殖演、別名機制氧秘、命令歷史
- I/O重定向( Input/output redirection )
- 管道( pipes )
- 命令替換(
或$( ) )
- Shell編程語言( Shell Script )
Shell的主要版本有以下這么多:
- 我們常用(默認)的就是bash(bourne again shell)
使用ps
命令觀察正在執(zhí)行的shell
2.2Linux基本目錄結構
在Windows下,會有基本的目錄結構的:
Linux下也不例外了趴久,也是有基本的目錄結構的:
Linux 文件系統(tǒng)是一個目錄樹的結構丸相,文件系統(tǒng)結構從一個根目錄開始,根目錄下可以有任意多個文件和子目錄彼棍,子目錄中又可以有任意多個文件和子目錄
- bin 存放二進制可執(zhí)行文件(ls,cat,mkdir等)
- boot 存放用于系統(tǒng)引導時使用的各種文件
- dev 用于存放設備文件
- etc 存放系統(tǒng)配置文件
- home 存放所有用戶文件的根目錄
- lib 存放跟文件系統(tǒng)中的程序運行所需要的共享庫及內核模塊
- mnt 系統(tǒng)管理員安裝臨時文件系統(tǒng)的安裝點
- opt 額外安裝的可選應用程序包所放置的位置
- proc 虛擬文件系統(tǒng)灭忠,存放當前內存的映射
- root 超級用戶目錄
- sbin 存放二進制可執(zhí)行文件,只有root才能訪問
- tmp 用于存放各種臨時文件
- usr 用于存放系統(tǒng)應用程序滥酥,比較重要的目錄/usr/local 本地管理員軟件安裝目錄
- var 用于存放運行時需要改變數據的文件
2.3命令基本格式
cmd [options] [arguments]
更舞,options稱為選項,arguments稱為參數
選項和參數都作為Shell命令執(zhí)行時的輸入坎吻,它們之間用空格分隔開缆蝉。
- Linux是區(qū)分大小寫的
一般來說,后面跟的選項如果單字符選項前使用一個減號-
。單詞選項前使用兩個減號--
- 這是一般的情況刊头,有些命令還是不歸屬這種規(guī)律的(相對較少)~~~
- 例子:
ls -a
和ls -all
黍瞧,a
單個字符使用一個-
,一個單詞all
使用兩個--
在Linux中原杂,可執(zhí)行的文件也進行了分類:
- 內置命令:出于效率的考慮印颤,將一些常用命令的解釋程序構造在Shell內部。
- 外置命令:存放在/bin穿肄、/sbin目錄下的命令
- 實用程序:存放在/usr/bin年局、/usr/sbin、/usr/share咸产、/usr/local/bin等目錄下的實用程序
- 用戶程序:用戶程序經過編譯生成可執(zhí)行文件后矢否,可作為Shell命令運行
- Shell腳本:由Shell語言編寫的批處理文件,可作為Shell命令運行
2.4通配符
學過一些正則表達式的或者有點基礎的同學對通配符應該就不陌生的了脑溢,在Linux也有通配符(在搜索的時候挺有用的)
- *:匹配任何字符和任何數目的字符
- ?:匹配單一數目的任何字符
- [ ]:匹配[ ]之內的任意一個字符
- [! ]:匹配除了[! ]之外的任意一個字符僵朗,!表示非的意思
2.5文件的類型
在Linux下文件的類型有這么多:
-
普通文件
-
-
目錄
d
-
符號鏈接
l
- 硬鏈接: 與普通文件沒什么不同,inode 都指向同一個文件在硬盤中的區(qū)塊
- 軟鏈接: 保存了其代表的文件的絕對路徑屑彻,是另外一種文件验庙,在硬盤上有獨立的區(qū)塊,訪問時替換自身路徑(簡單地理解為 Windows 中常見的快捷方式)社牲。
- 字符設備文件
c
- 塊設備文件
b
- 套接字
s
- 命名管道
p
我們常見的就是普通文件粪薛,目錄和符號鏈接。其他的了解一下即可~
符號鏈接參考資料:
2.5.1用戶主目錄
可能在網上查閱資料的時候會出現(xiàn)用戶主目錄這么一個名詞膳沽,那他是什么呢汗菜??挑社?
前面已經說了陨界,我們的Linux是多用戶的網絡系統(tǒng)!所以痛阻,我們可以在Linux下創(chuàng)建多個用戶菌瘪,每個用戶都會有自己專屬的空間。
- 所以阱当,在創(chuàng)建用戶時俏扩,系統(tǒng)管理員會給每個用戶建立一個主目錄,通常在
/home/
目錄下 - 比如:用戶osmond的主目錄為:
/home/osmond
用戶對自己主目錄的文件擁有所有權弊添,可以在自己的主目錄下進行相關操作录淡。
三、常用的命令
上面說了一堆的基礎概念油坝,這是給我們敲命令之前打了一點基礎嫉戚,在敲命令的同時也會遇到一些比較重要的知識點的刨裆。那就到時候再說說了~~~
3.1常用的文件、目錄操作命令
這是我們使用得最多的命令了彬檀,Linux最基礎的命令帆啃!
- 可用
pwd
命令查看用戶的當前目錄 - 可用
cd
命令來切換目錄 -
.
表示當前目錄 -
..
表示當前目錄的上一級目錄(父目錄) -
-
表示用 cd 命令切換目錄前所在的目錄 -
~
表示用戶主目錄的絕對路徑名
絕對路徑:
- 以斜線(/)開頭 ,描述到文件位置的完整說明 窍帝,任何時候你想指定文件名的時候都可以使用
相對路徑 :
- 不以斜線(/)開頭 努潘,指定相對于你的當前工作目錄而言的位置 ,可以被用作指定文件名的簡捷方式
tips:輸入命令的時候要常用tab鍵來補全
-
ls
:顯示文件或目錄信息 -
mkdir
:當前目錄下創(chuàng)建一個空目錄 -
rmdir
:要求目錄為空 -
touch
:生成一個空文件或更改文件的時間 -
cp
:復制文件或目錄 -
mv
:移動文件或目錄坤学、文件或目錄改名 -
rm
:刪除文件或目錄 -
ln
:建立鏈接文件 -
find
:查找文件 -
file/stat
:查看文件類型或文件屬性信息 -
cat:
查看文本文件內容 -
more:
可以分頁看 -
less:
不僅可以分頁疯坤,還可以方便地搜索,回翻等操作 -
tail -10
: 查看文件的尾部的10行 -
head -20
:查看文件的頭部20行 -
echo
:把內容重定向到指定的文件中 拥峦,有則打開贴膘,無則創(chuàng)建 -
管道命令 |
:將前面的結果給后面的命令,例如:ls -la | wc
略号,將ls的結果交由wc命令來統(tǒng)計字數 -
重定向 > 是覆蓋模式,>> 是追加模式
洋闽,例如:echo "Java3y,zhen de hen xihuan ni" > qingshu.txt
把左邊的輸出放到右邊的文件里去
學了這些命令我們能干嘛玄柠?其實就是在Windows下復制文件、粘貼文件诫舅、創(chuàng)建文件羽利、查看文件這幾種~~~
3.1.1常用的文件、目錄操作練習題
鞏固一下基礎刊懈,來做做題目:
- (1)Linux的shell程序默認是
bash 程序
这弧; - (2)Linux命令格式包含三個部分,分別是:
命令
虚汛、選項
匾浪、參數
; - (3)Linux命令選項前為單個減號(-)卷哩,后面一般為
單字符
蛋辈,選項前為雙減號(--),后面一般為單詞
将谊; - (4)Linux命令中使用的通配符有
冷溶? * []
; - (5)命令 ls /usr/bin/w* 的效果是
列出指定目錄下的所有以w開頭的文件或目錄
尊浓; - (6)命令 ls /usr/bin/w?? 的效果是
列出指定目錄下的以w開頭名稱長度為3的所有文件或目錄
逞频; - (7)命令 ls /usr/bin/[xyz]* 的效果是
列出指定目錄下的文件名以x或y或z開頭的所有文件或目錄
; - (8)命令 ls /usr/bin/[!a-h]* 的效果是
列出指定目錄下的文件名不以a到h區(qū)間字母開頭的所有文件或目錄
栋齿; - (9)目錄操作時苗胀,“.” 表示
當前目錄
襟诸; - (10)目錄操作時,“..” 表示
上一級目錄
柒巫; - (11)目錄操作時励堡,“-” 表示
上一次工作目錄
; - (12)目錄操作時堡掏,“~” 表示
用戶主目錄
应结; - (13)命令ln可以建立文件鏈接,這種鏈接分為:
硬鏈接
和軟鏈接
泉唁; - (14)命令touch可以改變文件的三種時間鹅龄,分別是:
access time
、modify time
亭畜、change time
扮休;
進入/tmp目錄,建立一個文件拴鸵,goldXX(XX為學號的末兩位)玷坠,查看文件的時間
在賬戶的主目錄中,建立一個dog目錄劲藐,進入dog目錄后八堡,建立一個catXX(XX為學號的末兩位)目錄,進入catXX目錄,顯示當前目錄聘芜;然后返回上一級目錄兄渺,刪除catXX目錄;
復制/etc/passwd文件到賬戶主目錄汰现,修改賬戶主目錄下passwd為passwdXX(XX為學號的末兩位)
查找文件名叫做zcat的文件挂谍;復制該文件到/tmp目錄;用長格式列出該文件瞎饲;然后刪除/tmp目錄下的所有文件口叙,并檢查文件是否已被刪除
復制/etc/hosts文件到賬戶主目錄下;在賬戶主目錄中建立一個硬鏈接文件(文件名為hostsYYY(YYY為學生姓名拼音縮寫))企软,鏈接到主目錄下的hosts文件庐扫;分別查看hosts和hostsYYY的文件的inode信息
復制/usr/bin/vdir文件到賬戶主目錄下;在賬戶主目錄中建立一個軟鏈接文件(文件名為newdir)仗哨,鏈接到主目錄下的vdir文件形庭;分別查看vdir和newdir的文件的inode信息
用長格式列出目錄/usr/bin目錄下的所有文件,輸出重新定向到文件outXX(XX為學生學號末兩位)厌漂,檢查結果萨醒;用長格式列出目錄/etc目錄下的所有文件,輸出結果補充到文件outXX末尾
用長格式列出/usr/bin目錄下的所有文件苇倡,通過管道與more命令連接富纸,實現(xiàn)對文件列表的瀏覽
>和>>
有何區(qū)別囤踩?
答:>
是覆蓋方式重定向到新的文件限匣;>>
是以補充方式鉴嗤,添加到原文件的末尾。
通過管道和more命令莱找,瀏覽文件列表方便在哪里涣仿?
答:對于文件列表超出一個屏幕顯示的情況勤庐,這種方式可以分屏瀏覽,比較方便好港。
3.2文件打包和壓縮命令
在Windows操作系統(tǒng)下愉镰,我們會使用WinRAR或者快壓等等的壓縮軟件來進行壓縮或者解壓。
在Linux下當然也存在壓縮或解壓的操作咯钧汹,下面我們就來學習一下在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正則表達式+grep
上面我們已經學過了cat拔莱、more碗降、less、tail
這些查看文本文件的命令了塘秦,但是我想快速查看這個文本文件下的某些關鍵字是否存在遗锣,那怎么辦?嗤形??
在Windows下就比較簡單的弧圆,幾乎所有的文本編輯器(記事本)都支持CTRL+F
赋兵,往里面輸入關鍵字就可查找出來:
那在Linux下,沒有圖形界面搔预,沒有CTRL+F
的情況下霹期,如果不懂一些命令的話,那還真是難找對應的字符出來拯田。下面我就來說說如何快速查找一個文本文件下的某些字符历造。
3.3.1正則表達式
首先我們就來說說正則表達式,如果接觸過的同學就知道:這玩意并不好記船庇。一旦不用就很容易就忘記了吭产,所以只能在用的時候查查了~~~所以下面我就直接給出一些規(guī)則了,不多說啦鸭轮。
3.3.2grep命令
grep(global search regular expression)是一個強大的文本搜索工具臣淤。grep 使用正則表達式搜索文本,并把匹配的行打印出來窃爷。
格式:grep [options] PATTERN [FILE...]
- PATTERN 是查找條件:可以是普通字符串邑蒋、可以是正則表達式姓蜂,通常用單引號將RE括起來。
- FILE 是要查找的文件医吊,可以是用空格間隔的多個文件钱慢,也可是使用Shell的通配符在多個文件中查找PATTERN,省略時表示在標準輸入中查找卿堂。
- grep命令不會對輸入文件進行任何修改或影響束莫,可以使用輸出重定向將結果存為文件
例子:
- 在文件 myfile 中查找包含字符串 mystr的行
grep -n mystr myfile
- 顯示 myfile 中第一個字符為字母的所有行
grep '^[a-zA-Z]' myfile
- 在文件 myfile 中查找首字符不是 # 的行(即過濾掉注釋行)
grep -v '^#' myfile
- 列出/etc目錄(包括子目錄)下所有文件內容中包含字符串“root”的文件名
grep -lr root /etc/*
用grep查找/etc/passwd文件中以a開頭的行,要求顯示行號御吞;查找/etc/passwd文件中以login結束的行麦箍;
3.4幾種提高工作效率的方法
-
自動補全命令
- TAB鍵
-
歷史命令
- 上下箭頭鍵
- 別名alias
這里感覺要說說的就只有別名alias了,我們下面看看例子就懂了陶珠!
顯示shell當前已經定義的別名挟裂;執(zhí)行其中的兩個定義別名的命令;定義一個別名grep揍诽,要求其采用彩色方式顯示結果
3.5Shell變量 和 Shell環(huán)境
在Windows下有用戶的環(huán)境變量诀蓉,系統(tǒng)的環(huán)境變量。在Linux一樣也是有的暑脆。
Shell 變量大致可以分為三類:
-
內部變量:由系統(tǒng)提供渠啤,用戶只能使用不能修改。
- ?
- GROUPS
- 環(huán)境變量:這些變量決定了用戶工作的環(huán)境添吗,它們不需要用戶去定義沥曹,可以直接在 shell 中使用,其中某些變量用戶可以修改碟联。
-
用戶變量:由用戶建立和修改妓美,在 shell 腳本編寫中會經常用到。
- 變量賦值(定義變量)
varName=Value
export varName=Value
- 引用變量
$varName
- 變量賦值(定義變量)
Shell變量的作用域:
- 局部變量的作用范圍僅僅限制在其命令行所在的Shell或Shell腳本文件中鲤孵;
- 全局變量的作用范圍則包括本Shell進程及其所有子進程壶栋。
- 局部變量與全局變量互換:可以使用
export
內置命令將局部變量設置為全局變量。 可以使用export
內置命令將全局變量設置為局部變量普监。
export命令:
-
顯示當前Shell可見的全局變量
export [-p]
-
定義變量值的同時聲明為全局變量贵试。
export <變量名1=值1> [<變量名2=值2> ...]
- 聲明已經賦值的某個(些)局部變量為全局變量。
export <變量名1> [<變量名2> ...]
- 聲明已經賦值的某個(些)全局變量為局部變量凯正。
export -n <變量名1> [<變量名2> ...]
Shell環(huán)境變量:
- 環(huán)境變量定義 Shell 的運行環(huán)境毙玻,保證 Shell 命令的正確執(zhí)行。
- Shell用環(huán)境變量來確定查找路徑漆际、注冊目錄淆珊、終端類型、終端名稱奸汇、用戶名等施符。
- 所有環(huán)境變量都是全局變量(即可以傳遞給 Shell 的子進程)往声,并可以由用戶重新設置。
Shell變量:查詢戳吝、顯示和取消:
- 顯示當前已經定義的所有變量
- 所有環(huán)境變量:
env
- 所有變量和函數(包括環(huán)境變量) :
set
- 所有環(huán)境變量:
- 顯示某(些)個變量的值
echo $NAME1 [$NAME2 ……]
- 取消變量的聲明或賦值
unset <NAME>
3.5.1Shell變量 和 Shell環(huán)境練習題
定義Shell變量stuXX(XX為學生學號末兩位)浩销,初值為學生姓名全拼,用echo命令顯示stuXX變量的值听哭;用unset命令取消stuXX變量慢洋,檢查結果;用env命令觀察當前有哪些已經定義好的shell環(huán)境變量
Shell環(huán)境變量的值是否可以修改陆盘?為什么普筹?
答:環(huán)境變量的值一般情況下,可以修改隘马。但一定要慎重修改太防,因為一旦修改錯誤,對shell正常運行造成嚴重影響酸员,甚至導致shell無法運行蜒车。
四、VI編輯器
相信沒有用過Linux的同學在看一些段子的時候都會看到過兩個編輯器:
- vim
- emacs
下面我們學習如何簡單使用vi幔嗦。vi 是 “Visual interface” 的簡稱酿愧,它可以執(zhí)行輸出、刪除邀泉、查找嬉挡、替換、塊操作等眾多文本操作汇恤,而且用戶可以根據自己的需要對其進行定制棘伴,這是其他編輯程序所沒有的。
- vi可以看做成我們Windows下的記事本
- vim 即 Vi IMproved屁置,vi 克隆版本之一
使用Vi來編輯文件:
Vi有三種模式:
4.1普通模式
-
G
用于直接跳轉到文件尾 -
ZZ
用于存盤退出Vi -
ZQ
用于不存盤退出Vi -
/和?
用于查找字符串 -
n
繼續(xù)查找下一個 -
yy
復制一行 -
p
粘帖在下一行仁连,P粘貼在前一行 -
dd
刪除一行文本 -
x
刪除光標所在的字符 -
u
取消上一次編輯操作(undo)
4.2插入模式
在 Normal 模式下輸入插入命令 i蓝角、 a 、 o
進入insert模式饭冬。用戶輸入的任何字符都被vim當做文件內容保存起來使鹅,并將其顯示在屏幕上。
- 在文本輸入過程中昌抠,若想回到Normal模式下患朱,按 Esc 鍵即可。
4.3命令行模式
Normal 模式下炊苫,用戶按冒號 :
即可進入 Command 模式裁厅,此時 vim 會在顯示窗口的最后一行 (屏幕的最后一行) 顯示一個 “:” 作為 Command 模式的提示符冰沙,等待輸入命令。
-
:w
保存當前編輯文件执虹,但并不退出 -
:w
newfile 存為另外一個名為 “newfile” 的文件 -
:wq
用于存盤退出Vi -
:q!
用于不存盤退出Vi -
:q
用于直接退出Vi (未做修改)
設置Vi環(huán)境:
- :set autoindent 縮進,常用于程序的編寫
- :set noautoindent 取消縮進
- :set number 在編輯文件時顯示行號
- :set nonumber 不顯示行號
- :set tabstop=value 設置顯示制表符的空格字符個數
- :set 顯示設置的所有選項
- :set all 顯示所有可以設置的選項
4.4Vi練習題
在用戶主目錄下拓挥,執(zhí)行vi程序,編輯文件install.log袋励;移動光標到第10行侥啤,第五個字符;按大寫字母G茬故,達到文件末尾盖灸;不存盤退出;
在用戶主目錄下磺芭,執(zhí)行vi程序赁炎,編輯文件install.log;用/命令查找字符串sudo徘跪,復制包含字符串sudo的行
在用戶主目錄下甘邀,執(zhí)行vi程序,編輯文件install.log垮庐;進入命令模式松邪,設置顯示行號;用哨查?命令查找字符串openssh逗抑,用命令n查找下一個
四、總結
本文主要講解了Linux的最基礎的知識寒亥,可以簡單地操作Linux了邮府。命令可以說是學不完的,只能是記住Linux是有這個功能溉奕,到時候去網上查查也很方便褂傀。
主要是多練、多玩就可以記住一些常用的Linux命令了~~~~
下面我就花點時間畫個Linux命令的腦圖(當然了加勤,命令僅限于是本文章的知識點仙辟,等寫到用戶、網絡等知識點的時候再繼續(xù)補充上去鳄梅!)
如果文章有錯的地方歡迎指正叠国,大家互相交流。習慣在微信看技術文章戴尸,想要獲取更多的Java資源的同學粟焊,可以關注微信公眾號:Java3y。為了大家方便,剛新建了一下qq群:742919422项棠,大家也可以去交流交流悲雳。謝謝支持了!希望能多介紹給其他有需要的朋友
文章的目錄導航: