學習linux命令,看這篇2w多字的linux命令詳解

来源:https://www.cnblogs.com/zhonglongbo/archive/2019/12/29/12115548.html
-Advertisement-
Play Games

用心分享,共同成長 沒有什麼比每天進步一點點更重要了 本文已收錄到我的github:https://github.com/midou tech/articles/tree/master/docs/linux ,歡迎star和issues。 序言 本篇文章主要講解了一些linux常用命令,主要講解模式 ...


用心分享,共同成長

沒有什麼比每天進步一點點更重要了

本文已收錄到我的github:https://github.com/midou-tech/articles/tree/master/docs/linux ,歡迎star和issues。

序言

 本篇文章主要講解了一些linux常用命令,主要講解模式是,命令介紹、命令參數格式、命令參數、命令常用參數示例。由於linux命令較多,我還特意選了一些日常使用較為頻繁的命令進行講解,但還是免不了文章很長,建議大家收藏起來,用到的時候不會了再來閱讀。當然學習linux命令最好的方法是學會使用linux自帶的man手冊,所有linux命令規範和使用細則都會在該手冊中講解的很清楚,我在書寫的過程中也是參考該手冊和日常使用情況。

如果還有哪些是大家希望再補充的命令,可以留言給我,我會持續更新該文章,同時也作為我學習和工作的手冊。

Linux初級指令

ls ——List

ls 介紹

 這是我學Linux的第一個命令,相信也是很多人學習Linux的第一個命令。ls全稱list.

List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

列出有關文件的信息(預設為當前目錄)。如果沒有指定-cftuvSUX或——Sort,則按字母順序排序。

 官方的說的很清楚,預設列出當前目錄,所以可以列出其他目錄或者路徑下的文件信息或者目錄信息。

eg:

$ls /etc/hosts
/etc/hosts

 ls還可以列出指定目錄下的文件列表。

image-20191221161638964
image-20191221161638964

ls 參數格式

ls [OPTION]... [FILE]...

ls命令參數

-a 列出指定目錄下的所有文件,包括隱藏文件

-c 使用最後一次更改文件狀態以進行排序(-t)或長時間列印(-l)的時間

-h 與-l選項一起使用時,請使用單位尾碼:Byte、Kilobyte、mete、gb、tb和Petabyte,以便使用以2為基數的大小將數字減少到3或更少

-l 長格式列表。(見下文)。如果輸出到終端,則所有文件大小的總和將輸出到長清單前面的一行中

-n 以數字形式顯示用戶和組id,而不是在長(-l)輸出中轉換為用戶或組名。這個選項預設打開-l選項

-o 以長格式列出,但省略組id

-s 顯示每個文件實際使用的文件系統塊的數量,以512位元組為單位,其中部分單元四捨五入為下一個整數值

-t 在按照字典順序對操作數排序之前,先按修改的時間排序(最近修改的是first)

-u 使用最後一次訪問的時間,而不是最後一次修改文件進行排序

ls 用法示例:

$ ls
test  tmp
$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  test  tmp
#可以看到通過ls -a 可以查看當前目錄影藏的文件,Linux下(.)開頭的文件是隱藏文件。
$ ls -l
total 4
-rw-r--r-- 1 test hero    0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4096 Dec 21 19:54 tmp
$ ls -lh
total 4.0K
-rw-r--r-- 1 test hero    0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4.0K Dec 21 19:54 tmp
$ ls -ll
total 4
-rw-r--r-- 1 test hero    0 Dec 21 19:54 test
drwxr-xr-x 2 test hero 4096 Dec 21 19:54 tmp
$ ls -alh
total 28K
drwx------   3 test hero 4.0K Dec 21 19:54 .
drwxr-xr-x. 19 root  root 4.0K Aug  1 10:41 ..
-rw-------   1 test hero  226 Dec 21 19:54 .bash_history
-rw-r--r--   1 test hero   18 Aug  3  2016 .bash_logout
-rw-r--r--   1 test hero  193 Aug  3  2016 .bash_profile
-rw-r--r--   1 test hero  231 Aug  3  2016 .bashrc
-rw-r--r--   1 test hero    0 Dec 21 19:54 test
drwxr-xr-x   2 test hero 4.0K Dec 21 19:54 tmp
$ ls -o
total 4
-rw-r--r-- 1 test    0 Dec 21 19:54 test
drwxr-xr-x 2 test 4096 Dec 21 19:54 tmp
$ ls -oh
total 4.0K
-rw-r--r-- 1 test    0 Dec 21 19:54 test
drwxr-xr-x 2 test 4.0K Dec 21 19:54 tmp

