Linux-看完這篇Linux基本的操做就會了(轉)

前言

只有光頭才能變強node

這個學期開了Linux的課程了,授課的老師也是比較負責任的一位。總的來講也算是比較系統地學習了一下Linux了~~~linux

本文章主要是總結Linux的基礎操做以及一些簡單的概念~若是不熟悉的同窗可下個Linux來玩玩(或者去買一個服務器玩玩【學生版的不是很貴】),對於開發者來講,能使用Linux作一些基本的操做是必要的!web

那麼接下來就開始吧,固然了個人Linux僅僅是入門水平,若是有錯的地方還需請你們多多包涵,並不吝在評論區指出錯誤~正則表達式

1、爲何咱們要學習Linux

相信大部分人的PC端都是用Windows系統的,那咱們爲何要學習Linux這個操做系統呢???Windows圖形化界面作得這麼好,平常基本使用的話,學習成本幾乎爲零。shell

而Linux不同,可能剛接觸Linux的人會認爲:Linux好麻煩哦,很差玩,都是字符界面。不直觀、這個破系統是用來幹嗎的~~express

平常用的話Windows是比較順手的,可是咱們要知道的是:咱們開發出來的程序通常都是放在Linux下運行的。編程

那可能就會有人提出疑問了:Windows一樣是操做系統,爲啥要放在Linux下,而不放在Windows下呢??相信Windows也是能夠運行咱們寫出來的程序的。vim

我總結了Linux的幾個優勢windows

  1. 免費
  2. 不少軟件原生是在Linux下運行的,龐大的社區支持,生態環境好
  3. 開源,可被定製,開放,多用戶的網絡操做系統
  4. 相對安全穩定

參考資料:安全

因此開發者選擇了Linux來跑咱們本身寫出來的程序。

2、Linux的基礎知識

Linux系統的組成

  1. linux內核(linus 團隊管理)
  2. shell:用戶與內核交互的接口
  3. 文件系統:ext三、ext4等。windows 有 fat32 、ntfs
  4. 第三方應用軟件

2.1Shell的基本知識

除了Shell、其餘的都應該挺好懂的,那麼Shell是什麼東西呢???

Shell是系統的用戶界面,提供了用戶與內核進行交互操做的一種接口(命令解釋器)

Shell能夠執行:

  • 內部命令
  • 應用程序
  • shell腳本

 

 

使用type命令能夠區分內部命令和外部命令

因而乎,咱們利用Shell就能夠幹下面這些事了:

  • 命令行解釋(這是用得最多的!)
  • 命令的多種執行順序
  • 通配符( wild-card characters )
  • 命令補全、別名機制、命令歷史
  • I/O重定向( Input/output redirection )
  • 管道( pipes )
  • 命令替換( 或$( ) )
  • Shell編程語言( Shell Script )

Shell的主要版本有如下這麼多:

  • 咱們經常使用(默認)的就是bash(bourne again shell)

 

 

使用ps命令觀察正在執行的shell

 

 

2.2Linux基本目錄結構

在Windows下,會有基本的目錄結構的:

 

 

 

 

Linux下也不例外了,也是有基本的目錄結構的:

 

這裏寫圖片描述

 

Linux 文件系統是一個目錄樹的結構,文件系統結構從一個根目錄開始,根目錄下能夠有任意多個文件和子目錄,子目錄中又能夠有任意多個文件和子目錄

  • bin 存放二進制可執行文件(ls,cat,mkdir等)
  • boot 存放用於系統引導時使用的各類文件
  • dev 用於存放設備文件
  • etc 存放系統配置文件
  • home 存放全部用戶文件的根目錄
  • lib 存放跟文件系統中的程序運行所須要的共享庫及內核模塊
  • mnt 系統管理員安裝臨時文件系統的安裝點
  • opt 額外安裝的可選應用程序包所放置的位置
  • proc 虛擬文件系統,存放當前內存的映射
  • root 超級用戶目錄
  • sbin 存放二進制可執行文件,只有root才能訪問
  • tmp 用於存放各類臨時文件
  • usr 用於存放系統應用程序,比較重要的目錄/usr/local 本地管理員軟件安裝目錄
  • var 用於存放運行時須要改變數據的文件

2.3命令基本格式

cmd [options] [arguments],options稱爲選項,arguments稱爲參數

選項和參數都做爲Shell命令執行時的輸入,它們之間用空格分隔開

  • Linux是區分大小寫的

