一篇通俗的Linux Shell體驗(yàn)教程
Linux】1 Shell ??
1. 語(yǔ)錄
計(jì)算機(jī)不僅僅用來(lái)開發(fā)個(gè)網(wǎng)站或軟件,更是我們手中的利器,我們的tools。
shell是我們與計(jì)算機(jī)交互的主要方式,可視化的圖形界面其實(shí)很受限,你只能通過(guò)預(yù)設(shè)的按鈕去做一些事情。
2. Shell
2.1 程序
操作系統(tǒng)中通常都有一個(gè)”shell“,例如windows中的powershell。它們之間可能有些區(qū)別,但總的來(lái)說(shuō)差不多。在windows系統(tǒng)中,也可以通過(guò)安裝Git,使用linux風(fēng)格的git bash 。(windows 下的git bash有時(shí)也不太一樣,更建議真正的linux系統(tǒng))
shell中可以通過(guò)輸入程序名來(lái)執(zhí)行程序,比如有個(gè)程序叫date,就之間輸入($是命令提示符,就像windows中的>)
$ date Sat Mar 18 20:52:33 2023
可以給程序傳遞參數(shù),例如程序echo
的運(yùn)行效果就是把傳遞給它的參數(shù)打印出來(lái),
$ echo hello hello
此外,如果有多個(gè)參數(shù),參數(shù)之間是使用空格分開的,如果傳多單詞組成的參數(shù),可以使用\
(轉(zhuǎn)義字符),例如下面其實(shí)只給echo
傳了一個(gè)參數(shù),
$ echo hello\ world hello world
系統(tǒng)可以找到你輸入的程序,是通過(guò) Path(路徑),可以查看環(huán)境變量中的所有路徑
$ echo $PATH /c/Users/ThinkPad/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/ThinkPad/bin:/c/Program Files/Common ...(我省略了)
在你輸入一個(gè)程序名,比如echo
時(shí),shell就會(huì)在系統(tǒng)的所有路徑的目錄中搜索該程序,你可以這樣查看一個(gè)程序所在的路徑
$ which echo /usr/bin/echo
補(bǔ)充:關(guān)于程序(命令)的參數(shù),我們使用-
后面接單個(gè)字母,使用--
后面接單詞。例如-a
,--all
。
2.2 目錄
程序默認(rèn)會(huì)在當(dāng)前目錄下運(yùn)行。下面是一些常用的目錄操作
命令 | 介紹 |
---|---|
pwd (print work directory) | 打印當(dāng)前目錄路徑 |
ls | 列出當(dāng)前目錄下的文件,使用-l 參數(shù)將顯示更多詳細(xì)信息 |
cd | 切換目錄到指定目錄,使用cd - 可回到剛才所在的目錄,方便在兩個(gè)目錄間切換。. 表示當(dāng)前目錄,.. 表示父目錄,~ 表示用戶目錄,/ 開頭表示根目錄。 |
通過(guò)--help
參數(shù),可以查看某個(gè)命令的用法,例如
$ ls --help
想一想:ls -l列出的目錄列表及其信息,如何解讀?
而操作文件需要權(quán)限,你需要擁有整條路徑的權(quán)限才能對(duì)文件進(jìn)行相應(yīng)的操作。下面是一些和文件操作有關(guān)的命令介紹。
2.3 文件
2.3.1 簡(jiǎn)單文件操作
你可以使用mv
命令給文件重命名,即使它是move(移動(dòng))的意思。假設(shè)你在當(dāng)前的目錄下已經(jīng)有個(gè)文件hello.txt,那么你可以使用命令
$ mv hello.txt hello2.txt
將它重命名為hello2.txt。cp
命令可以復(fù)制文件,它的意思是copy (很顯然),你可以接著剛才的命令使用
$ cp hello2.txt hello.txt
那么你的hello.txt文件又回來(lái)了!現(xiàn)在你有了兩個(gè)相同內(nèi)容的文件,卻有著不一樣的名字。但估計(jì)你會(huì)覺得這有些多余,但好在你可以使用命令rm
刪掉其中一個(gè),就像下面這樣
$ rm hello2.txt
好了,現(xiàn)在我們又回到了剛剛開始的樣子,但我們剛剛的操作已經(jīng)在終端留下了雜亂的信息,使用clear
命令清除它們!
$ clear
如果你想新建文件,可以使用touch
命令,比如新建一個(gè)空hello2.txt文件
$ touch hello2.txt
有時(shí)你會(huì)感覺命令的名字有些奇怪,為什么創(chuàng)建文件要是touch?其實(shí)它就像前面的mv命令,重命名僅僅對(duì)它的一種使用方式,而它能做的不止于此,它其實(shí)可以將文件移動(dòng)到你計(jì)算機(jī)的任何一個(gè)地方!
touch是一個(gè)時(shí)間戳命令,當(dāng)操作的文件不存在時(shí)就會(huì)自動(dòng)新建一個(gè)文件——而不是它本身只有新建文件的功能。當(dāng)你感到疑惑時(shí)可以使用touch --help看看幫助文檔。而我使用echo命令同樣達(dá)到新建文件的目的
$ echo '' > hello3.txt
它將新建一個(gè)空文件hello3.txt 。你可能看著這些linux命令就像回到了高中背單詞的時(shí)候,同一個(gè)單詞有著相互略微聯(lián)系的多種用法——也確實(shí)如此,單詞是語(yǔ)言的基礎(chǔ)。
至于剛剛命令中的>>
符號(hào),相信大家一看就懂,我們后面也將會(huì)進(jìn)一步介紹。
2.3.2 重定向
程序的輸出除了直接顯示到屏幕上,你也可以將它保存到文件里,而重定向可以幫你達(dá)成這個(gè)目標(biāo)。這里有個(gè)流的概念,每個(gè)程序都有自己的輸入流與輸出流,程序從自己的輸入流中讀取數(shù)據(jù),并將運(yùn)行結(jié)果寫入到輸出流中。而程序默認(rèn)從鍵盤輸入獲取數(shù)據(jù),并將運(yùn)行結(jié)果寫到屏幕上,我們將鍵盤輸入稱為標(biāo)準(zhǔn)輸入流,將屏幕稱為標(biāo)準(zhǔn)輸出流。而重定向?qū)⒅惬@得修改程序輸入、輸出方向的能力——而不總是鍵盤和屏幕。
echo
命令將輸入流中的數(shù)據(jù)傳遞到輸出流,但我現(xiàn)在不想輸出到屏幕,我要將輸入的內(nèi)容保存到文件里,那么可以使用>
——重定向輸出流。
$ echo hello > hello.txt
想一想:為什么
echo < hello.txt
輸出為空?
類似地可以使用<
重定向輸入流。cat
命令可以將文件輸入顯示到屏幕,如
$ cat hello.txt hello
現(xiàn)在我們通過(guò)重定向,可以將hello.txt文件的內(nèi)容復(fù)制到另一個(gè)文件hello2.txt中
$ cat < hello.txt > hello2.txt $ cat hello2.txt hello
cat
程序從hello.txt中獲得輸入,并將輸出寫入了hello2.txt中——而不是屏幕上。
>
重定向的輸出流是覆蓋模式,對(duì)應(yīng)到文件操作中,就是先清空文件中原有的內(nèi)容,然后寫入新內(nèi)容。如果你是想在原來(lái)的基礎(chǔ)上添加一些內(nèi)容,那么>>
很適合你,它將以追加模式寫入新內(nèi)容。
$ echo world >> hello.txt $ cat hello.txt hello world
命令 | 介紹 |
---|---|
< | 重定向輸入流 |
> | 重定向輸出流,以覆蓋模式寫入 |
>> | 重定向輸出流,以追加模式寫入 |
2.4 管道
一個(gè)程序的輸出可以保存到文件里,也可以直接傳遞給另一個(gè)程序。將左側(cè)程序的輸出直接作為右側(cè)程序的輸入,這便是管道的作用,管道符為|。
tail命令通過(guò)-n參數(shù),可以輸出它輸入中的最后n行。命令ls -l /會(huì)顯示出很多信息,那么通過(guò)下面的命令我可以只顯示其中最后兩行:
$ ls -l / | tail -n 2 -rw-r--r-- 1 ThinkPad 197121 24183 Nov 28 12:20 unins000.msg drwxr-xr-x 1 ThinkPad 197121 0 Nov 28 12:20 usr/
tee
命令可以將輸入同時(shí)輸出到屏幕和指定的文件中,那么加上管道你可以像下面這樣
$ echo linux1234 | tee hello.txt linux1234
3 匯總與小結(jié)
本節(jié)介紹的一些命令、變量、參數(shù)如下表所示。
命令 | 介紹 |
---|---|
date | 顯示當(dāng)前時(shí)間 |
echo | 將輸入顯示到屏幕 |
$PATH | 環(huán)境變量 |
which | 查找程序的位置 |
pwd | 打印當(dāng)前路徑 |
ls | 列出當(dāng)前目錄下的目錄和文件 |
cd | 切換當(dāng)前目錄 |
--help | 查看程序的幫助文檔 |
mv | 重命名文件 |
cp | 復(fù)制文件 |
rm | 刪除文件 |
clear | 清除終端輸出 |
touch | 新建文件 |
< | 重定向輸入流 |
> | 重定向輸出流,覆蓋模式寫入 |
>> | 重定向輸出流,追加模式寫入 |
| | 管道符,左側(cè)程序的輸出作為右側(cè)程序的輸入 |
tail | -n 參數(shù)將輸入中的最后n行輸出 |
tee | print to both your file and screen |
本文僅僅大致介紹了linux shell的概況與使用,后面還有著更加精彩的世界等著大家自由探索。
以上就是一篇通俗的Shell體驗(yàn)教程的詳細(xì)內(nèi)容,更多關(guān)于Linux Shell教程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
shell監(jiān)控系統(tǒng)資源并通過(guò)短信報(bào)警的腳本
這篇文章主要介紹了shell監(jiān)控系統(tǒng)資源并通過(guò)短信報(bào)警的腳本,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12Linux下實(shí)現(xiàn)SNMP一鍵安裝的Shell腳本
這篇文章主要介紹了Linux下實(shí)現(xiàn)SNMP一鍵安裝的Shell腳本,非常實(shí)用,需要的朋友可以參考下2014-07-07linux下定時(shí)執(zhí)行任務(wù)的方法及crontab 用法說(shuō)明(收集整理)
這篇文章主要介紹了 linux下定時(shí)執(zhí)行任務(wù)的方法及crontab 用法說(shuō)明(收集整理),需要的朋友可以參考下2017-04-04linux shell腳本基礎(chǔ)知識(shí)學(xué)習(xí)
這篇文章主要介紹linux shell腳本基礎(chǔ)知識(shí),學(xué)習(xí)linux shell編程的朋友可以參考下2013-03-03詳談Linux開發(fā)中常見段錯(cuò)誤問題的原因及分析
下面小編就為大家?guī)?lái)一篇詳談Linux開發(fā)中常見段錯(cuò)誤問題的原因及分析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03一天一個(gè)shell命令 linux好管家-進(jìn)程-ps命令詳解
這篇文章主要介紹了一天一個(gè)shell命令 linux好管家-進(jìn)程-ps命令詳解 ,需要的朋友可以參考下2016-06-06Shell之function函數(shù)的定義及調(diào)用示例
本文主要介紹了Shell之function函數(shù)的定義及調(diào)用示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08