《調教命令行03》感受不是說來就來的

原創:小姐姐味道(微信公衆號ID:xjjdog),歡迎分享,轉載請保留出處。任何不保留此聲明的轉載都是抄襲。java

聽說,若是和一我的對視5秒,就能愛上對方。小王知道這個道理,漸漸的想入非非。他想象着嘴脣傳來一陣微涼的觸感,而後丹田裏的空氣被迅速抽乾。linux

來一場無拘無束的桌咚,閃亮的屏幕是他們的見證,跳動的字符是他們的伴奏。程序員

他的背逐漸靠在了鍵盤上,雙手倒扣着桌子,亂七八糟的字符流源源不斷的輸入到終端。可是等等!這些肆意輸入的字符,會不會傷害到他管理的服務器?或者,在他按下Enter鍵以前,都是安全的?shell

這個想法把他拉回到了現實,讓他從恍惚中驚醒。centos

稍微思考了一下,他肯定,是不允許貓這樣的動物在他鍵盤上跳來跳去的。安全

萬事開頭難。面對黑漆漆的Linux窗口,要勇敢的走出第一步。不要怕輸錯了什麼,系統健壯的很。命令行一般會擁有比圖形界面更高的效率,更加劇要的是它能夠作自動化之類的小工具,這使得生產力產生質的飛躍。

如今,你已經安裝好了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

到如今爲止,咱們什麼都沒獲得。按照程序員的想法來講,就要實現一個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

接下來,咱們把上面的命令,作成一個腳本。而後將這個腳本,放到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環境變了的重要性。並初步接觸瞭如下幾個命令:

  • echo 輸出一些信息。
  • touch 建立一個文件。
  • > 重定向符號。
  • chmod 修改文件權限。
  • mv 移動文件。

五、思考&擴展

一、我能夠自定義一個目錄,好比/root/mybin,把它加入到PATH麼?

二、我能夠省略上面的touch命令,直接使用重定向生成文件麼?

三、除了放到PATH和相對路徑,還有沒有其餘的命令執行方式?

END

「你不瞭解我」,妹子的聲音在對視4.5秒的時候傳來,緊接着她抽出了手。

但願落空,痛苦在小王的心裏逐步蔓延,像是酒精注射進了體內,吸乾了全部的水分,透着不太真實的醉意。但小王的表情依舊平靜。

「我卻瞭解你」,妹子的聲音接着傳來,又讓小王從混沌中逐漸清醒。

「因此,這並不公平」。

做者簡介:小姐姐味道 (xjjdog),一個不容許程序員走彎路的公衆號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高併發世界,給你不同的味道。個人我的微信xjjdog0,歡迎添加好友,​進一步交流。​


6 echo 2 mv 2 chmod 4 $PATH 2 whereis 3 touch

做者簡介:小姐姐味道 (xjjdog),一個不容許程序員走彎路的公衆號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高併發世界,給你不同的味道。個人我的微信xjjdog0,歡迎添加好友,​進一步交流。​

相關文章
相關標籤/搜索