通常來講,後面跟的選項若是單字符選項前使用一個減號-單詞選項前使用兩個減號--

  • 這是通常的狀況,有些命令仍是不歸屬這種規律的(相對較少)~~~
  • 例子:ls -als -alla 單個字符使用一個-,一個單詞all 使用兩個--

在Linux中,可執行的文件也進行了分類:

  • 內置命令:出於效率的考慮,將一些經常使用命令的解釋程序構造在Shell內部
  • 外置命令:存放在/bin、/sbin目錄下的命令
  • 實用程序:存放在/usr/bin、/usr/sbin、/usr/share、/usr/local/bin等目錄下的實用程序
  • 用戶程序:用戶程序通過編譯生成可執行文件後,可做爲Shell命令運行
  • Shell腳本:由Shell語言編寫的批處理文件,可做爲Shell命令運行

2.4通配符

學過一些正則表達式的或者有點基礎的同窗對通配符應該就不陌生的了,在Linux也有通配符(在搜索的時候挺有用的)

  • *:匹配任何字符和任何數目的字符
  • ?:匹配單一數目的任何字符
  • [ ]:匹配[ ]以內的任意一個字符
  • [! ]:匹配除了[! ]以外的任意一個字符,!表示非的意思

2.5文件的類型

在Linux下文件的類型有這麼多:

  • 普通文件-
  • 目錄d
  • 符號連接 l
    • 硬連接: 與普通文件沒什麼不一樣,inode 都指向同一個文件在硬盤中的區塊
    • 軟連接: 保存了其表明的文件的絕對路徑,是另一種文件,在硬盤上有獨立的區塊,訪問時替換自身路徑(簡單地理解爲 Windows 中常見的快捷方式)。
  • 字符設備文件 c
  • 塊設備文件b
  • 套接字s
  • 命名管道p

咱們常見的就是普通文件,目錄和符號連接。其餘的瞭解一下便可~

符號連接參考資料:

2.5.1用戶主目錄

可能在網上查閱資料的時候會出現用戶主目錄這麼一個名詞,那他是什麼呢???

前面已經說了,咱們的Linux是多用戶的網絡系統!因此,咱們能夠在Linux下建立多個用戶,每一個用戶都會有本身專屬的空間

  • 因此,在建立用戶時,系統管理員會給每一個用戶創建一個主目錄,一般在/home/目錄下
  • 好比:用戶osmond的主目錄爲:/home/osmond

用戶對本身主目錄的文件擁有全部權,能夠在本身的主目錄下進行相關操做。

3、經常使用的命令

上面說了一堆的基礎概念,這是給咱們敲命令以前打了一點基礎,在敲命令的同時也會遇到一些比較重要的知識點的。那就到時候再說說了~~~

3.1經常使用的文件、目錄操做命令

這是咱們使用得最多的命令了,Linux最基礎的命令

  • 可用 pwd命令查看用戶的當前目錄
  • 可用 cd 命令來切換目錄
  • .表示當前目錄
  • .. 表示當前目錄的上一級目錄(父目錄)
  • -表示用 cd 命令切換目錄所在的目錄
  • ~ 表示用戶主目錄的絕對路徑名

絕對路徑:

  • 以斜線(/)開頭 ,描述到文件位置的完整說明 ,任什麼時候候你想指定文件名的時候均可以使用

相對路徑 :

  • 不以斜線(/)開頭 ,指定相對於你的當前工做目錄而言的位置 ,能夠被用做指定文件名的簡捷方式

tips:輸入命令的時候要經常使用tab鍵來補全

  • ls:顯示文件或目錄信息
  • mkdir:當前目錄下建立一個空目錄
  • rmdir:要求目錄爲空
  • touch:生成一個空文件或更改文件的時間
  • cp:複製文件或目錄
  • mv:移動文件或目錄、文件或目錄更名
  • rm:刪除文件或目錄
  • ln:創建連接文件
  • find:查找文件
  • file/stat:查看文件類型或文件屬性信息
  • cat:查看文本文件內容
  • more:能夠分頁看
  • less:不只能夠分頁,還能夠方便地搜索,回翻等操做
  • tail -10: 查看文件的尾部的10行
  • head -20:查看文件的頭部20行
  • echo:把內容重定向到指定的文件中 ,有則打開,無則建立
  • 管道命令 | :將前面的結果給後面的命令,例如:ls -la | wc,將ls的結果加油wc命令來統計字數
  • 重定向 > 是覆蓋模式,>> 是追加模式,例如:echo "Java3y,zhen de hen xihuan ni" > qingshu.txt把左邊的輸出放到右邊的文件裏去

