原創:小姐姐味道(微信公衆號ID:xjjdog),歡迎分享,轉載請保留出處。任何不保留此聲明的轉載都是抄襲。java
聽說,若是和一我的對視5秒,就能愛上對方。小王知道這個道理,漸漸的想入非非。他想象着嘴脣傳來一陣微涼的觸感,而後丹田裏的空氣被迅速抽乾。linux
來一場無拘無束的桌咚
,閃亮的屏幕是他們的見證,跳動的字符是他們的伴奏。程序員
他的背逐漸靠在了鍵盤上,雙手倒扣着桌子,亂七八糟的字符流源源不斷的輸入到終端。可是等等!這些肆意輸入的字符,會不會傷害到他管理的服務器?或者,在他按下Enter鍵以前,都是安全的?shell
這個想法把他拉回到了現實,讓他從恍惚中驚醒。centos
稍微思考了一下,他肯定,是不允許貓這樣的動物在他鍵盤上跳來跳去的。安全
如今,你已經安裝好了centos,並遠程鏈接上了它。咱們擁有了它,但並不能瞭解它的脾氣。接下來,讓咱們進入Linux命令行的世界。和我簽定契約吧,少年。bash
本小節會使用很是詳細的演進方式,來看一下一個命令,是怎樣生成和執行的。服務器
好啦,咱們如今就在終端裏了。什麼叫作終端呢?你在不少黑客電影裏,看到的黑漆漆的界面就是,它提供了一個能夠輸入字符串的交互式界面,至於那些閃光的、掃描機同樣的東西,是不存在的。微信
嘗試輸入些什麼吧。 好比:jdsjf
。架構
[root@localhost ~]# jdsjf
-bash: jdsjf: command not found
複製代碼
咱們再次把這張圖貼一下。怎麼回事?命令的輸出翻譯成中文,就是「找不到命令」的意思。什麼叫命令?就是咱們上面隨便輸入的字符串jdsjf
。
而後,咱們看下提示中其餘一些有用的東西。
↓↓↓↓↓↓
bash 表明的是咱們所使用的shell
,shell能夠認爲是一個解釋器,將咱們的輸入解釋成一系列可執行的指令。如今的linux發行版,最流行的就是bash解釋器,幾乎每一個都預裝了它。
命令找不到,證實咱們的字符串bash解釋不了。可是,Linux上一些目錄裏的文件,是能夠被默認找到的,這些目錄的集合,就叫PATH
。PATH仍是一個環境變量,咱們能夠經過命令查看它的尊容。
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
想要知道系統中有哪些命令,就能夠看下上面這些文件夾中,都有哪些文件。文件很是很是之多,可是大部分咱們不會接觸。因此,xjjdog纔會寫這麼個東西--聚焦那些最經常使用,最有用的命令,最經常使用的參數,最有用的場景。
命令輸出後,還有一些額外的東西,好比[root@localhost ~]
,這部分叫作提示符,光標會一直跳動,等待你的輸入。這部分是能夠定製的,甚至能夠定製的十分漂亮。
到如今爲止,咱們什麼都沒獲得。按照程序員的想法來講,就要實現一個hello world
的程序。在終端shell裏,這個過程變得簡單,遠比寫一個java程序簡單。
[root@localhost ~]# echo "Hello World"
Hello World
複製代碼
如上所示,echo
的意思就是輸出一些內容。後面的Hello World
,就叫作參數,它們之間以空格分隔,能夠接受多個參數。
[root@localhost ~]# echo "Hello World" , "Fuck 996"
Hello World , Fuck 996
複製代碼
以上命令可以正常運行,證實echo是咱們的終端可以認識的一個命令。那到底這個命令是在什麼地方呢?可使用whereis
命令進行查找。
[root@localhost ~]# whereis echo
echo: /usr/bin/echo /usr/share/man/man1/echo.1.gz
複製代碼
命令顯示。咱們的echo命令全路徑,是/usr/bin/echo
,因爲它處於PATH目錄中,因此可以被識別到。
接下來,咱們把上面的命令,作成一個腳本。而後將這個腳本,放到PATH目錄中。不過先等等,咱們要先給命令起個名字。
首先須要建立一個文件。在Linux上,建立文件使用touch
命令。
[root@localhost ~]# touch jdsjf
複製代碼
命令執行後,什麼都沒發生,它只是建立了一個空文件。接下來,咱們向其中添加一些內容。
[root@localhost ~]# echo "echo 'Hello World'" > jdsjf
複製代碼
注意符號>
,它的意思是,將前面的輸出,重定向到後面的文件中。執行完上面的命令,jdsjf
中的內容,就變成了echo 'Hello World
。
接下來,咱們嘗試着去執行剛纔生成的命令。
[root@localhost ~]# ./jdsjf
-bash: ./jdsjf : Permission denied
複製代碼
咱們經過相對路徑的方式,來執行剛剛生成的命令。結果,終端顯示咱們並無這個命令的執行權限。
其實,Linux在權限控制這一方面,很是的詳細。一個文件,有可讀、可寫、可執行三種屬性。若是想要一個文件可以執行,須要給它添加執行權限,這個過程是由命令chmod
完成的。
[root@localhost ~]# chmod u+x jdsjf
[root@localhost ~]# ./jdsjf
Hello World
複製代碼
咱們將在後面的章節,來詳細介紹權限方面的知識。如上所示,命令已經能正常輸出,接下來,咱們把命令移動
到PATH中的一個目錄。
[root@localhost ~]# mv jdsjf /usr/local/bin/
[root@localhost ~]# jdsjf
Hello World
複製代碼
不須要加任何的相對路徑,如今,只須要輸入jdsjf,就能夠正常輸出一串數字。咱們成功的讓一個沒有任何意義的字符串,表達了它的想法。雖然咱們依然是它的主宰。
本小節經過構建一個簡單的小命令,說明了PATH環境變了的重要性。並初步接觸瞭如下幾個命令:
一、我能夠自定義一個目錄,好比/root/mybin
,把它加入到PATH麼?
二、我能夠省略上面的touch命令,直接使用重定向生成文件麼?
三、除了放到PATH和相對路徑,還有沒有其餘的命令執行方式?
「你不瞭解我」,妹子的聲音在對視4.5秒的時候傳來,緊接着她抽出了手。
但願落空,痛苦在小王的心裏逐步蔓延,像是酒精注射進了體內,吸乾了全部的水分,透着不太真實的醉意。但小王的表情依舊平靜。
「我卻瞭解你」,妹子的聲音接着傳來,又讓小王從混沌中逐漸清醒。
「因此,這並不公平」。
做者簡介:小姐姐味道 (xjjdog),一個不容許程序員走彎路的公衆號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高併發世界,給你不同的味道。個人我的微信xjjdog0,歡迎添加好友,進一步交流。
6 echo 2 mv 2 chmod 4 $PATH 2 whereis 3 touch
做者簡介:小姐姐味道 (xjjdog),一個不容許程序員走彎路的公衆號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高併發世界,給你不同的味道。個人我的微信xjjdog0,歡迎添加好友,進一步交流。