1. 程式人生 > >每個開發人員都應該知道的11個Linux命令

每個開發人員都應該知道的11個Linux命令

本文主要挑選出讀者有必要首先學習的 11 個 Linux 命令,如果不熟悉的讀者可以在虛擬機器或雲伺服器上實操下,對於開發人員來說,能熟練掌握 Linux 做一些基本的操作是必要的!

事不宜遲,這裡有 11 個 Linux 命令列技巧,可以使你的生活工作更輕鬆。

1. grep

$ grep "some string" file

grep 命令在每個檔案中搜索,它還會尋找由換行符分隔的模式,並且 grep 會列印與模式匹配的每一行。

使用 grep 命令查詢檔案中的所有 React 關鍵字:

該 -i 選項使我們能夠在給定檔案中不區分大小寫地搜尋字串。它匹配 "REACT"、"REact" 和 "react" 之類的詞。

$ grep -i "REact" file

我們可以使用 -c (count)標誌找到與給定字串/模式匹配的行數。

$ grep -c "react" index.js

這是在網上找到的關於 grep 命令有趣且有教育意義的漫畫。

2. ls

$ ls

ls 列出當前活動路徑中的檔案和目錄。如果路徑名是檔案,ls 則根據請求的選項在檔案上顯示資訊。如果路徑名是目錄,則 ls 顯示有關檔案和其中的子目錄的資訊。

使用 ls 命令顯示當前目錄中的所有檔案:

你可能已經注意到檔案顯示為灰色,而資料夾為藍色。這是為了幫助我們區分資料夾和檔案。

3. pwd

$ pwd

打印出當前工作目錄(pwd):

pwd 命令是用於列印當前工作目錄的命令列實用程式。輸出會將當前工作目錄的完整系統路徑列印到標準輸出。預設情況下,pwd 命令會忽略符號連結,儘管可以使用選項顯示當前目錄的完整物理路徑。

4. cat

$ cat somefile.js

該cat命令具有與文字檔案有關的三個相關功能:

  • 顯示它們
  • 合併副本
  • 創造一個新的

cat 的最常見用法是讀取檔案的內容,並且 cat 通常也是最方便讀取檔案的命令。

在以下示例中,使用輸出重定向運算子(由向右指向的尖括號表示)將 cat 的標準輸出重定向到 file2:

$ cat somefile > somefile2

用 cat 建立檔案:

5. echo

$ echo "some text"

Linux 中的命令用於顯示作為引數傳遞的一行文字/字串。這是一個內建命令,主要用於 Shell 指令碼和批處理檔案中,以將狀態文字輸出到螢幕或檔案。

6. touch

$ touch somefile

touch 命令用於建立沒有任何內容的檔案。當用戶在建立檔案時沒有要儲存的資料時,可以使用 touch 命令。

touch 建立新檔案:

我們是如何使用 touch 來建立檔案和 cat 檢視檔案內部的。由於新建立的 index2.js 檔案是空,因此 cat 不返回任何內容。

以下是 cat 和 touch 之間的主要區別:

  • cat:用於建立包含內容的檔案。
  • touch:建立一個沒有任何內容或空檔案的檔案。請記住,使用 touch 命令建立的檔案為空。當用戶在檔案建立時沒有要儲存的資料時,此命令很有用。

7. mkdir

$ mkdir some-directory

如您所料,mkdir 在當前活動路徑中建立一個新的空目錄。使用此命令建立新資料夾,而不是在文字編輯器或 GUI 中四處單擊。

使用 mkdir 建立一個新目錄:

7.1 rm

$ rm someFile

rm 代表 remove,它會執行刪除檔案操作。

使用 rm 命令刪除檔案:

預設情況下,rm 命令不會刪除目錄。你需要傳遞 -rf 標誌以刪除目錄。

$ rm -rf some-directory

使用 rm 命令刪除目錄:

7.2 rmdir

$ rmdir some-directory

rmdir 如果目錄內沒有內容,該命令將刪除目錄。

使用 rmdir 刪除空目錄:

8. tail

$ tail somefile

tail 命令讀取檔案並輸出檔案的最後部分。

輸出最後的 num 行:

tail 在檢視崩潰報告或以前的歷史記錄日誌時,該命令很有用,以下是使用 tail 命令查詢檔案日誌的示例。