學了這些命令咱們能幹嗎?其實就是在Windows下複製文件、粘貼文件、建立文件、查看文件這幾種~~~

3.1.1經常使用的文件、目錄操做練習題

鞏固一下基礎,來作作題目:

  • (1)Linux的shell程序默認是bash 程序
  • (2)Linux命令格式包含三個部分,分別是: 命令選項參數
  • (3)Linux命令選項前爲單個減號(-),後面通常爲 單字符 ,選項前爲雙減號(--),後面通常爲 單詞
  • (4)Linux命令中使用的通配符有 ? * []
  • (5)命令 ls /usr/bin/w* 的效果是 列出指定目錄下的全部以w開頭的文件或目錄
  • (6)命令 ls /usr/bin/w?? 的效果是 列出指定目錄下的以w開頭名稱長度爲3的全部文件或目錄
  • (7)命令 ls /usr/bin/[xyz]* 的效果是 列出指定目錄下的文件名以x或y或z開頭的全部文件或目錄
  • (8)命令 ls /usr/bin/[!a-h]* 的效果是 列出指定目錄下的文件名不以a到h區間字母開頭的全部文件或目錄
  • (9)目錄操做時,「.」 表示 當前目錄
  • (10)目錄操做時,「..」 表示 上一級目錄
  • (11)目錄操做時,「-」 表示 上一次工做目錄
  • (12)目錄操做時,「~」 表示 用戶主目錄
  • (13)命令ln能夠創建文件連接,這種連接分爲: 硬連接軟連接
  • (14)命令touch能夠改變文件的三種時間,分別是: access timemodify timechange time

進入/tmp目錄,創建一個文件,goldXX(XX爲學號的末兩位),查看文件的時間

 

 

在帳戶的主目錄中,創建一個dog目錄,進入dog目錄後,創建一個catXX(XX爲學號的末兩位)目錄,進入catXX目錄,顯示當前目錄;而後返回上一級目錄,刪除catXX目錄;

 

 

複製/etc/passwd文件到帳戶主目錄,修改帳戶主目錄下passwd爲passwdXX(XX爲學號的末兩位)

 

 

查找文件名叫作zcat的文件;複製該文件到/tmp目錄;用長格式列出該文件;而後刪除/tmp目錄下的全部文件,並檢查文件是否已被刪除

 

 

複製/etc/hosts文件到帳戶主目錄下;在帳戶主目錄中創建一個硬連接文件(文件名爲hostsYYY(YYY爲學生姓名拼音縮寫)),連接到主目錄下的hosts文件;分別查看hosts和hostsYYY的文件的inode信息

 

 

複製/usr/bin/vdir文件到帳戶主目錄下;在帳戶主目錄中創建一個軟連接文件(文件名爲newdir),連接到主目錄下的vdir文件;分別查看vdir和newdir的文件的inode信息

 

 

用長格式列出目錄/usr/bin目錄下的全部文件,輸出從新定向到文件outXX(XX爲學生學號末兩位),檢查結果;用長格式列出目錄/etc目錄下的全部文件,輸出結果補充到文件outXX末尾

 

 

用長格式列出/usr/bin目錄下的全部文件,經過管道與more命令鏈接,實現對文件列表的瀏覽

 

 

>和>>有何區別?

答:>覆蓋方式重定向到新的文件;>>是以補充方式,添加到原文件的末尾。

經過管道和more命令,瀏覽文件列表方便在哪裏?

答:對於文件列表超出一個屏幕顯示的狀況,這種方式能夠分屏瀏覽,比較方便

3.2文件打包和壓縮命令

在Windows操做系統下,咱們會使用WinRAR或者快壓等等的壓縮軟件來進行壓縮或者解壓。

在Linux下固然也存在壓縮或解壓的操做咯,下面咱們就來學習一下在Linux下是怎麼壓縮和解壓的!

 

 

 

 

壓縮的方式也是有好幾種,咱們經常使用的有下面這三種:

  • gzip
  • bzip2
  • tar

經常使用的壓縮的命令就有:

  • gzip filename
  • bzip2 filename
  • tar -czvf filename