pwd —— Print Working Directory

pwd介紹

 列印當前工作目錄的完整路徑名。(print name of current/working directory)

參數格式

pwd [OPTION]...

pwd 用法展示

[test@Mfate171193 /home/test] 20:06
pwd
/home/test

touch (change file timestamps)

touch介紹

Update the access and modification times of each FILE to the current time.

A FILE argument that does not exist is created empty, unless -c or -h is supplied.

 將每個文件的訪問和修改時間更新為當前時間。除非提供-c或-h,否則將不存在的FILE參數創建為空。

touch參數格式

touch [OPTION]... FILE...

touch命令參數

-a 或--time=atime或--time=access或--time=use 只更改存取時間。

-c 或--no-create 不建立任何文檔。

-d 使用指定的日期時間,而非現在的時間。

-f 此參數將忽略不予處理,僅負責解決BSD版本touch指令的相容性問題。

-m 或--time=mtime或--time=modify 只更改變動時間。

-r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。

-t 使用指定的日期時間,而非現在的時間。

用法示例

#創建三個文件
$ touch test1 test2 test3
#不創建文檔
$ touch -c test5  
$ ls
test1  test2  test3
#可以看到只創建了test1、test2、test3 , -c不建立任何文件
$ touch -t 201911110000 test1
stat test*
#stat命令可以查看文件的詳細變更時間,可以test1文件的最後修改時間為201911110000,說明touch -t可以修改文件最後訪問時間。這個參數還是很有用的,你可以把你最近訪問的時間修改為一個很早的時間。可以做一些有趣的事情,哈哈。
  File: ‘test1’
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d    Inode: 360736      Links: 1
Access: (0644/-rw-r--r--)  Uid: (14060/   localhost)   Gid: ( 1001/    hero)
Access: 2019-11-11 00:00:00.000000000 +0800
Modify: 2019-11-11 00:00:00.000000000 +0800
Change: 2019-12-21 20:58:11.290761038 +0800
 Birth: -
  File: ‘test2’
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d    Inode: 360738      Links: 1
Access: (0644/-rw-r--r--)  Uid: (14060/   localhost)   Gid: ( 1001/    hero)
Access: 2019-12-21 20:56:34.523761038 +0800
Modify: 2019-12-21 20:56:34.523761038 +0800
Change: 2019-12-21 20:56:34.523761038 +0800
 Birth: -
  File: ‘test3’
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d    Inode: 360740      Links: 1
Access: (0644/-rw-r--r--)  Uid: (14060/   localhost)   Gid: ( 1001/    hero)
Access: 2019-12-21 20:56:34.523761038 +0800
Modify: 2019-12-21 20:56:34.523761038 +0800
Change: 2019-12-21 20:56:34.523761038 +0800
 Birth: -

cat&tac (Concatenate FILE(s), or standard input, to standard output.)

cat介紹

Concatenate FILE(s), or standard input, to standard output.

將FILE或標準輸入連接到標準輸出。

cat 參數格式

cat [OPTION]... [FILE]...

cat命令參數

-A, --show-all 等價於 -vET

-b, --number-nonblank 對非空輸出行編號

-e 等價於 -vE

-E, --show-ends 在每行結束處顯示

-n, --number 對輸出的所有行編號,由1開始對所有輸出的行數編號

-s, --squeeze-blank 有連續兩行以上的空白行,就代換為一行的空白行

-t 與 -vT 等價

-T, --show-tabs 將跳格字元顯示為 ^I

-u (被忽略)

-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

cat常用參數示例

$ cat test  #展示文件內容
-A, --show-all      等價於 -vET
-b, --number-nonblank  對非空輸出行編號
-e            等價於 -vE

