日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

發(fā)布時(shí)間:2025/3/21 linux 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自:

九十分鐘極速入門Linux——Linux Guide for Developments 學(xué)習(xí)筆記
http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=404510068&idx=2&sn=0fc406025644a60ae8a94f3ff0cba626&scene=23&srcid=0101ZDCyZGjWLS8ygofWkNSh#rd


  • 一張圖了解命令提示符和命令行

  • 一些實(shí)用小命令

  mkdir(make directory,創(chuàng)建目錄)、ls(list,列出當(dāng)前目錄下的內(nèi)容)、rm(remove,刪除文件,如果刪除目錄,需要加參數(shù)-r,表示遞歸-recursive刪除)、man(manual,手冊(cè),后面跟命令打開該命令的使用手冊(cè),進(jìn)入后鍵入/- 參數(shù):查找參數(shù)如何使用,n查找下一處,q退出用戶手冊(cè))、ctrl+l(清屏)、pwd(print working dir,顯示工作路徑)、ctrl+a:到達(dá)命名行首

更多信息可參見書籍:The Linux Command Line的第二章和第六章(什么是shell、使用命令)

  • 在文件系統(tǒng)中跳轉(zhuǎn)

  cd(change directory)、.表示當(dāng)前目錄、./代表當(dāng)前目錄的子目錄、..表示當(dāng)前目錄的父目錄、cd /(通過絕對(duì)路徑的方式進(jìn)入根目錄)、cd -(回到原來的目錄)

  Tips:cd 目錄名(和cd ./目錄名的作用相同) 可以通過Tab鍵補(bǔ)齊,如果有多個(gè)備選項(xiàng)的話,雙擊Tab列出所有匹配選項(xiàng)