[root@wupx ~]# tail -20f /sell/logs/sell.log 
2019-12-09 20:35:40,024 - INFO  #[operation,,,]# [http-nio-8111-exec-2] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:537]: 查詢引數:BaseQueryDTO{startDate=Tue Jan 01 08:00:00 CST 2019, endDate=Mon Dec 09 14:45:31 CST 2019, regionList=[], productCodeList=[apple]}
2019-12-09 20:35:40,024 - INFO  #[sell,,,]# [http-nio-8111-exec-2] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:538]: 查詢介面:/products/projects/engineerType/count/range
2019-12-09 20:35:40,085 - INFO  #[sell,,,]# [http-nio-8111-exec-9] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:483]: 查詢引數:BaseQueryDTO{startDate=Tue Jan 01 08:00:00 CST 2019, endDate=Mon Dec 09 14:45:31 CST 2019, regionList=[], productCodeList=[apple]}
2019-12-09 20:35:40,085 - INFO  #[sell,,,]# [http-nio-8111-exec-9] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:484]: 查詢介面:/products/projects/active/count
2019-12-09 20:35:40,145 - INFO  #[sell,,,]# [http-nio-8111-exec-7] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:483]: 查詢引數:BaseQueryDTO{startDate=Tue Jan 01 08:00:00 CST 2019, endDate=Mon Dec 09 14:45:31 CST 2019, regionList=[], productCodeList=[apple]}
2019-12-09 20:35:40,145 - INFO  #[sell,,,]# [http-nio-8111-exec-7] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:484]: 查詢介面:/products/projects/active/count
2019-12-09 20:35:40,246 - INFO  #[sell,,,]# [http-nio-8111-exec-8] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:483]: 查詢引數:BaseQueryDTO{startDate=Tue Jan 01 08:00:00 CST 2019, endDate=Mon Dec 09 14:45:31 CST 2019, regionList=[], productCodeList=[apple]}
2019-12-09 20:35:40,246 - INFO  #[sell,,,]# [http-nio-8111-exec-8] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:484]: 查詢介面:/products/projects/active/count
2019-12-09 20:35:40,313 - INFO  #[sell,,,]# [http-nio-8111-exec-5] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:483]: 查詢引數:BaseQueryDTO{startDate=Tue Jan 01 08:00:00 CST 2019, endDate=Mon Dec 09 14:45:31 CST 2019, regionList=[], productCodeList=[apple]}
2019-12-09 20:35:40,313 - INFO  #[sell,,,]# [http-nio-8111-exec-5] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:484]: 查詢介面:/products/projects/active/count
2019-12-09 20:35:40,401 - INFO  #[sell,,,]# [http-nio-8111-exec-4] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:306]: 查詢引數:BaseQueryDTO{startDate=Tue Jan 01 08:00:00 CST 2019, endDate=Mon Dec 09 14:45:31 CST 2019, regionList=[], productCodeList=[apple]}
2019-12-09 20:35:40,401 - INFO  #[sell,,,]# [http-nio-8111-exec-4] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:307]: 查詢介面:/products/projects/new/statics
2019-12-09 20:35:40,490 - INFO  #[sell,,,]# [http-nio-8111-exec-1] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:279]: 查詢引數:BaseQueryDTO{startDate=Tue Jan 01 08:00:00 CST 2019, endDate=Mon Dec 09 14:45:31 CST 2019, regionList=[], productCodeList=[apple]}
2019-12-09 20:35:40,490 - INFO  #[sell,,,]# [http-nio-8111-exec-1] c.g.s.c.i.ProjectIndexApi [ProjectIndexApi.java:280]: 查詢介面:/products/projects/liveness/statics

9. wget

$ wget someurl

GNU Wget 是一個免費軟體包,用於使用 HTTP,HTTPS,FTP 和 FTPS(最廣泛使用的Internet協議)檢索檔案。這是一個非互動式命令列工具,因此可以很容易地從指令碼、CRON 作業,不支援 X-Windows 的終端等中呼叫它。

wget 獲取有關網頁的資訊:

GNU Wget 具有許多使檢索大型檔案或映象整個 Web 或 FTP 站點變得容易的功能,包括:

  • 可以使用 REST 和 RANGE 恢復中止的下載
  • 可以使用檔名萬用字元並遞迴映象目錄
  • 基於 NLS 的訊息檔案,適用於多種語言
  • 將下載的文件中的絕對連結轉換為相對連結,以便下載的文件可以在本地彼此連結
  • 在大多數類似 UNIX 的作業系統以及 Microsoft Windows 上執行
  • 支援 HTTP 代理
  • 支援 HTTP cookie
  • 支援持久的 HTTP 連線
  • 無人值守/後臺操作
  • 使用本地檔案時間戳確定映象時是否需要重新下載文件
  • GNU Wget 是根據 GNU 通用公共許可證發行的。

10. find

$ find path -name filename

find 命令使你可以快速查詢檔案或目錄。當你正在處理具有數百個檔案和多個目錄的大型專案時,此功能很有用。

查詢所有名為 index.js 的檔案:

搜尋特定型別的檔案

find 命令還允許您在目錄(及其子目錄)中搜索相同型別的檔案。例如,以下命令將搜尋 .js 當前工作目錄中的所有檔案。

$ find . -name "*.js"

在 components 目錄中查詢所有.js檔案:

11. mv

$ mv somefile /to/some/other/path

mv 命令將檔案或目錄從一個位置移動到另一個位置。mv 命令支援移動單個檔案,多個檔案和目錄。

將 some 目錄從元件移動到 utils 目錄:

總結

這篇文章主要是介紹常用的 11 個 Linux 命令,感謝你的閱讀,希望你能從中學到了一些知識