$ cat -n test  #展示文件內容並且展示行號
     1    -A, --show-all      等價於 -vET
     2    -b, --number-nonblank  對非空輸出行編號
     3    -e            等價於 -vE

tac命令與cat命令展示內容相反,不能帶行號輸出。

$ tac test
-e            等價於 -vE
-b, --number-nonblank  對非空輸出行編號
-A, --show-all      等價於 -vET

mkdir —— Make Directory

mkdir介紹

Create the DIRECTORY(ies), if they do not already exist.

如果目錄不存在,則創建目錄。

mkdir參數格式

mkdir [OPTION]... DIRECTORY...

mkdir命令參數

-m, --mode=模式,設定許可權<模式> (類似 chmod),而不是 rwxrwxrwx 減 umask

-p, --parents 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄;

-v, --verbose 每次創建新目錄都顯示信息

--help 顯示此幫助信息並退出

--version 輸出版本信息並退出

mkdir常用參數示例

#創建目錄文件test
$ mkdir test
#連續創建
$ mkdir -p test1/tmp
$ ls
test  test1
#創建時置頂目錄許可權
#tmp目錄擁有可執行許可權,Linux文件許可權問題後期文章會詳細講到,記得關註我
$ mkdir -pm 777 test2/tmp
$ ls -lh
total 12K
drwxr-xr-x 2 localhost hero 4.0K Dec 21 21:39 test
drwxr-xr-x 3 localhost hero 4.0K Dec 21 21:40 test1
drwxr-xr-x 3 localhost hero 4.0K Dec 21 21:40 test2
$ ls
test  test1  test2
#-v 參數可確定文件是否已經存在,如果不存在則會創建,並顯示如下信息
$ mkdir -v test
mkdir: cannot create directory ‘test’: File exists

$ mkdir -v test7
mkdir: created directory ‘test7’

cd —— Change Directory

cd介紹

 切換當前目錄至指定目錄

常用參數示例

#列印當前目錄到標準輸出
pwd
/Users/localhost
#切換到目錄/
$cd /

 cd命令沒什麼參數就是切換目錄到指定路徑下,較為簡單,但是使用評率極高。

rm&rmdir —— Remove Directory

rm介紹

The rm utility attempts to remove the non-directory type files specified on the command line. If the permissions of the file do not permit writing, and the standard input device is a terminal, the user is prompted (on the standard error output) for confirmation.

rm實用程式嘗試刪除命令行上指定的非目錄類型文件。 如果文件的許可權不允許寫入,並且標準輸入設備是終端,則會提示用戶(在標準錯誤輸出上)進行確認。

 rm命令使用時還是需要註意的,他的刪除恢複比較麻煩,有些系統會自帶-i參數,輸入命令之後還有一個確認步驟,有些是直接刪掉了,是真刪掉,從記憶體抹掉那種(其實底層是讓該文件指針不指向該文件的記憶體塊,記憶體上的內容原則上是存在的,但是恢復會比較複雜,需要掃描整塊記憶體塊才能拿到內容)。不要輕易刪掉你寫的重要代碼,hh。

rm參數格式

rm [-dfiPRrvW] file ...

rm命令參數

-f, --force 忽略不存在的文件,從不給出提示。

-i, --interactive 進行互動式刪除

-r, -R, --recursive 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。

-d, --dir 刪除空目錄

rm常用參數示例

# 創建三個文件
$ touch tmp.cc tmp.java tmp.py tmp.go
#創建目錄文件
$ mkdir -p linux/test
#查看文件是否創建成功
$ ls
linux    tmp.cc   tmp.go   tmp.java tmp.py
#刪除文件,併進行提示
$ rm -i tmp.cc
remove tmp.cc? y
#強制刪除
$ rm  -f tmp.go
#刪除目錄
$ rm -f linux  #刪除目錄失敗
rm: linux: is a directory
#迴圈刪除目錄下所有文件
$ rm -rf linux  #刪除目錄成功,
$ ls
tmp.java tmp.py  

 rmdir==rm -d 刪除空目錄

