天天看點

Linux基本指令(中)

寫在前面

今天我們首要的目的就是把我們常用的指令和大家分享完,我們添加一些管道和壓縮的指令,指令這個部分到這裡就基本結束了,當然,這些都是最基本的,後面我們用到其他指令的話,也會和大家解釋的,我們先對Linux上手.

man 指令

man指令首先我們要知道的是它可以查詢指令,也就是說我們如果不知道一個指令作用是什麼的時候,我們可以通過man 指令名來查.這我們需要和大家分享三種用法,大家先記住就可以了.

下載下傳man指令

由于我們用的是雲伺服器,我們可能沒有man指令,這裡我們需要下載下傳一下.我們需要在root使用者下下載下傳.

如何進入root使用者,這裡有兩種方法.
  • 進入XShell,直接用root登入
  • 在普通使用者下執行 su- 指令,回車後輸入root密碼
在root使用者下下載下傳man 執行下面指令
[bit@Qkj 07_03]$ yum install      

查詢指令

下面就是查找的就是ls指令的作用.

[bit@Qkj 07_03]$ man ls
Linux基本指令(中)

man man

既然man可以查詢指令,那麼man可以查詢man指令嗎?man也是一個指令,自然是可以查詢的.

[bit@Qkj 07_03]$ man man
Linux基本指令(中)

查詢标準庫

是的,你沒有看錯,man指令可以查詢标準庫裡面的函數,包括C++/Java等語言,這些語言的庫是我們需要下載下傳的,但是由于Linux是由C語言寫的,是以自帶标準庫,我們可以直接查詢.

[bit@Qkj 07_03]$ man printf
Linux基本指令(中)

你會發現,我們不是要查printf函數嗎,怎麼出來的是指令,是的,在Linux中,printf變成了指令,我們要查函數原型的話需要加上個東西.

[bit@Qkj 07_03]$ man 3 printf
Linux基本指令(中)

查詢系統調用

這裡大家先不用知道,我們先給出用法,在後面的幾篇部落格都會和大家分享的.

[bit@Qkj 07_03]$ man
Linux基本指令(中)

總結

man 指令是我們以後經常用到的指令,主要的作用就是查詢指令的用法.man指令面帶不同的數字,代表不同的用法.
  • man 1 指令名 也就是 man 指令名,我們把1給自動省略了
  • man 3 其他 查詢系統調用,大家先不用知道,記住就可以了.
  • man 3 函數名 查詢标準庫裡面的函數

cp 指令

cp指令是拷貝的指令,它可以拷貝檔案或者是目錄,說是就類似于Windows下面的複制粘貼.

拷貝普通檔案

下面是我們最基本的用法.

[bit@Qkj 07_03]$ cp
Linux基本指令(中)
假設我們把一個檔案裡面的内容拷貝導另一個檔案中,這個檔案裡面的所有内容都會覆寫掉.
Linux基本指令(中)

拷貝目錄

我們需要看看它如何拷貝目錄.

cp 預設是不能拷貝目錄的,要是需要拷貝目錄需要帶上選項.
Linux基本指令(中)

我們需要給他帶上一個-r選項,這裡也是遞歸拷貝的意思.

[bit@Qkj 07_03]$ cp
Linux基本指令(中)

指定路徑拷貝

在Windows中,我們可以先複制一個普通檔案或者目錄,然後再去其他目錄中,這個就是指定的路徑拷貝,在Linux中我們也是可以的.這裡普通檔案和目錄是一樣的,無非就是帶不帶選項的差別.

把源檔案拷貝到到上級目錄,這裡我就相對路徑來示範,絕對的路勁和它一樣.

[bit@Qkj 07_03]$ cp file.txt ../file-bak.txt
Linux基本指令(中)

總結

cp指令也是我經常見到的,一般在我們準備修改某個檔案時,我們防止自己修改錯誤,先備份一個.來總結一下它的具體用法和選項.

  • 我們可以不指定路徑,預設在本目錄下複制粘貼,也可以指定目錄
  • 複制普通檔案時,可以直接cp,但是複制目錄時,需要帶上選項-r
  • 有時由于權限的問題,可能會詢問是不是要複制,我們避免被詢問,可以帶上-f選型,也就是強制複制

mv 指令

mv指令是移動的意思,這裡可以指移動檔案的位置,也可以值修改檔案的名字.這個指令說實話現在還不太重要,但是我們确實需要認識一下.

  • 剪切+發送到 這個類似我們把一個普通檔案或者是目錄剪切掉,後面複制到其他目錄
  • 重命名 如果我們覺得某個檔案的名字實在是太挫,需要修改,這裡可以支援重命名

剪切+發送功能

這個很簡單,就是我們把檔案複制好,把檔案發到我們想要的目錄中,并把源目錄的檔案給删除.這裡普通檔案和目錄的做法是一樣的.

Linux基本指令(中)

重命名

這個更好了解了,我們如果不喜歡某個檔案的額名字就可以把他給重新命名,适合普通檔案和目錄.

[bit@Qkj 07_03]$ mv
Linux基本指令(中)