經常使用的解壓命令有:

  • gzip -d filename.gz
  • bzip2 -d filename.bz2
  • tar -xzvf filename.tar.gz

3.3正則表達式+grep

上面咱們已經學過了cat、more、less、tail這些查看文本文件的命令了,可是我想快速查看這個文本文件下的某些關鍵字是否存在,那怎麼辦???

在Windows下就比較簡單的,幾乎全部的文本編輯器(記事本)都支持CTRL+F,往裏面輸入關鍵字就可查找出來:

 

 

那在Linux下,沒有圖形界面,沒有CTRL+F的狀況下,若是不懂一些命令的話,那還真是難找對應的字符出來。下面我就來講說如何快速查找一個文本文件下的某些字符

3.3.1正則表達式

首先咱們就來講說正則表達式,若是接觸過的同窗就知道:這玩意並很差記。一旦不用就很容易就忘記了,因此只能在用的時候查查了~~~因此下面我就直接給出一些規則了,很少說啦。

 

 

 

 

3.3.2grep命令

grep(global search regular expression)是一個強大的文本搜索工具。grep 使用正則表達式搜索文本,並把匹配的行打印出來。

格式:grep [options] PATTERN [FILE...]

  • PATTERN 是查找條件:能夠是普通字符串、能夠是正則表達式,一般用單引號將RE括起來。
  • FILE 是要查找的文件,能夠是用空格間隔的多個文件,也但是使用Shell的通配符在多個文件中查找PATTERN,省略時表示在標準輸入中查找。
  • grep命令不會對輸入文件進行任何修改或影響,可使用輸出重定向將結果存爲文件

