linux 命令及shell基礎雜記

2021-08-21 11:34:28 字數 4767 閱讀 8684

1、不管是linux命令列,還是windows的dos,執行乙個命令,就會去path環境變數中找是否有這個變數。

pwd:print working directory

fdisk:檢視系統disk

ctrl+l:清屏

ctrl+u:刪除到行首

ctrl+a:游標到行首

ctrl+e:游標到行位『

ctrl+z

:把命令放到後台執行

ctrl+r

:歷史命令中搜尋

一、搜尋命令

1、locate:搜尋檔名,是在乙個資料庫中搜尋(一天更新一次),updatedb(強制更新)。

2、whereis:搜尋執行命令及其man文件位置。which不能檢視man文件。

3、find:搜尋檔案,功能強大,但也耗費資源。

4、grep:grep [options]  『pattern』 filename,在檔案中搜尋匹配字串。

一般來說:搜尋檔名採用萬用字元,完全匹配。在檔案中搜尋內容,採用正規表示式,搜尋符合條件的字串。

5、man相當於wahtis。ls --help

6、whoami:print effective userid

7、shell,殼,同gui一樣,是使用者與核心互動的入口。

8、遠端登入退出:logout

二、掛載

1、2、mount -a;把/etc/fstab這個檔案中的所有開機自動掛載上。不要把雜七雜八的都寫到這個檔案,如果開機找不到要掛載的裝置(比如說光碟,u盤),那麼就會開不起機了。

6

列:

# ① file system:要掛載的裝置或偽檔案系統:裝置名稱 or label or uuid or 偽檔案系統名稱

1、使用裝置名稱(/dev/sda)來掛載分割槽時是被固定死的,一旦磁碟的插槽順序發生了變化,就會出現名稱不對應的問題。因為這個名稱是會改變的。

2、使用label掛載就不用擔心插槽順序方面的問題。不過要隨時注意你的label name。

3、uuid,每個分割槽被格式化以後都會有乙個uuid作為唯一的標識號。使用uuid掛載的話就不用擔心會發生錯亂的問題了。

② mount point:掛載點(擴充套件為swap):就是你要掛載到哪個目錄下。

③ type:檔案系統型別(auto 尋找預設的),

普通裝置掛載:ext#/xfs 等檔案系統型別

交換分割槽 swap:swap

光碟 iso9660,檔案 cifs

④ options:掛載選項:defaults代表包含了選項rw,suid,dev,exec,auto,nouser,async。有需要的功能可以新增,不能為空,這裡用來填寫設定選項,各個選項用逗號隔開。

⑤ dump:轉儲頻率:備份 0:不做備份 1:每天轉儲 2:每隔一天轉儲

⑥ pass:開機時自檢(非0),自檢次序:(如果開機系統自檢不過,就無法正常開機)

如果這裡填0,則不檢查;掛載點為 / 的(即根分割槽),必須在這裡填寫1,其他的都不能填寫1。如果有分割槽填寫大於1的話,則在檢查完根分割槽後,接著按填寫的數字從小到大依次檢查下去。同數字的同時檢查。比如第一和第二個分割槽填寫2,第三和第四個分割槽填寫3,則系統在檢查完根分割槽後,接著同時檢查第一和第二個分割槽,然後再同時檢查第三和第四個分割槽。

三、shell

命令列直譯器。同時是乙個功能強大的程式語言,即shell指令碼。bash

/etc/shells

shell還可以呼叫子shell,孫shell。

echo :把指定內容輸出到螢幕上。

alias:別名,登出重登陸就失效。要想不失效,需要寫入環境變數配置檔案:~/.bashrc。 檔案中別名直接生效:source ~/.bashrc

linux命令分為兩類,具體為內部命令和外部命令

內部命令:指shell內部整合的命令,此類命令無需人為安裝,開機後自動執行在記憶體中,命令help檢視所有內部命令的詳情,如cd、type、echo、time、true等。

外部命令:指通過外部介質安裝的命令工具包,如通過yum、rpm等方式安裝,具體安裝路徑在

$path

下。注:所有的內部命令在外部命令中都有存在,只是為了提高優先順序而在shell中整合一部分

time is a shell keyword

[root@localhost ~]# type date

date is /bin/date

命令執行順序:

1、alias > shell > hash > path

alias別名命令、內部命令、hash快取命令、外部命令(path查詢順序中(冒號分隔的系統目錄)找到的第乙個)。

四、輸出重定向   

標準輸入:0

標準輸出:1

輸出------------à stdout(螢幕)

輸出重定向-------------------------------à檔案

覆蓋:>

追加:>>

標準錯誤輸出(2)重定向:2>   2>>

正確錯誤都寫入檔案:命令

>>

檔案2>>&1

其等價於

命令&>> 檔案

正確錯誤分開存放:命令

>>

檔案1  2>>檔案2

輸入統計:wc

輸入重定向(幾乎不會用):命令 < 檔名  比如:wc < test.log

命令 << 識別符號

