05_Linux目錄文件操作命令2_我的Linux之路

来源:https://www.cnblogs.com/susmote/archive/2018/04/09/8763529.html
-Advertisement-
Play Games

這一節我們繼續來學習Linux中對文件和目錄的操作命令 mkdir 創建目錄 在Linux端可以使用mkdir來創建目錄,如果你沒有加其他的路徑名,那麼預設是在當前目錄下創建目錄,註意當文件夾存在時則提示不能創建 在這裡說一下創建文件夾其實和windowns管理一樣,要規劃好如何去佈局一個文件系統, ...


這一節我們繼續來學習Linux中對文件和目錄的操作命令

 

 

mkdir 創建目錄

mkdir (選項)(參數)

在Linux端可以使用mkdir來創建目錄,如果你沒有加其他的路徑名,那麼預設是在當前目錄下創建目錄,註意當文件夾存在時則提示不能創建

在這裡說一下創建文件夾其實和windowns管理一樣,要規劃好如何去佈局一個文件系統,在父目錄下可以再創建子目錄,每個目錄儘量要存放相同類型的文件,這樣更易於團隊的管理和使用

mkdir的選項

-Z:設置安全上下文,當使用SELinux時有效;
-m<目標屬性>或--mode<目標屬性>建立目錄的同時設置目錄的許可權;
-p或--parents 若所要建立目錄的上層目錄目前尚未建立,則會一併建立上層目錄;
--version 顯示版本信息。

  你也可以直接通過--help來獲取選項

例如我下麵創建一個文件夾

[root@localhost ~]# mkdir myfolder
[root@localhost ~]# ls
myfolder

  

創建一個文件夾並設置許可權(許可權暫時還沒有講到,只是瞭解一下)

[root@localhost ~]# mkdir -m 711 newFolder
[root@localhost ~]# ll
total 8
drwxr-xr-x. 2 root root 4096 Apr  9 16:49 myfolder
drwx--x--x. 2 root root 4096 Apr  9 16:53 newFolder

  許可權是不是和之前創建的不一樣了

當然你也可以直接創建多個目錄(參數)

[root@localhost ~]# mkdir a b c
[root@localhost ~]# ls
a  b  c

 

創建包含子目錄的目錄(遞歸創建目錄)

遞歸創建目錄需要用到 -p選項

[root@localhost ~]# mkdir -p a/b/c
[root@localhost ~]# ls
a
[root@localhost ~]# cd a
[root@localhost a]# ls
b
[root@localhost a]# cd b
[root@localhost b]# ls
c
[root@localhost b]# cd c

  當前路徑創建了一個a,a中又創建了一個b,b中又創建了c

還可以通過列表來批量創建目錄

[root@localhost ~]# mkdir -p a/{1,2,3,4}
[root@localhost ~]# ls
a
[root@localhost ~]# cd a
[root@localhost a]# ls
1  2  3  4

  

 

 

tree

tree(選項)(參數)

 

tree命令以樹狀圖列出目錄的內容

下麵是tree的所有選項

-a:顯示所有文件和目錄;
-A:使用ASNI繪圖字元顯示樹狀圖而非以ASCII字元組合;
-C:在文件和目錄清單加上色彩,便於區分各種類型;
-d:先是目錄名稱而非內容;
-D:列出文件或目錄的更改時間;
-f:在每個文件或目錄之前,顯示完整的相對路徑名稱;
-F:在執行文件,目錄,Socket,符號連接,管道名稱名稱,各自加上"*","/","@","|"號;
-g:列出文件或目錄的所屬群組名稱,沒有對應的名稱時,則顯示群組識別碼;
-i:不以階梯狀列出文件和目錄名稱;
-l:<範本樣式> 不顯示符號範本樣式的文件或目錄名稱;
-l:如遇到性質為符號連接的目錄,直接列出該連接所指向的原始目錄;
-n:不在文件和目錄清單加上色彩;
-N:直接列出文件和目錄名稱,包括控制字元;
-p:列出許可權標示;
-P:<範本樣式> 只顯示符合範本樣式的文件和目錄名稱;
-q:用“?”號取代控制字元,列出文件和目錄名稱;
-s:列出文件和目錄大小;
-t:用文件和目錄的更改時間排序;
-u:列出文件或目錄的擁有者名稱,沒有對應的名稱時,則顯示用戶識別碼;
-x:將範圍局限在現行的文件系統中,若指定目錄下的某些子目錄,其存放於另一個文件系統上,則將該目錄予以排除在尋找範圍外。

  事實上用不上,只是參考

