Linux筆記:文件和目錄常用操作

来源:https://www.cnblogs.com/guyuyun/archive/2020/04/13/12688947.html
-Advertisement-
Play Games

本文講了一些文件和目錄本身的基礎知識和操作,如新建、複製、移動等,並不涉及文件內容的查看、編輯、搜索等操作。 文件歸屬 文件的歸屬只有三種關係: 所有者u:即文件的擁有者,並且一個文件同時只能有一個所有者,一般是誰創建的文件,這個文件的所有者就是誰。 所屬組g:文件歸屬的組,並且一個文件同時只能歸屬 ...


本文講了一些文件和目錄本身的基礎知識和操作,如新建、複製、移動等,並不涉及文件內容的查看、編輯、搜索等操作。 

 

文件歸屬

文件的歸屬只有三種關係:

  • 所有者u:即文件的擁有者,並且一個文件同時只能有一個所有者,一般是誰創建的文件,這個文件的所有者就是誰。
  • 所屬組g:文件歸屬的組,並且一個文件同時只能歸屬於一個組,只有組中的成員才能操作此文件。
  • 其他人o:非前兩者關係的用戶就是其他人。

 

文件許可權

Linux中許可權的表示由四部分組成,如-rw-r--r--,第一部分為第一個字元,表示文件類型,常用文件類型有-(二進位文件)、d(目錄)和l(軟連接文件,相當於Windows中的快捷方式)。接下來每三個字元為一組的三個部分,分別代表該文件所有者u、所屬組g和其他人o所擁有的許可權,而每個部分的許可權由三個字元表示其擁有的r讀、w寫和x執行許可權,如果有該許可權則用對應的字母表示,如果沒有該許可權則用-表示。

目錄的rwx許可權如下(文件的rwx許可權很好理解,但是目錄的rwx許可權是有些差別的):

  • r:可以列出目錄中的內容。
  • w:可以在目錄中創建和刪除文件。
  • x:可以進入目錄。

 

ls命令

ls [選項] [目錄]:列出目錄下的所有文件及子目錄。

選項:

  • -a:顯示目錄下的所有內容,包括隱藏文件(Linux中以點“.”開頭的文件或目錄為隱藏文件)。
  • -l:顯示目錄下內容的詳細信息,分別為許可權、引用繫數(相當於引用計數)、文件所有者、文件所屬組、文件大小(單位Byte)、文件最後一次修改時間(Linux中沒有創建時間的概念)、文件名。
  • -h:人性化顯示,將文件等內容的大小以較為人性化的方式顯示,如M、G等,而不是預設的單位位元組。
  • -d:顯示當前所在目錄或指定目錄本身。
  • -i:顯示文件或目錄的id號(也稱為i節點號)。

 

mkdir命令

mkdir [-p] 目錄 [目錄1 目錄2 ...]:用於創建一個或多個空白目錄。-p選項是用於遞歸創建目錄。

 

cd命令

cd [目錄]:切換到指定目錄,目錄還以使用一個點“.”表示當前目錄,兩個點“..”表示上一級目錄。

 

pwd命令

顯示當前目錄的絕對路徑。

 

rmdir命令

rmdir 目錄:刪除一個空目錄。

 

rm命令

rm [-rf] 文件或目錄:刪除文件或目錄,不加選項則預設刪除文件。

  • -r:刪除目錄。
  • -f:強制執行。

 

cp命令

cp [-rp] 一個或多個原文件或目錄 目標文件或目錄:複製文件或目錄,如果不加選項,則預設複製文件。當目標文件或目錄不存在時,相當於複製並重命名。

  • -r:複製目錄。
  • -p:保留文件屬性,如最後一次修改時間等。

 

mv命令

mv 原文件或目錄 目標文件或目錄:移動(剪切)文件或目錄。當目標文件或目錄不存在時,則相當於剪切並重命名。

文件或目錄重命名:Linux中沒有直接的重命名命令,但是一般使用mv來實現文件或目錄的重命名,即將文件或目錄移動到“原位置”,但是名稱卻變了,如“mv /tmp/test.txt /tmp/linux_test.txt”就可以將test.txt重命名為linux_test.txt。

 

touch命令

touch 一個或多個文件或目錄:如果文件不存在,則會創建一個或多個空白文件(多個空白文件使用空格隔開,如果文件名中含有空格,文件名需要使用雙引號括起來,但建議不要使用空格來命名文件)。如果文件或目錄已經存在,則會根據指定的選項修改文件的時間屬性,如最後一次修改時間(這裡沒有列出相應的選項,需要時可自行查看)。

註意:新建的文件是沒有執行許可權的,所以如果新建的文件是腳本,則需要先賦予它執行許可權才能執行這個腳本。

 

ln命令

ln [-s] 原文件 目標文件:生成鏈接文件(即目標文件,它指向原文件),預設生成硬鏈接文件。-s選項指定生成軟鏈接文件。

軟鏈接:類似Windows中的快捷方式,只是一個指向另一個文件的鏈接而已,並且Linux中的軟鏈接文件的許可權永遠都是lrwxrwxrwx,以及大小都是固定的很小的位元組數。

硬鏈接:硬鏈接的信息與原文件的信息都是一樣的,並且其中一個文件更新後,硬鏈接文件也會同步更新,相當於cp -p命令再加上同步跟新的功能。之所以它能同步更新,是因為硬鏈接的i節點和原文件的i節點是相同的(而Linux就是通過i節點來識別不同的文件)。

