Linux 對(duì)我們的生活產(chǎn)生了巨大的沖擊。至少你的安卓手機(jī)使用的就是 Linux 核心。盡管如此,在第一次開始使用 Linux 時(shí)你還是會(huì)感到難以下手。因?yàn)樵?Linux 中,通常需要使用終端命令來(lái)取代 Windows 系統(tǒng)中的點(diǎn)擊啟動(dòng)圖標(biāo)操作。但是不必?fù)?dān)心,這里我們會(huì)介紹 10 個(gè) Linux 基本命令來(lái)幫助你開啟 Linux 神秘之旅。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、沙縣網(wǎng)站維護(hù)、網(wǎng)站推廣。
幫助新手走出第一步的 10 個(gè) Linux 基本命令
當(dāng)我們談?wù)?Linux 命令時(shí),實(shí)質(zhì)上是在談?wù)?Linux 系統(tǒng)本身。這短短的 10 個(gè) Linux 基本命令不會(huì)讓你變成天才或者 Linux 專家,但是能幫助你輕松開始 Linux 之旅。使用這些基本命令會(huì)幫助新手們完成 Linux 的日常任務(wù),由于它們的使用頻率如此至高,所以我更樂意稱他們?yōu)?Linux 命令之王!
讓我們開始學(xué)習(xí)這 10 條 Linux 基本命令吧。
1. sudo
這條命令的意思是“以超級(jí)用戶的身份執(zhí)行”,是 SuperUserDo 的簡(jiǎn)寫,它是新手將要用到的最重要的一條 Linux 命令。當(dāng)一條單行命令需要 root 權(quán)限的時(shí)候,sudo命令就派上用場(chǎng)了。你可以在每一條需要 root 權(quán)限的命令前都加上sudo。
$ sudo su
2. ls
跟其他人一樣,你肯定也經(jīng)常想看看目錄下都有些什么東西。使用列表命令,終端會(huì)把當(dāng)前工作目錄下所有的文件以及文件夾展示給你。比如說(shuō),我當(dāng)前處在 /home 文件夾中,我想看看 /home 文件夾中都有哪些文件和目錄。
/home$ ls
在 /home 中執(zhí)行l(wèi)s命令將會(huì)返回類似下面的內(nèi)容:
imad lost+found
3. cd
變更目錄命令(cd)是終端中總會(huì)被用到的主要命令。它是最常用到的 Linux 基本命令之一。此命令使用非常簡(jiǎn)單,當(dāng)你打算從當(dāng)前目錄跳轉(zhuǎn)至某個(gè)文件夾時(shí),只需要將文件夾鍵入此命令之后即可。如果你想跳轉(zhuǎn)至上層目錄,只需要在此命令之后鍵入兩個(gè)點(diǎn) (..) 就可以了。 舉個(gè)例子,我現(xiàn)在處在 /home 目錄中,我想移動(dòng)到 /home 目錄中的 usr 文件夾下,可以通過以下命令來(lái)完成操作。
/home $ cd usr
/home/usr $
4. mkdir
只是可以切換目錄還是不夠完美。有時(shí)候你會(huì)想要新建一個(gè)文件夾或子文件夾。此時(shí)可以使用 mkdir 命令來(lái)完成操作。使用方法很簡(jiǎn)單,只需要把新的文件夾名跟在 mkdir 命令之后就好了。
~$ mkdir folderName
5. cp
拷貝-粘貼copy-and-paste是我們組織文件需要用到的重要命令。使用 cp命令可以幫助你在終端當(dāng)中完成拷貝-粘貼操作。首先確定你想要拷貝的文件,然后鍵入打算粘貼此文件的目標(biāo)位置。
$ cp src des
注意:如果目標(biāo)目錄對(duì)新建文件需要 root 權(quán)限時(shí),你可以使用 sudo命令來(lái)完成文件拷貝操作。
6. rm
rm 命令可以幫助你移除文件甚至目錄。如果不希望每刪除一個(gè)文件都提示確認(rèn)一次,可以用-f參數(shù)來(lái)強(qiáng)制執(zhí)行。也可以使用-r參數(shù)來(lái)遞歸的移除文件夾。
$ rm myfile.txt
7. apt-get
這個(gè)命令會(huì)依據(jù)發(fā)行版的不同而有所區(qū)別。在基于 Debian 的發(fā)行版中,我們擁有 Advanced Packaging Tool(APT)包管理工具來(lái)安裝、移除和升級(jí)包。apt-get 命令會(huì)幫助你安裝需要在 Linux 系統(tǒng)中運(yùn)行的軟件。它是一個(gè)功能強(qiáng)大的命令行,可以用來(lái)幫助你對(duì)軟件執(zhí)行安裝、升級(jí)和移除操作。
在其他發(fā)行版中,例如 Fedora、Centos,都各自不同的包管理工具。Fedora 之前使用的是 yum,不過現(xiàn)在 dnf 成了它默認(rèn)的包管理工具。
$ sudo apt-get update
$ sudo dnf update
8. grep
當(dāng)你需要查找一個(gè)文件,但是又忘記了它具體的位置和路徑時(shí),grep命令會(huì)幫助你解決這個(gè)難題。你可以提供文件的關(guān)鍵字,使用grep命令來(lái)查找到它。
$ grep user /etc/passwd
9. cat
作為一個(gè)用戶,你應(yīng)該會(huì)經(jīng)常需要瀏覽腳本內(nèi)的文本或者代碼。cat命令是 Linux 系統(tǒng)的基本命令之一,它的用途就是將文件的內(nèi)容展示給你。
$ cat CMakeLists.txt
10. poweroff
最后一個(gè)命令是 poweroff。有時(shí)你需要直接在終端中執(zhí)行關(guān)機(jī)操作。此命令可以完成這個(gè)任務(wù)。由于關(guān)機(jī)操作需要 root 權(quán)限,所以別忘了在此命令之前添加sudo。
$ sudo poweroff
總結(jié)
如我在文章開始所言,這 10 條命令并不會(huì)讓你立即成為一個(gè) Linux 大拿,但它們會(huì)讓你在初期快速上手 Linux。以這些命令為基礎(chǔ),給自己設(shè)置一個(gè)目標(biāo),每天學(xué)習(xí)一到三條命令,這就是此文的目的所在。
ps?-eaf?|grep?tomcat?|grep?-v?grep?/dev/null?21
分為4段
1、ps -eaf 查看當(dāng)前進(jìn)程,-e 顯示所有進(jìn)程,a顯示終端上的所有進(jìn)程,包括其他用戶的進(jìn)程,f 全格式。
2、顯示的結(jié)果通過管道“|”傳給第二段 grep tomcat,查找tomcat進(jìn)程。
3、同樣查找的結(jié)果傳給第三段 grep -v grep,-v?不顯示匹配的行,因?yàn)橛胓rep查詢tomcat的時(shí)候也算一個(gè)進(jìn)程,而ps的時(shí)候該進(jìn)程信息中也包含了tomcat,例如:
root??????2317??0.0??0.0???5980???744?pts/4????S+???15:00???0:00?grep?tomcat
所以用grep -v grep把這條過濾掉。
4、第四段 /dev/null 21,將顯示結(jié)果(默認(rèn)是正確輸出,即1)重定向到/dev/null中去,2代表錯(cuò)誤輸出,也和1一樣。Linux中0代表輸入stdin,1代表輸出stdout,2代表錯(cuò)誤輸出stderror。
每運(yùn)行一個(gè)命令,該命令都會(huì)有一個(gè)返回值給shell,你可以在終端中試試ls,然后echo $?查看返回值,肯定是0,如果ls 一個(gè)不存在的文件,再看,肯定不是0。以此判斷上一條命令是否執(zhí)行成功。
if?[?$??-eq?0?];?then
判斷上一條命令的返回值是否等于(-eq) 0,即是否運(yùn)行成功。
大小的:du -sh 文件名
目錄的:ls -lR| grep "^d" | wc -l
連接的:-l
查看某個(gè)文件夾或文件的大小是: du -sm filename,
查找某些目錄下某些文件文件夾的大小: find . -name "條件" | xargs du -sm
你如果想查所有包含123的文件的大小的話,使用linux命令可能就很難做到了,使用shell腳本可以實(shí)現(xiàn)到,你可以在shell腳本中先查出來(lái)所有名字是123的文件,搜索結(jié)果中會(huì)是全路徑形式的,你取文件所在的目錄,然后使用上面的方式統(tǒng)計(jì)出來(lái)包含123文件的所有文件夾的總大小.
例如:
先搜出來(lái)所有123的文件:find . -name "123"
/temp/123
/temp/f1/123
/temp/f2/123
獲取文件所在的文件夾
/temp
/temp/f1
/temp/f2
然后 ***| xargs du -sm
把上面的值加起來(lái)
Shell腳本基本知識(shí)
概述:shell其實(shí)是內(nèi)核與用戶之間的一個(gè)接口,
shell腳本
如果有一系列經(jīng)常使用的linux命令,你可以把它們存儲(chǔ)在一個(gè)文件腫。shenll可以讀取這個(gè)文件,并執(zhí)行其中的命令。這樣的文件成為腳本文件。
執(zhí)行shell腳本
要?jiǎng)?chuàng)建一個(gè)shell腳本,你要使用任何編輯器比如vi在文本文件中編寫他。
為了使用bash shell賴執(zhí)行腳本magic,其命令是:bash magic或者./magic
echo命令:
echo “this is an example of the echo command!”
屏幕上就會(huì)回顯“this is an example of the echo command!”
#符號(hào)
用于在shell腳本腫可以包含注解入口
echo “hello”
#this is a comment line. this would not produce any output!
echo “world!”
第二行是一個(gè)注解的例子。它將被shell忽略,而且不產(chǎn)生任何消息
變量:
可以在任何時(shí)間通過簡(jiǎn)單的賦值來(lái)創(chuàng)建。
語(yǔ)法:
variable name-value
Linux 中的所有變量都被當(dāng)作字符串
引用變量:
$符號(hào)用于引用一個(gè)變量的內(nèi)容
variable1 = ${variable2}
讀入值給變量
在執(zhí)行shell腳本時(shí),shell還允許用戶直接從鍵盤讀入一個(gè)值給變量,還可以使用read命令來(lái)作。
$read fname
本地和全局shell變量
局部變量
當(dāng)引用shell時(shí),只有創(chuàng)建它的shell能夠知道變量的存在
全局變量
稱為子shell
shell中創(chuàng)建的變量局部于創(chuàng)建它的shell,除非使用export命令特別指出是全局的。
環(huán)境變量:
通過改變這些變量的值,用戶能夠定制此環(huán)境
一些環(huán)境變量的例子是HOME,PATH,PS1,PS2,LOGNAME,SHLVL,及SHELL
HOME變量
Linux系統(tǒng)中的每個(gè)用戶都有一個(gè)相關(guān)的稱作HOME的目錄
當(dāng)一個(gè)用戶登錄后,進(jìn)入相應(yīng)的HOME的目錄
$ echo $HOME
PATH變量
包含一列用冒號(hào)定界的目錄的路徑名字,便于可執(zhí)行程序的搜索。
PS1變量
PS1(Prompt String 1)變量包含了shell提示符,$符號(hào)
$ PS1 = “HELLO”
HELLO
PS2變量
是為第二個(gè)提示符設(shè)置值的環(huán)境變量
LOGNAME變量
包含用戶的注冊(cè)名字
$echo “${LOGNAME}”
SHLVL 變量
該變量包含當(dāng)前工作的shell level
SHELL變量
環(huán)境變量存儲(chǔ)了用戶缺省的shell
env命令
可用來(lái)查看所有的已移出的環(huán)境變量表和它們各自的值!
命令替換
在單個(gè)命令行中使用多個(gè)命令的另外一種方法(非Pipes)是通過命令替換
echo “the data is `date`”
expr命令
用于求之算術(shù)表達(dá)式。該命令的輸出被送到標(biāo)準(zhǔn)輸出
$ expr 4 + 5
將在屏幕上顯示9
算術(shù)展開:
你可以在$((…)) 中括一個(gè)表達(dá)式,用下面的命令來(lái)計(jì)算它的值;
$((expression))
example1
編寫一個(gè)shell腳本用于計(jì)算呼叫中心未應(yīng)答的詢問的數(shù)量。該腳本應(yīng)該接受一天那所報(bào)告的詢問的總數(shù)和應(yīng)答的詢問的數(shù)量,以便計(jì)算未應(yīng)答的詢問的數(shù)量。
所有未應(yīng)答的詢問總數(shù)=所有詢問的總數(shù)-應(yīng)答的詢問的數(shù)量
!--[if !supportLists]--※ !--[endif]--※※※※※※※※※※※※※※※※※※※※※※※
條件執(zhí)行
test和[]
求值表達(dá)式,并返回true(0)或false()
數(shù)值測(cè)試:
-eq 等于則為真
-ne 不等于則為真
-gt 大于則為真
-ge 大于等于則為真
-lt 小于則為真
-le 小于等于則為真
if構(gòu)造
Linux shell提供了循環(huán)和判定的構(gòu)造,可以在shell腳本中使用
算術(shù)測(cè)試
結(jié)合if構(gòu)造,它可以用于測(cè)試變量的數(shù)字值
串測(cè)試
test命令也可以用于字符串
= 等于則為真
!= 不相等則為真
-z 字符串 長(zhǎng)度為零則為真
-n 字符串 長(zhǎng)度不為零則為真
文件測(cè)試
test命令也可以用于檢查文件的狀態(tài)
-e 文件存在則為真
-r 文件存在并且可讀則為真
-w 文件存在并且可寫則為真
-x 文件存在并且可執(zhí)行則為真
-s 文件存在并且至少有一個(gè)字符則為真
-d 文件存在并且為目錄則為真
-f 文件存在并且為普通文件則為真
-c 文件存在并且為字符型文件則為真
-b 文件存在并且為塊特殊文件則為真
-a并且 -o或者 !非
exit命令
用于終止shell腳本的執(zhí)行并返回到$提示符下
case 。。。esac
shell腳本中使用的這個(gè)構(gòu)造依據(jù)變量的值而執(zhí)行一組特定指令
當(dāng)變量的值和其中的一個(gè)值匹配的時(shí)候,就執(zhí)行寫在該值下的一組命令。
example3
迭代
while構(gòu)造
while 條件
do
命令(s)
done
只有條件為真的時(shí)候,才能執(zhí)行do與done之間的命令
until構(gòu)造
until循環(huán)構(gòu)造的求值模式于while循環(huán)相反
until循環(huán)將繼續(xù)執(zhí)行直到求值的條件為真的時(shí)候
for構(gòu)造
for variable_name in list_of_values
do
…
done
for循環(huán)取一列值作為輸入并對(duì)循環(huán)中每個(gè)值執(zhí)行循環(huán)
break和contineu命令
同其他語(yǔ)言中的用法
example4
控制進(jìn)程的執(zhí)行
請(qǐng)求后臺(tái)處理
用于請(qǐng)求后臺(tái)進(jìn)程的符號(hào)是 ()
$ wc tempfile
[1] 2082
$ vi newfile
檢查后臺(tái)進(jìn)程
ps(進(jìn)程狀態(tài))命令為每個(gè)當(dāng)前的活動(dòng)的每個(gè)進(jìn)程產(chǎn)生一行入口。
終止后臺(tái)進(jìn)程
可用kill,如下所示
kill 278
查看完成一個(gè)命令所花的時(shí)間
你可以使用time命令來(lái)查看一個(gè)命令從開始到結(jié)束所花的時(shí)間
time fine /etc –name “passwd” 2 /dev/null /dev/null表明忽略錯(cuò)誤信息。
管道的介紹
垂直條(|)是管道字符
它只是shell:“|”前面命令的輸出作為“|”之后命令的輸入發(fā)送
ls –l | more
用管道組合命令,功能強(qiáng)大