名字相同

如果我們想要名字當地目錄已經存在了會怎麼樣,我們先來看看.這裡用目錄在舉例子.

可以很輕易的看出,我們重命名的檔案會直接把原來的檔案給覆寫掉.

Linux基本指令(中)

總結

我們把mv指令給總結一下,包括一些選項.

下面的是關于重命名的
  • mv 檔案名1 檔案名2 無論檔案2是不是存在,都會把檔案1變為檔案2
  • mv -i 檔案名1 檔案名2 如果檔案2存在,他會詢問要不要覆寫
  • mv -f 檔案名1 檔案名2 無論檔案2是不是存在,都會強制把檔案1變為檔案2

文本查找指令

我們先看看再不打開編輯器的情況下打開文本文本檔案,檢視裡面的内容,這些都是很簡單的,最起碼我們現在用的很簡單.

cat 指令

cat指令最适合我們現在的處境了,我們現在在Linux中很少寫大量代碼,最多就是一些helloword之類的,我們打開一個很少代碼的的檔案有點麻煩,cat指令可以幫助我們.

[bit@Qkj 07_03]$ cat
Linux基本指令(中)

-n選項

要是我們想要給自己的檔案帶一個行号列印出來,這裡也可以做到

[bit@Qkj 07_03]$ cat
Linux基本指令(中)

tac 指令

這個指令的作用和cat指令的作用是一樣的,不過它是從最後一行開始列印的,而且不支援行号這個選項.

Linux基本指令(中)

more 指令

現在我想問,如果我們的文本很大,請問如果我們的文本很長,請問你使用cat和tac指令嗎?必定不會啊,我們電腦的螢幕就那麼大,一旦檔案很大,肯定會發生刷屏現象,我們這裡有提供了幾個指令.

我們先來一個準備工作,先建立一個1w行的文本檔案,你把下面的指令跑一下就可以了,我們這裡先用着,過幾個部落格再說原理.

[bit@Qkj 07_03]$ cnt=1; while [ $cnt -le 10000 ];do echo "hello bit $cnt"; let cnt++;done >      

這樣我們就可以得到一個含有1w行的文本檔案,我們使用cat指令試試,你會發現它會刷屏.

Linux基本指令(中)

這裡就需要我們這個指令了,我們先來看看看用法,再說它的作用.

[bit@Qkj 07_03]$ more
Linux基本指令(中)

這樣的話,你就可以得到前10行代碼,想看後面的就用鍵盤上的方向鍵就可以了,注意這個第一次出現多少行是你自己的确定的,而且我們如果不想看了,可以使用字母q退出.

less 指令

我們前面談了more指令,但是這個指令有一個缺陷,他隻能往下調,不可以往上剛,也就是我們必須按照代碼的順序來看,這個很不友好,是以我們出現了less指令,這個可以很好的幫助我們解決相應的問題.

  • less 工具也是對檔案或其它輸出進行分頁顯示的工具,應該說是linux正統檢視檔案内容的工具,功能極其強大。
  • less 的用法比起 more 更加的有彈性。在 more 的時候,我們并沒有辦法向前面翻, 隻能往後面看
  • 但若使用了 less 時,就可以使用 [pageup][pagedown] 等按鍵的功能來往前往後翻看檔案,更容易用來檢視一個檔案的内容!
  • 除此之外,在 less 裡頭可以擁有更多的搜尋功能,不止可以向下搜,也可以向上搜

我們和之前一樣,還是先來卡看現象,這裡我想給大家看看最基本的示範,關于它的其他用法.

我們可以發現,如果我們使用下面的指令,可以得到一螢幕的代碼,我們可以使用上下鍵來進行上下翻,按q鍵退出.

我們這裡就示範最基本的用法.

[bit@Qkj 07_03]$ less

Linux基本指令(中)

重定向

這裡我們來見識兩個符号,前面我們已經見過了,我們來看看吧,這裡我們隻講用法.

  • 輸出重定向>
  • 追加重定向 >>
  • 輸入重定向 <

輸出重定向

我們還是先來看看用法.

從這裡我們可以看出,所謂的輸出重定向就是把原本該輸出到顯示器中的内容儲存到一個檔案中

這裡我們們還要認清一個事實,它會把原來檔案的裡面的内容都給删除掉,隻儲存自己的,很是霸道.

Linux基本指令(中)

追加重定向

既然>有缺陷,那麼這裡有一個解決方法,又出現了一個追加重定向,我們可以在文本後面來寫入一些内容.

再析 cat

我們這裡再來認識一下cat的用法,如果我們直接打入一個cat指令,你會發現,你輸入什麼,在螢幕上就會得到什麼,也就是說,cat輸入後,預設打開了一個stdin流和stdout流,分别是鍵盤和顯示器,這裡我們也可以使用重定向.
Linux基本指令(中)

輸入重定向

那麼我們就可以見識另外一個重定向了,我們使用cat輸入重定向來打開一個輸入流,這裡我們來看看現象.

[bit@Qkj 07_03]$ cat <
Linux基本指令(中)

ctrl c