例子:

  • 在文件 myfile 中查找包含字符串 mystr的行
    • grep -n mystr myfile
  • 顯示 myfile 中第一個字符爲字母的全部行
    • grep '^[a-zA-Z]' myfile
  • 在文件 myfile 中查找首字符不是 # 的行(即過濾掉註釋行
    • grep -v '^#' myfile
  • 列出/etc目錄(包括子目錄)下全部文件內容中包含字符串「root」的文件名
    • grep -lr root /etc/*

用grep查找/etc/passwd文件中以a開頭的行,要求顯示行號;查找/etc/passwd文件中以login結束的行;

 

 

3.4幾種提升工做效率的方法

  • 自動補全命令
    • TAB鍵
  • 歷史命令
    • 上下箭頭鍵
  • 別名alias

這裏感受要說說的就只有別名alias了,咱們下面看看例子就懂了!

顯示shell當前已經定義的別名;執行其中的兩個定義別名的命令;定義一個別名grep,要求其採用彩色方式顯示結果

 

 

 

 

3.5Shell變量 和 Shell環境

在Windows下有用戶的環境變量,系統的環境變量。在Linux同樣也是有的。

 

 

Shell 變量大體能夠分爲三類

  • 內部變量:由系統提供,用戶只能使用不能修改。
    • ?
    • GROUPS
  • 環境變量:這些變量決定了用戶工做的環境,它們不須要用戶去定義,能夠直接在 shell 中使用,其中某些變量用戶能夠修改。
  • 用戶變量:由用戶創建和修改,在 shell 腳本編寫中會常常用到。
    • 變量賦值(定義變量)
      • varName=Value
      • export varName=Value
    • 引用變量$varName

Shell變量的做用域

  • 局部變量的做用範圍僅僅限制在其命令行所在的Shell或Shell腳本文件中
  • 全局變量的做用範圍則包括本Shell進程及其全部子進程
  • 局部變量與全局變量互換:可使用 export 內置命令將局部變量設置爲全局變量。 可使用 export 內置命令將全局變量設置爲局部變量。

export命令

  • 顯示當前Shell可見的全局變量
    • export [-p]
  • 定義變量值的同時聲明爲全局變量
    • export <變量名1=值1> [<變量名2=值2> ...]
  • 聲明已經賦值的某個(些)局部變量爲全局變量
    • export <變量名1> [<變量名2> ...]
  • 聲明已經賦值的某個(些)全局變量爲局部變量
    • export -n <變量名1> [<變量名2> ...]

Shell環境變量:

  • 環境變量定義 Shell 的運行環境,保證 Shell 命令的正確執行。
  • Shell用環境變量來肯定查找路徑、註冊目錄、終端類型、終端名稱、用戶名等。
  • 全部環境變量都是全局變量(便可以傳遞給 Shell 的子進程),並能夠由用戶從新設置。

 

 

Shell變量:查詢、顯示和取消

  • 顯示當前已經定義的全部變量
    • 全部環境變量env
    • 全部變量和函數(包括環境變量) :set
  • 顯示某(些)個變量的值
    • echo $NAME1 [$NAME2 ……]
  • 取消變量的聲明或賦值
    • unset <NAME>

3.5.1Shell變量 和 Shell環境練習題

定義Shell變量stuXX(XX爲學生學號末兩位),初值爲學生姓名全拼,用echo命令顯示stuXX變量的值;用unset命令取消stuXX變量,檢查結果;用env命令觀察當前有哪些已經定義好的shell環境變量

 

 

 

 

Shell環境變量的值是否能夠修改?爲何?

答:環境變量的值通常狀況下,能夠修改。但必定要慎重修改,由於一旦修改錯誤,對shell正常運行形成嚴重影響,甚至致使shell沒法運行。

4、VI編輯器

相信沒有用過Linux的同窗在看一些段子的時候都會看到過兩個編輯器:

  • vim
  • emacs

下面咱們學習如何簡單使用vi。vi 是 「Visual interface」 的簡稱,它能夠執行輸出、刪除、查找、替換、塊操做等衆多文本操做,並且用戶能夠根據本身的須要對其進行定製,這是其餘編輯程序所沒有的

  • vi能夠看作成咱們Windows下的記事本
  • vim 即 Vi IMproved,vi 克隆版本之一

使用Vi來編輯文件:

 

 

Vi有三種模式:

 

 

4.1普通模式

  • G用於直接跳轉到文件尾
  • ZZ用於存盤退出Vi
  • ZQ用於不存盤退出Vi
  • /和?用於查找字符串
  • n繼續查找下一個
  • yy複製一行
  • p粘帖在下一行,P粘貼在前一行
  • dd刪除一行文本
  • x刪除光標所在的字符
  • u取消上一次編輯操做(undo)

4.2插入模式

在 Normal 模式下輸入插入命令 i、 a 、 o進入insert模式。用戶輸入的任何字符都被vim當作文件內容保存起來,並將其顯示在屏幕上。

  • 在文本輸入過程當中,若想回到Normal模式下,按 Esc 鍵便可。

4.3命令行模式

Normal 模式下,用戶按冒號 :便可進入 Command 模式,此時 vim 會在顯示窗口的最後一行 (屏幕的最後一行) 顯示一個 「:」 做爲 Command 模式的提示符,等待輸入命令。

  • :w 保存當前編輯文件,但並不退出
  • :w newfile 存爲另一個名爲 「newfile」 的文件
  • :wq 用於存盤退出Vi
  • :q! 用於不存盤退出Vi
  • :q用於直接退出Vi (未作修改)

設置Vi環境:

  • :set autoindent 縮進,經常使用於程序的編寫
  • :set noautoindent 取消縮進
  • :set number 在編輯文件時顯示行號
  • :set nonumber 不顯示行號
  • :set tabstop=value 設置顯示製表符的空格字符個數
  • :set 顯示設置的全部選項
  • :set all 顯示全部能夠設置的選項

4.4Vi練習題

在用戶主目錄下,執行vi程序,編輯文件install.log;移動光標到第10行,第五個字符;按大寫字母G,達到文件末尾;不存盤退出;

 

 

 

 

在用戶主目錄下,執行vi程序,編輯文件install.log;用/命令查找字符串sudo,複製包含字符串sudo的行

 

 

在用戶主目錄下,執行vi程序,編輯文件install.log;進入命令模式,設置顯示行號;用?命令查找字符串openssh,用命令n查找下一個

 

 

 

 

4、總結

本文主要講解了Linux的最基礎的知識,能夠簡單地操做Linux了。命令能夠說是學不完的,只能是記住Linux是有這個功能,到時候去網上查查也很方便。

主要是多練、多玩就能夠記住一些經常使用的Linux命令了~~~~

下面我就花點時間畫個Linux命令的腦圖(固然了,命令僅限因而本文章的知識點,等寫到用戶、網絡等知識點的時候再繼續補充上去!)

 

 

做者:Java3y連接:https://juejin.im/post/5af8329d518825426d2d3887來源:掘金著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

相關文章
相關標籤/搜索