更多參見書籍:The Linux Command Line的第三章(文件系統(tǒng)中跳轉(zhuǎn))

  • 操作文件和目錄

  copy:    $ cp file1 file2    $cp -r dir1 dir2move:    $ mv file dir/rename:    $ mv file1 file2    $mv dir1 dir2 # 如果dir2 存在,則為移動(dòng)操作remove:   $ rm file       $rm -r dir創(chuàng)建文件:  $ touch a.txt     $ >a.txt     查看文件:    $ cat file創(chuàng)建目錄:   $mkdir dir               查看文件類型:  $file a.txt

  創(chuàng)建隱藏文件/目錄:touch .文件名 或 mkdir .mydir,通過ls -a可以看到。

  利用通配符刪除當(dāng)前目錄下的所有文件:rm -rf * 字符串匹配,列出/bin目錄下的所有包含"pin"字符串的文件: ls /bin|grep pin

  下載imooc主頁:wget http://imooc.com

  分頁查看文件內(nèi)容:less 文件名 (按住j向下滾屏 按住k向上滾屏 /字符:進(jìn)行字符查找,鍵入n查找下一處 雙擊g可以到達(dá)文件頭 點(diǎn)擊G可到達(dá)文件尾 q退出),man命令底層的分頁就是用的less,因此less中所有的快捷鍵在man中都是可以使用的。

  放大/縮小/還原終端字體:ctrl + + ctrl + - ctrl + 0

  輸入命令后不想執(zhí)行:ctrl+ c

  解壓縮zip文件:unzip 文件名       壓縮成zip文件:zip -r 壓縮后文件名.zip 被壓縮的文件名

  解壓縮*.tar.gz文件:tar zxvf 文件名   壓縮成tar文件:tar zcvf 壓縮后文件名.tar.gz 被壓縮文件名

  解壓縮*.tar.bz2文件:tar jxvf 文件名   壓縮成tar文件:tar jcvf 壓縮后文件名.tar.gz 被壓縮文件名

  • 重定向

  輸出重定向(redirect stdout):>

  將程序的輸出內(nèi)容保存到文件中:date >output.txt(注:date是一個(gè)系統(tǒng)自帶程序,輸出當(dāng)前時(shí)間)

  cat file1 >file 表示將file1的內(nèi)容復(fù)制到file中  cat file1 >>file 表示將file1的內(nèi)容追加到file中  cat file1 file2 >file 表示將file1和file2連接到file中

  標(biāo)準(zhǔn)錯(cuò)誤重定向(redirect stderr):2>

  標(biāo)準(zhǔn)輸入重定向(redirect stdin):<

  (PS:linux下有一個(gè)傳統(tǒng):Everything is a file,如目錄是一個(gè)目錄文件,各種設(shè)備都被抽象成了文件放到了目錄文件/dev下,系統(tǒng)上有三個(gè)非常特殊的文件,因?yàn)樗鼈兪且恢贝蜷_的,因此系統(tǒng)為他們分配了三個(gè)固定的file descriptor,文件描述符為0的文件叫做標(biāo)準(zhǔn)輸入文件(stdin),為1的叫做標(biāo)準(zhǔn)輸出文件(stdout),為2的叫做標(biāo)準(zhǔn)錯(cuò)誤輸出文件(stderr),因此你會(huì)看到標(biāo)準(zhǔn)錯(cuò)誤輸出重定向的標(biāo)識(shí)符為:2>)

  一般情況下,標(biāo)準(zhǔn)輸入重定向的使用頻率不如管道,如:cat file1|uniq|grep str|sort(uniq忽略重復(fù)行,grep打印匹配行,sort對(duì)每行字符串進(jìn)行排序)

  • 用戶和文件權(quán)限

  在Linux中有這么一項(xiàng)傳統(tǒng):home is writable but not outside.

  三種權(quán)限:用戶對(duì)文件主要有三種權(quán)限:r(reading)、w(writing)、x(executing)。

  三種用戶類型:owner、group、world

  對(duì)權(quán)限的討論就是看owner、group、world對(duì)文件的r/w/x權(quán)限。

  如在終端中查看文件權(quán)限:$ ls - l a.txt,得到結(jié)果(注:查看目錄權(quán)限,ls -ld mydir):

  -rw-rw-rw-. 1 xpjiang xpjiang 6 12月 23 21:31 a.txt

  該行信息傳達(dá)的信息如下圖:

  對(duì)文件的r 權(quán)限表示可以查看文件的內(nèi)容(cat file),對(duì)目錄的r 權(quán)限表示可以查看目錄的內(nèi)容(ls mydir);對(duì)文件的w 權(quán)限表示可以編輯該文件里的內(nèi)容,而對(duì)目錄的w 權(quán)限表示我們可以在該目錄下創(chuàng)建、刪除、重命名文件;對(duì)文件的x 權(quán)限表示可以把它作為一個(gè)程序來執(zhí)行,對(duì)目錄的x 權(quán)限表示我們可以進(jìn)入該目錄(cd mydir)。

  對(duì)當(dāng)前目錄增加寫權(quán)限:chmod +w .

  用vim編輯器創(chuàng)建一個(gè)腳本文件a.sh:vim a.sh(鍵入i進(jìn)入插入模式,寫入一個(gè)簡(jiǎn)單的打印命令:echo hello,esc退出插入模式,兩次大寫Z保存文件),執(zhí)行該腳本:./a.sh,一般情況下,我們沒有執(zhí)行權(quán)限,可以這樣做:chmod +x a.sh,執(zhí)行該腳本,終端輸出:hello。

  chmod(change file mode):chmod 666 a.txt(666為file mode的八進(jìn)制表示)

  • 進(jìn)程

  獲取進(jìn)程號(hào)(PID,Process ID)

  終端中啟動(dòng)vim,它會(huì)占據(jù)當(dāng)前的shell,敲Ctrl+Shift+T(編輯->鍵盤快捷鍵中可查看終端中使用的快捷鍵,也可根據(jù)需要自定義快捷鍵,例如Ctrl+Shift+C復(fù)制內(nèi)容,Ctrl+Shift+V粘貼)打開一個(gè)新的終端標(biāo)簽,ps aux 查看系統(tǒng)上所有的進(jìn)程情況,因?yàn)檩敵銎^長,我們可以在ps aux 后面加上管道符(|),用less 程序做分頁器:ps aux|less,輸出中的PID字段,就是我們關(guān)注的進(jìn)程號(hào)。鍵入 /vim 進(jìn)行查找,可以看到vim程序的進(jìn)程號(hào),不過更一般的查看進(jìn)程號(hào)的方式是用grep 命令查找vim關(guān)鍵字:ps aux|grep vim,使用kill vim進(jìn)程號(hào) 就可以結(jié)束vim程序(Ctrl+PgUp,切換到上一個(gè)終端標(biāo)簽可以看到vim程序已經(jīng)被殺死了)。

  后臺(tái)執(zhí)行

  在命令行中也可以啟動(dòng)圖形化程序,如firefox,Alt+Tab 可以切換回命令行,可以看到firefox占據(jù)了當(dāng)前的shell,如何處理這種情況呢?一個(gè)簡(jiǎn)單的方法是firefox &,這樣firefox就自動(dòng)在后臺(tái)執(zhí)行了,而且切換回終端后命令行依然可以使用。但是如果已經(jīng)出現(xiàn)了firefox占據(jù)了shell這種情況,可以Ctrl+z,發(fā)現(xiàn)firefox已經(jīng)沒有響應(yīng)了,切回終端,鍵入bg,這樣就跟firefox & 的情況一樣了,fg切換回前臺(tái),Ctrl+c 結(jié)束firefox(bg:把一個(gè)任務(wù)放到后臺(tái)執(zhí)行,fg:把一個(gè)任務(wù)放到前臺(tái)執(zhí)行)。

  kill

  kill 命令中常用的信號(hào)有2、9、15。其中2 表示中斷,實(shí)現(xiàn)和Ctrl+c 一樣的功能,由終端發(fā)送,通常它會(huì)終止一個(gè)程序;15 表示終止,是kill 命令發(fā)送的默認(rèn)信號(hào),如果程序仍然"活著",可以接受信號(hào)的話;9 表示殺死,這個(gè)信號(hào)很特別,鑒于進(jìn)程可能會(huì)選擇不同的方式,來處理發(fā)送給它的信號(hào),其中也包括忽略信號(hào),這樣9號(hào)信號(hào)并不發(fā)送給目標(biāo)進(jìn)程,而是內(nèi)核立即終止這個(gè)進(jìn)程。當(dāng)一個(gè)進(jìn)程以這種方式終止的時(shí)候,它沒用機(jī)會(huì)去做些"清理"工作,或者是保存勞動(dòng)成果。因?yàn)檫@個(gè)原因,可以把9號(hào)信號(hào)看作殺手锏(kill -9 進(jìn)程號(hào)),當(dāng)其他終止信號(hào)失敗后,再使用它。

  除了通過kill終止進(jìn)程,很多程序也定義了自己的退出方式,比如shell就可以通過exit 命令退出,它等價(jià)于Ctrl+d。

  這里順便說一下一種更糟糕的情況,一個(gè)異常的程序占用了大量的內(nèi)存,導(dǎo)致整個(gè)桌面系統(tǒng)卡頓了,使得我們無法在終端中輸入命令,此時(shí)怎么辦呢?Linux是同時(shí)運(yùn)行著七個(gè)工作臺(tái)的敲入Ctrl+Alt+F2到達(dá)其中一個(gè)工作臺(tái),在這里殺死那個(gè)進(jìn)程,Ctrl+Alt+F1回到原來運(yùn)行著圖形化界面的工作臺(tái)。

  • 查找

  文件和字符串搜索是一個(gè)開發(fā)者日常工作中頗為重要得一部分,下面就來看看shell中都有哪些命令供我們使用來實(shí)現(xiàn)自己的需求:

  locate - 通過名字來在系統(tǒng)全局范圍內(nèi)查找文件

  例:locate vimrc,locate命令還支持正則表達(dá)式:locate --regexp vim[a-z]rc

  使用過程中,有時(shí)會(huì)發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象,如首先touch aa.txt,然后locate aa.txt,發(fā)現(xiàn)終端中沒有輸出,通過man locate 了解到locate reads one or more databases prepared by updatedb,換句話說,locate 不是直接搜索整個(gè)文件系統(tǒng),而是從一個(gè)數(shù)據(jù)庫中讀數(shù)據(jù),這也就是為什么locate 跑的如此溜的原因,系統(tǒng)中的命令updatedb 會(huì)把系統(tǒng)中的數(shù)據(jù)存放到數(shù)據(jù)庫之中,但是updatedb 一般都是每天自動(dòng)運(yùn)行一次,因此我們剛剛創(chuàng)建的文件locate 是找不到的,解決辦法就是手動(dòng)運(yùn)行一下:sudo updatedb。

  find - 在目錄層次結(jié)構(gòu)中搜索文件,支持很多參數(shù),經(jīng)常與字符串查找利器grep一起使用,用來處理搜索到的文件列表。

  例:find . 列出當(dāng)前目錄下的所有目錄和文件,包括子目錄的文件和目錄。

    find .|grep .txt,只列出名字包含.txt 目錄和文件

    find . -type f,只列出文件。

    find . -type f -exec ls -l '{}' ';',-exec 的結(jié)束符是 ';' ,兩者之間可以輸入任意的系統(tǒng)命令。'{}'代表我們前面找到的文件名。

    echo hello >a.txt   echo Hello >b.txt  find . -type f -exec grep -n hell0 '{}' ';' -print,-print 打印出匹配項(xiàng)(包含字符串"hello")所在的文件,-n 打印出匹配項(xiàng)所在的行號(hào),如果想要忽略大小寫可以在grep 后跟參數(shù) -i,或者直接 -ni。

  • 網(wǎng)絡(luò)操作

  網(wǎng)絡(luò)操作主要涉及兩塊內(nèi)容:遠(yuǎn)程操作工具ssh和數(shù)據(jù)傳輸工具rsync。由于沒有可供操作的網(wǎng)絡(luò)主機(jī),因此這部分內(nèi)容暫且略過。更多信息可參見書籍:The Linux Command Line第十七章(網(wǎng)絡(luò)系統(tǒng))。

  • 軟件安裝

  在CentOS上安裝軟件主要有三種方式:

  • 手動(dòng)下載編譯好的軟件或者源碼進(jìn)行安裝

  • 下載rpm 包安裝(類似于ubuntu系統(tǒng)安裝deb包)

  • 從官方倉庫,用yum 下載安裝(類似于從ubuntu官網(wǎng),用apt-get下載安裝)

  •   手動(dòng)下載編譯好的軟件(可執(zhí)行程序)安裝實(shí)例:

      從網(wǎng)址 http://sublimetext.com/,下載sublimeText編輯器。使用 tar jxvf Sublime\ Text\ 2.0.2.tar.bz2 解壓縮,但是執(zhí)行程序必須要用全路徑來執(zhí)行壓縮包中的sublime_text,如果想方便使用,把它變成一個(gè)系統(tǒng)命令,需要把整個(gè)解壓縮包中的子文件移動(dòng)到$ PATH 包含的一個(gè)目錄中(使用命令echo $ PATH查看),或者也可以不移動(dòng),方法就是搞一個(gè)符號(hào)鏈接:$ ln -s Sublime\ Text\ 2.0.2/sublime_text ~/bin/subl,如此在終端中直接輸入subl 即可開啟sublimeText編輯器。

      手動(dòng)下載源碼安裝實(shí)例:

      首先從網(wǎng)址 http://ftp.gnu.org/gnu/hello/,下載 hello-2.2.tar.bz2,依次執(zhí)行命令:

    1 2 3 4 5 $?tar?jxvf hello-2.2.tar.bz2 $?cd?hello-2.2 $ ./configure $?make $?sudo?make?install

      終端中執(zhí)行$ hello,輸出:hello, world!。這里./configure 的作用就是檢查當(dāng)前環(huán)境是否滿足安裝該軟件的依賴關(guān)系,make 是用來從Makefile中讀取指令進(jìn)行編譯的,而make install 是用來從Makefile中讀取指令,將軟件安裝到指定位置的。

      安裝rpm 包:rpm -i rpm包

     使用yum 在線下載安裝:以安裝git 為例:執(zhí)行命令$ sudo yum install git,git 軟件的rpm 包就被下載到本地硬盤,同時(shí)yum 命令包裹了rpm 命令,因此直接把安裝配置過程也給完成了,也就是一個(gè) yum install git 命令,git 就可以直接使用了,如果想卸載git,只需執(zhí)行 $ sudo yum remove git即可。
    • shell 腳本編程

      把許多命令集中到一個(gè)文件中作為一個(gè)腳本來執(zhí)行,就是所謂的shell 腳本編程。

      關(guān)于shell 腳本編程我們劃分成以下幾個(gè)部分一一闡述:

      指定解析器

      可以通過bash、ruby 或python 這樣的語言來寫腳本,只要在腳本的首行指定用什么語法來進(jìn)行解析即可(bash 的語法很機(jī)器化,很多細(xì)節(jié)也比較晦澀,因此可以用ruby 這種更加人性化的語言來寫腳本)。如:

      #!/usr/bin/env bash  或  #!/usr/bin/env ruby  或  #!/usr/bin/env python

      命令就是語句,語句就是命令

      因?yàn)槊恳粋€(gè)命令都是合法的腳本語句,因此可以把多條語句直接羅列到腳本中,也可以將其包裹到一個(gè)函數(shù)中:

    1 2 3 4 5 6 7 8 9 10 11 #!/usr/bin/env bash say_hello() {   echo?"hello" } create_file() {   touch?a.txt } say_hello?# 通過呼叫函數(shù)名來執(zhí)行 create_file

      此外,還有些元素是腳本語句的一部分:

    1 2 3 4 if?[ $# != 1 ]  then   ?echo?"hello"  fi 
     注意到,這里的[ $# != 1 ] 其實(shí)也可以放到終端中去執(zhí)行 
    1 2 3 $[ $# != 1 ] $?echo?$? 0
     查看返回指為0 表示命令執(zhí)行成功。只要if 后面跟一個(gè)可以正確執(zhí)行的命令,則結(jié)果為真;如果跟一個(gè)執(zhí)行會(huì)出錯(cuò)的命令,那么結(jié)果即為假。此外,由于命令對(duì)空格是敏感的,這就導(dǎo)致腳本語句對(duì)空格也是變態(tài)的敏感。

      位置參數(shù)

      執(zhí)行下面的腳本: $ ./xpjiang.sh a.txt b.txt(執(zhí)行前需要$ chmod +x xpjiang.sh):

    1 2 3 4 5 6 #!/usr/bin/env bash echo?" Number of arguments: $# The program name is: $0 The first argument is: $1 "

      輸出如下:

    1 2 3 Number of arguments: 2 The program name is: ./xpjiang.sh The first argument is: a.txt

      這里的$0 代表命令名,$1 代表第一個(gè)參數(shù),$2 代表第二個(gè)參數(shù)...,$# 表示該命令執(zhí)行時(shí)的參數(shù)總個(gè)數(shù)。

      腳本不再當(dāng)前shell 中執(zhí)行

      每次啟動(dòng)一個(gè)腳本,系統(tǒng)都會(huì)為當(dāng)前shell 單獨(dú)開啟一個(gè)子shell,在子shell 中執(zhí)行腳本中的語句。例如,腳本中導(dǎo)出一個(gè)環(huán)境變量:

    1 2 3 4 #!/usr/bin/env bash export?Direct="/home/xpjiang/mydir/" cd?$Direct touch?hello.txt

      執(zhí)行$ ./xpjiang.sh 會(huì)發(fā)現(xiàn),當(dāng)前shell 中echo $Direct 得到的輸出為空并且當(dāng)前shell 中的工作目錄也沒有改變,這就說明腳本不在當(dāng)前shell 中執(zhí)行。如果需要腳本在當(dāng)前shell 中執(zhí)行,則執(zhí)行 $ source xpjiang.sh,可以發(fā)現(xiàn)目錄切換到了mydir 下,同時(shí)echo $Direct 的輸出為/home/xpjiang/mydir。

      循環(huán)控制 

      編寫腳本rename.sh,更改模式為可執(zhí)行:

    1 2 3 4 5 6 cd?$1 echo?I am?in?`pwd`?# `pwd` 會(huì)取出該命令的輸出 for?file?in?`ls` do  ?mv?$file?$file.txt done

      添加到 ~/bin 中,使其成為一個(gè)系統(tǒng)命令。執(zhí)行:

    1 2 3 4 5 $?mkdir?mydir $?cd?mydir;?touch?a b c;?cd?.. $ rename.sh mydir  I am?in?/home/xpjiang/Desktop/mydir $?ls?mydir a.txt b.txt c.txt

      遠(yuǎn)程控制

      SSH 遠(yuǎn)程登錄服務(wù)器的時(shí)候,需要先登錄再執(zhí)行命令,實(shí)際中每次這樣操作很麻煩。可以在本地寫一個(gè)腳本,在服務(wù)器上執(zhí)行腳本中相關(guān)的命令。

      確認(rèn)執(zhí)行

      讓程序在執(zhí)行過程中暫停,報(bào)告一些信息,用戶根據(jù)程序提供的信息判斷是否允許程序繼續(xù)執(zhí)行下面的操作,這就是確認(rèn)執(zhí)行。

    1 2 3 4 5 6 7 8 9 #!/usr/bin/env bash echo?-n?"Do you want to say hello? (y/n): " read?AAA if?[?"${AAA:-y}"?=?"y"?];?then   echo?hello else   echo?Nothing?done, bye. fi

    Reference: MOOC_Liunx Guide for Developments. 


    《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的九十分钟极速入门Linux——Linux Guide for Developments 学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。