如果我們發現,自己想要退出一個程式,但是不知道該如何做,記住我們可以無腦ctrl c,一定不要ctrl z,我們來看看.

Linux基本指令(中)

ctrl z

記住,我們千萬不要使用ctrl z來退出,他隻是暫定,但是任務還是存在的,我們看看.

Linux基本指令(中)

那麼如果我們不小心按到了ctrl z,該怎麼辦?不要擔心,我麼可以使用下面的方法.

fg 指令

我們發現,在任務前面存在一個數字,這是任務編号,我們可以這樣做,這樣又可以重新打開這任務了,我們就可以ctrl c了.

[bit@Qkj 07_03]$ fg 1
Linux基本指令(中)

jobs 指令

這裡個大家附加一個指令,我們可以通過它來看看我們有幾個任務.

Linux基本指令(中)

一切皆檔案

我們現在要分享一個很重要的觀點,這是我們學習Linux的基礎,可以說是重中之重.再幾年前前網上有這麼一個梗,“神馬都是浮雲”,可以這麼說,隻要我擺爛了,困難就追不上我,再Linux中也是如此,或許Linux中存在很多東西,但是Linux把他們都看作是檔案,我按照用規定的模式去處理就可以了,這樣看待事情就簡單多了.今天的這個就是一個開頭,做一個感性的了解.

Linux基本指令(中)

head 指令 & tail 指令

我們再來看看這兩個指令,作用我列出來

  • head -n 檔案 檢視前n行 不寫預設10行
  • tail -n 檔案 檢視後n行 不寫預設10行
[bit@Qkj 07_03]$ head
Linux基本指令(中)
tail
Linux基本指令(中)

管道

這裡有一個問題,我們如何檢視第300行到350行的代碼?

  • 輔助檔案
  • 使用管道

輔助檔案

這裡我提供兩種解法.

第一種解法就是我們把前350行儲存到一個檔案中,然後在使用tail來檢視.
Linux基本指令(中)

管道

上面的方法有一點問題,我們不能每次檢視檔案都創造一個檔案吧,這是很不友好的,這裡還有第二個方法,使用管道.先看現象.

[bit@Qkj 07_03]$ head -350 myfile.txt | tail      
Linux基本指令(中)
這個’|'就叫做管道,那麼什麼是管道檔案,在現實生活中我們也存在管道,比如天然氣管道,我們通過管道運輸資源,在計算機中,我們也是通過管道來運輸資源,在一家計算機公司中,最寶貴的資源就是資料,這便是計算機世界的石油.管道就是傳輸資料資源,管道重要的應用之一就是實作級聯多個指令

我們現在隻知道怎麼用就可以了,之後會用代碼來實作的.

Linux基本指令(中)

date 指令

我們可以通過date指令來檢視目前的時間,這裡還提供年月日時分秒的的查找.

我們先來看最基本的,剩下的截了一張圖,大家看看用法就明白了.

[bit@Qkj 07_03]$ date
Linux基本指令(中)

至于其他的用法,大家一看就可了解了.

Linux基本指令(中)

時間戳

時間戳是指格林威治時間1970年01月01日00時00分00秒(中原標準時間1970年01月01日08時00分00秒)起至現在的總秒數。通俗的講, 時間戳是一份能夠表示一份資料在一個特定時間點已經存在的完整的可驗證的資料。

上面的的時間指令不重要,時間戳才是重要的,對于一個大型程式,寫一個日志是非常重要的,如果你的項目上線了,突然你發現自己的程式挂了,但是你不知道什麼時候挂的,但是你絲毫不慌,因為你寫了日志,你的程式執行的重要代碼和時間都被儲存了下來,是以這就是日志的重要性.

Linux基本指令(中)

時間戳轉化器

我們如何把時間戳戳轉化成格式的時間,也就是人可以識别的時間格式,第一種方法就是網上搜尋時間戳轉化器,那麼在Linux中可以執行下面的指令.

[bit@Qkj 07_03]$ date      
Linux基本指令(中)

cal 指令

這個就是一個附帶品,就是查找每年月曆,預設是目前月月曆.

[bit@Qkj 07_03]$ cal      
Linux基本指令(中)
查找上個月和下個月的月曆
Linux基本指令(中)
查找1900年的月曆
Linux基本指令(中)

find 指令

是一個查找檔案的指令,它的功能類似Windows環境下的一款軟體,叫做everything,但是這個指令需要知道我們檔案所在的目錄位址,很強大,選項也很多,但是今天隻學最基本的.

[bit@Qkj ~]$ find      
Linux基本指令(中)

grep 指令

grep 指令在檔案中搜尋字元串,将找到的行列印出來 ,它是一個行文本查找工具.

我們先來看卡場景吧.

Linux基本指令(中)

下面我來見識一下grep 指令的作用,這裡要有三個方面需要談.

  • 預設的話,是區分大小寫的
  • -i 不區分大小寫
  • -v 可以了解反向查找
[bit@Qkj ~]$ grep 'C++'
Linux基本指令(中)
[bit@Qkj ~]$ grep -i 'C++'
Linux基本指令(中)