mv —— Move

mv介紹

In its first form, the mv utility renames the file named by the source operand to the destination path named by the target operand. This form is assumed when the last operand does not name an already existing directory.

In its second form, mv moves each file named by a source operand to a destination file in the existing directory named by the directory operand. The destination path for each operand is the pathname produced by the concatenation of the last operand, a slash, and the final pathname component of the named file.

總結下,就是移動目錄或者文件到置頂目錄下,同時具有重命名的功能。

mv參數格式

mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory

mv命令參數

-b :若需覆蓋文件,則覆蓋前先行備份。

-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;

-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋

-n:不要覆蓋現有文件。 (-n選項將覆蓋以前的任何-f或-i選項。)

-u :若目標文件已經存在,且 source 比較新,才會更新(update)

mv常用參數示例

##修改文件名
$ touch tmp.cc

$ ls
tmp.cc

$ mv tmp.cc tmp.java

$ ls
tmp.java
#移動文件或者目錄
pwd
/Users/localhost/test
#移動文件並重命名
$ mv /Users/localhost/logs/tmp.txt ./tmp.log 

$ ls /Users/localhost/logs/
discover-client metabase        tesla

$ ls ./
tmp.java tmp.log
#移動目錄並重命名
$ mv /Users/localhost/logs/tesla  ./tesla.ba 

$ ls
tesla.ba tmp.java tmp.log

 這個命令在寫makefile文件的時候用起來很舒服,可以把編譯的結果移到指定目錄並重命名。

cp —— Copy

cp介紹

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用 Visual Studio Code 進行遠程開發 在完成了 AT 指令入門的學習之後,接下來就要使用 AT 指令進行 Socket 通信了。問題在於,之前 .NET 的 Socket 編程只需一臺電腦便可進行學習,伺服器和客戶端都可以在本機運行,也可以分別運行在區域網上的兩臺電腦之上。而 N ...
  • 多線程,一個多麼熟悉的辭彙,作為一名程式員,我相信無論是從事什麼開發語言,都能夠輕輕鬆松說出幾種實現多線程的方式,並且在實際工作種也一定用到過多線程,比如:定時器、非同步作業等等,如果你說你沒有用過多線程,我懷疑你是不是一名程式員,哈哈。 ...
  • 本筆記摘抄自:https://www.cnblogs.com/yaozhenfa/p/CSharp_Linq_For_Xml.html,記錄一下學習過程以備後續查用。 一、生成xml 1.1創建簡單的xml /// <summary> /// CreateXml類 /// </summary> pu ...
  • 時間如流水,只能流去不流回! 點贊再看,養成習慣,這是您給我創作的動力! 本文 Dotnet9 https://dotnet9.com 已收錄,站長樂於分享dotnet相關技術,比如Winform、WPF、ASP.NET Core、Xamarin.Forms等,亦有C++桌面相關的Qt Quick和 ...
  • [toc] 前言 周末加班,下午犯困,整理下之前鼓搗過的東西,看過我之前的webapi系列的讀者知道,我之前試過Aspect,但是升級到3.0之後沒往下去試了,當時還留了個坑,這不,現在果斷移除了換成這個了。 Autofac 這個第三方類庫呢,是Ioc的容器,可以簡化我們很大的工作量,比如說在之前我 ...
  • 為減少代碼量,這裡實現一個基於Dapper的泛型Repository。 這裡需要引用Dapper.dll和Dapper.Contrib.dll。 介面定義: 介面實現: GetPageList為Dapper的一個分頁擴展: PagedResult類: Paged類: 在IServiceCollect ...
  • location教程 示例: location = / { # 精確匹配 /,主機名後面不能帶任何字元串 [ configuration A ] } location / { # 因為所有的地址都以/開頭,所有這條規則將匹配到所有請求 # 但是正則和最長字元串會優先匹配 [ configuratio ...
  • 背景 By 魯迅 By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex A53,雙核 3. 使用工具:Source Insight 3.5, Visio 1. 概述 上篇文章分析到 函數中,內核實現只是在進程的地址空間建立好了 區域,並沒有實際的虛擬地址到物理 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...