軟鏈接與硬鏈接的差別(或者說硬鏈接的特點):

  • 硬鏈接是不能跨分區的。
  • 硬鏈接是不能指向目錄的。

 

locate命令
locate -i 文件名:在文件資料庫中查找文件。(預設區分大小寫,-i選項表示不區分大小寫)
這個命令搜索速度非常快,幾乎秒搜,find命令是去硬碟上搜索,而find是在自己維護的一個文件資料庫中查找,這個文件資料庫會定期自動更新。但是文件資料庫是不會收錄/tmp目錄下的文件的。
updatedb:手動更新文件資料庫。

 

find命令
find 搜索範圍 匹配條件:搜索文件。
find是直接在硬碟上搜索,所以它的消耗是非常大的,所以使用的時候應該儘量縮小搜索範圍,匹配條件也越精確越好。而且最好不要在系統負載較高時使用這個命令。
常用選項:

  • -name:根據文件名搜索。如“find / -name init”表示在根目錄的範圍內搜索文件名為init的文件(精確匹配)。如果想要模糊匹配,可以使用通配符,如find / -name *init*(星號*匹配任意字元,問號?匹配單個字元)。
  • -iname:不區分大小寫進行文件查找。
  • -size:根據文件大小進行搜索,+表示大於,-表示小於,=表示等於。查找大小的單位為一個數據塊,Linux中一個數據塊的大小為512位元組,即0.5KB,所以搜索的時候需要自己轉換以下。如“find / -size +204800”表示在根目錄下查找大於100MB的文件(100MB=102400KB=204800個數據塊)。
  • -user:根據所有者來進行搜索。
  • -group:根據所屬組來進行搜索。
  • -amin:根據文件訪問時間查找,時間單位為分鐘。
  • -cmin:根據文件屬性(屬性即ls -l能查看到的內容)的改變時間查找,時間單位為分鐘。如“find /etc -cmin -5”表示在/etc目錄下查找5分鐘內文件屬性被修改過的文件。
  • -mmin:根據文件內容的改變時間查找,時間單位為分鐘。
  • -a:連接選項,邏輯與,表示需要兩個條件同時滿足。如find /etc -size +1638840 -a -size -204800。
  • -o:連接選項,邏輯或,表示兩個條件滿足其中任意一個即可。
  • -type:根據文件類型查找,f表示文件,d表示目錄,l表示軟鏈接。
  • -exec/-ok 命令 {}\;:使用-exec(直接執行,不會詢問)或-ok(執行命令時會進行詢問)對查找結果執行某個命令,{}\;是固定的寫法,{}表示查找結果,\只是對後面分號;的轉義而已。如“find /etc -name init -exec ls -l {}\;”。
  • -inum:根據i節點查找。

 


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

-Advertisement-
Play Games
更多相關文章
  • ASP.NET CORE出現之前我們實現的Controller,MVC都繼承自Controller基類,WebApi的話繼承自ApiController。現在ASP.NET CORE把MVC跟WebApi合併了,已經不再區分MVC或者WebApi。ASP.NET CORE的Controller繼承結... ...
  • 上一章介紹的ColorPicker控制項,是控制項設計的最好示例。因為其行為和可視化外觀是精心分離的,所以其他設計人員可開發動態改變其外觀的新模板。 ColorPicker控制項如此簡單的一個原因是不涉及狀態。換句話說,不根據是否具有焦點、滑鼠是否在它上面懸停、是否禁用等狀態區分其可視化外觀。接下來本章介 ...
  • Navicat is a series of graphical database management and development software produced by PremiumSoft CyberTech Ltd. for MySQL, MariaDB, Oracle, SQLit... ...
  • 昨天大致把思路理清楚了,用one hot的方式把關鍵詞按字拆開編碼,今天嘗試可行性。 目前主流的文本向量化方式主要包括one hot、tf (term frequency)和tf idf (term frequency–inverse document frequency)這三種,越往後準確度應該越 ...
  • 前言 在上一篇導出文檔番外篇中,我們已經熟悉了怎樣根據json數據導出word的文檔,生成介面文檔,而在這一篇,將對上一篇進行完善補充,增加多種導出方式,實現更加完善的導出功能。 回顧 1. 獲取Swagger介面文檔的Json文件 2. 解析Json文件數據填充到Html的表格中 3.根據生成的h ...
  • 現如今當你翻看一些開源項目源碼的時候,你會發現現在到處充斥著委托函數,如Func,Action,Predicate,確實現在的C 在函數式編程的路上越來越成為主流,越來越顯示威力,曾經的一些經典設計模式寫法,在函數式下可以稍微優化一下了,這篇我們就來說說模板方法。 一:實際場景 1. 模板方法定義 ...
  • Vim在Linux中是一個簡單卻又強大的文本編輯器,可以用來創建、編輯和查看一個文本。本文只是簡單介紹下,更多用法還得個人多使用練習才行。 Vim通常分為三種模式:命令模式:剛打開Vim時就預設進入命令模式,此時所有的鍵盤敲擊都會被識別為命令而不是字元輸入,而編輯器則處於等待用戶輸入命令的狀態。輸入 ...
  • 本文講一些查看文件內容的常用方法,以及在文件中搜索關鍵字的常用方法,但是註意,這些方法都不能編輯文件內容,編輯文件內容需要vi、vim等編輯器來進行。 註釋在配置文件或shell腳本中,一行中井號#之後的內容為註釋,而不是有效的配置設置或代碼。 cat命令 cat [-n] 文件名:顯示文件內容,但 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...