五、管道符

1、多命令順序執行

1.1 順序執行    命令1;命令1

1.2 邏輯與   命令1&&命令2  只有命令1執行正確,命令2才會執行。命令1執行不正確,命令2不會執行。前面的命令執行成功,才會執行後面的命令,前面的命令執行失敗,後面的命令不會執行

1.3 邏輯或  命令1||命令2  命令1執行正確,命令2不會執行。命令1執行不正確,命令2才會執行。當用此連線符連線多個命令時,前面的命令執行成功,則後面的命令不會執行。前面的命令執行失敗,後面的命令才會執行。

2、管道符 |

命令格式:命令a|命令b,即命令1的正確輸出作為命令b的操作物件

六、特殊符號

1、 #符號

# 注釋

行首以 # 開頭(除#!之外)的是注釋。#!是用於指定當前指令碼的直譯器。

2、引號

單引號、雙引號用於使用者把帶有空格的字串賦值給變數。如果沒有單引號或雙引號,shell會把空格後的字串解釋為命令。

str="today is monday"

echo $str

單引號和雙引號的區別:單引號告訴shell忽略所有特殊字元,而雙引號忽略大多數,但不包括$、\、`。

雙引號包圍的內容可以允許變數擴充套件,也允許轉義字元的存在。如果字串內出現雙引號本身,需要轉義,因此不一定雙引號是成對的。

單引號括住的內容,被視為單一字串,引號內的禁止變數擴充套件,所有字元均作為字元本身處理(除單引號本身之外),單引號必須成對出現。

3、斜線 反斜線

3.1.斜線

檔名路徑分隔符。分隔檔名不同的部分(如/home/bozo/projects/makefile)。也可以用來作為除法算術操作符

3.2.反斜線,轉義符號

一種對單字元的引用機制。\x 將會「轉義」字元x。這等價於"x",也等價於'x'。

4、反引號`

command 結構可以將命令的輸出賦值到乙個變數中去。

命令替換。這個引號包圍的為命令,可以執行包圍的命令,並將先執行的結果賦值給變數。如:a=`dirname '/tmp/x.log'` 。後面dirname返回的結果會賦值給a,注意,此處特地使用了反引號和單引號,注意區別。

5、美元符號 $

5.1.變數替換,作為變數的前導符,用作變數替換,即引用乙個變數的內容,比如:echo $path;a=5  $a 也是 5   其和$是等價的

5.2.命令替換 $(命令)  與反應號作用是一樣的,反引號實在是不容易分辨

6、小括號 ()

6.1.命令組

在括號中的命令列表,將會作為乙個子 shell 來執行。在括號中的變數,由於是在子shell中,所以對於指令碼剩下的部分是不可用的。父程序,也就是指令碼本身,將不能夠讀取在子程序中建立的變數,也就是在子shell 中建立的變數。

#!/bin/bash

a=123

( a=321;)

echo "a = $a"    //輸出a=123,說明在子shell內修改了的變數,在父程序呼叫時是不會顯示修改後的

7、大括號

7.1.檔名擴充套件

cp t.  複製 txt 的內容到 back 中

7.2.**塊

**塊,又被稱為內部組,這個結構事實上建立了乙個匿名函式(乙個沒有名字的函式)。然而,與「標準」函式不同的是,在其中宣告的變數,對於指令碼其他部分的**來說還是可見的。

#!/bin/bash

a=123

( a=321; )                 // 小括號裡的相當於區域性變數

echo"a=$a"          //輸出a =123

//大括號裡的相當於全域性變數

echo"a=$a"          //輸出a =321

8、中括號

8.1.條件

測試條件測試表示式放在[ ]中。

#!/bin/bash

a=5if [ $a -gt 10]    //-gt  great than大於  -lt  less than小於

then

echo "a:$a"

else

echo"a>10"

8.2陣列元素

在乙個array結構的上下文中,中括號用來引用陣列中每個元素的編號。

Linux命令筆記 shell基礎及工具

uname a linux tedu 4.4.0 130 generic 156 ubuntu smp thu jun 14 08 53 28 utc 2018 x86 64 x86 64 x86 64 gnu linuxuname s kernel name 核心名稱 linux uname n ...

Linux基礎 shell命令

都知道linux下shell命令很重要,但無奈使慣了windows的使用者接觸命令是在不感冒,不過慢慢來吧,凡事都得有乙個過程。學linux命令最好先了解一下編輯器,因為會涉及到系統檔案的配置編輯,linux用的最多的當屬vi,現在vi的改進版是vim,在最新的linux的版本下vi命令已經是vim...

Linux基礎 shell命令

都知道linux下shell命令很重要,但無奈使慣了windows的使用者接觸命令是在不感冒,不過慢慢來吧,凡事都得有乙個過程。學linux命令最好先了解一下編輯器,因為會涉及到系統檔案的配置編輯,linux用的最多的當屬vi,現在vi的改進版是vim,在最新的linux的版本下vi命令已經是vim...