例如我們通過mkdir創建一個目錄體系,然後通過tree來查看

[root@localhost a]# mkdir -p a/{1,2,3,4} b/{1,2,3} c/{1,2} d/1
[root@localhost a]# ls
a  b  c  d
[root@localhost a]# tree
.
├── a
│   ├── 1
│   ├── 2
│   ├── 3
│   └── 4
├── b
│   ├── 1
│   ├── 2
│   └── 3
├── c
│   ├── 1
│   └── 2
└── d
    └── 1

14 directories, 0 files

  非常清晰的列出了文件的結構

註意:tree不僅會列出目錄,還會列出目錄中的所有文件

比如我在a下麵的1文件夾創建了三個文件

[root@localhost a]# tree
.
├── a
│   ├── 1
│   │   ├── a.py
│   │   ├── b.py
│   │   └── c.py
│   ├── 2
│   ├── 3
│   └── 4
├── b
│   ├── 1
│   ├── 2
│   └── 3
├── c
│   ├── 1
│   └── 2
└── d
    └── 1

14 directories, 3 files

  

tree命令有很多用法,我這不一一解釋了,你可以按照上面的選項去嘗試一下

 

 

cp 複製命令

cp(選項)(參數)

cp命令用來將一個或多個源文件或者目錄複製到指定的目的文件或目錄。它可以將單個源文件複製成一個指定文件名的具體的文件或一個已經存在的目錄下。cp命令還支持同時複製多個文件,當一次複製多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。

cp的一些選項

-a:此參數的效果和同時指定"-dpR"參數相同;
-d:當複製符號連接時,把目標文件或目錄也建立為符號連接,並指向與源文件或目錄連接的原始文件或目錄;
-f:強行複製文件或目錄,不論目標文件或目錄是否已存在;
-i:覆蓋既有文件之前先詢問用戶;
-l:對源文件建立硬連接,而非複製文件;
-p:保留源文件或目錄的屬性;
-R/r:遞歸處理,將指定目錄下的所有文件與子目錄一併處理;
-s:對源文件建立符號連接,而非複製文件;
-u:使用這項參數後只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件並不存在時,才複製文件;
-S:在備份文件時,用指定的尾碼“SUFFIX”代替文件的預設尾碼;
-b:覆蓋已存在的文件目標前將目標文件備份;
-v:詳細顯示命令執行的操作。

  

cp的參數其實和mv有點類似,都是需要兩個參數,一個是源文件路徑,一個目標路徑,只是mv是移動,文件數量並沒有變,而cp命令是複製一個文件或目錄

下麵我們通過一個例子來熟悉以下這個命令

把a.py複製到a文件夾中

[root@localhost ~]# ls
a  a.py
[root@localhost ~]# cp a.py a/
[root@localhost ~]# ls
a  a.py
[root@localhost ~]# cd a
[root@localhost a]# ls
a.py

  

註意,同mv命令一樣,肯定是會用到相對文件路徑的," . "代表當前文件路徑," .. "代表上一層文件路徑," ~ "代表家目錄

比如把文件複製到當前文件夾,並改名

[root@localhost ~]# ls
a.py
[root@localhost ~]# cp a.py b.py
[root@localhost ~]# ls
a.py  b.py

或是從其他文件路徑複製到當前路徑

[root@localhost b]# tree /root
/root
├── a
│   └── a.py
└── b

2 directories, 1 file
[root@localhost b]# cp ../a/a.py .
[root@localhost b]# tree /root
/root
├── a
│   └── a.py
└── b
    └── a.py

2 directories, 2 files

  

當要複製多個文件時或是一個目錄時,這時就要用到-r 遞歸處理

[root@localhost b]# pwd
/root/b
[root@localhost b]# tree /root
/root
├── a
│   ├── 1.py
│   ├── 2.py
│   └── 3.py
├── b
└── c

3 directories, 3 files
[root@localhost b]# cp -r ../a .
[root@localhost b]# tree /root
/root
├── a
│   ├── 1.py
│   ├── 2.py
│   └── 3.py
├── b
│   └── a
│       ├── 1.py
│       ├── 2.py
│       └── 3.py
└── c

  將a整個目錄都複製過來了

有時候我們在複製多個文件時,很有可能會遇到有文件重覆,這時我們就可以使用 -i 選項互動式進行cp命令,也就是在覆蓋既有文件之前先詢問用戶

[root@localhost b]# tree /root
/root
├── a
│   ├── a.py
│   └── b.py
├── b
│   └── a.py
└── c

3 directories, 3 files
[root@localhost b]# cp -i  ../a/a.py .
cp: overwrite `./a.py'? y       #y代表的是yes

  

如果文件很多時,而且重名文件也很多,那麼你就可能需要不停的按y或yes,這樣很麻煩

cp aaa/* /bbb
複製目錄aaa下所有到/bbb目錄下,這時如果/bbb目錄下有和aaa同名的文件,需要按Y來確認並且會略過aaa目錄下的子目錄。

cp -r aaa/* /bbb
這次依然需要按Y來確認操作,但是沒有忽略子目錄。

cp -r -a aaa/* /bbb
依然需要按Y來確認操作,並且把aaa目錄以及子目錄和文件屬性也傳遞到了/bbb。

\cp -r -a aaa/* /bbb
成功,沒有提示按Y、傳遞了目錄屬性、沒有略過目錄。

  

 

  

 


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

-Advertisement-
Play Games
更多相關文章
  • Maven的多模塊可以讓項目結構更明確,提高功能的內聚,降低項目的耦合度,真正的體現出分層這一概念。 我們在操作中,要明白為什麼這樣做,要瞭解到更深的層次,這樣,我們就不限於個別軟體了。 話不多說,直入主題: 如果對Maven還不夠熟悉,請看該博客:Maven基礎 整個項目做完之後的結構是這樣的: ...
  • 從官網上下載php後(我下的是php7.2.3版本),本想做個mysql的連接,但是無論怎麼配置mysqli擴展,發現mysqli都沒法用。 從百度上搜的那些方法都沒法用,發現都是一些在php.ini中配置extension=php_mysqli.dll,事實上這句話沒用了。 於是我仔細看了一下ph ...
  • 涉及到介面的方法和幾種特殊的介面,lambda表達式的作用、目的,以及使用過程中需要註意的一些地方 ...
  • go語言聖經-聲明1.四種類型的聲明語句:var、const、type和func,分別對應變數、常量、類型和函數實體對象的聲明2.包一級聲明語句聲明的名字可在整個包對應的每個源文件中訪問,局部聲明的名字就只能在函數內部很小的範圍被訪問 go語言聖經-變數1.var 變數名字 類型 = 表達式2.零值 ...
  • 本文將詳細的介紹C語言單鏈表的創建、刪除、查找、插入以及輸出功能 一、創建 二、插入 三、刪除 四、查找 五、輸出 六、主函數部分 ...
  • 幾乎每個人做java開發的都能寫出冒泡排序的演算法,那麼java中的排序是怎麼做的呢?冒泡排序並不是很好的排序方法,一起來瞭解一下吧。 ...
  • 1.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XM ...
  • 尚在學習中,隨筆記錄以供今後查閱、鞏固以及更正早期認知錯誤,隨時更新。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...