linux每日命令(25):Linux文件類型與擴展名

来源:https://www.cnblogs.com/huchong/archive/2018/11/22/9997474.html
-Advertisement-
Play Games

Linux文件類型和Linux文件的文件名所代表的意義是兩個不同的概念。我們通過一般應用程式而創建的比如file.txt、file.tar.gz ,這些文件雖然要用不同的程式來打開,但放在Linux文件類型中衡量的話,大多是常規文件(也被稱為普通文件)。 一. 文件類型 Linux文件類型常見的有: ...


Linux文件類型和Linux文件的文件名所代表的意義是兩個不同的概念。我們通過一般應用程式而創建的比如file.txt、file.tar.gz ,這些文件雖然要用不同的程式來打開,但放在Linux文件類型中衡量的話,大多是常規文件(也被稱為普通文件)。

一. 文件類型

Linux文件類型常見的有:普通文件、目錄文件、字元設備文件和塊設備文件、符號鏈接文件等,現在我們進行一個簡要的說明。

1.普通文件

我們用 ls -l 來查看某個文件的屬性,可以看到有類似-rwxrwxrwx,值得註意的是第一個符號是 - ,這樣的文件在Linux中就是普通文件。這些文件一般是用一些相關的應用程式創建,比如圖像工具、文檔工具、歸檔工具... .... 或 cp工具等。這類文件的刪除方式是用rm 命令。 另外,依照文件的內容,又大略可以分為:

1.1 純文本檔(ASCII)

這是Linux系統中最多的一種文件類型,稱為純文本檔是因為內容為我們人類可以直接讀到的數據,例如數字、字母等等。 幾乎只要我們可以用來做為設定的文件都屬於這一種文件類型。 舉例來說,你可以用命令: cat ~/.bashrc 來看到該文件的內容。 (cat 是將一個文件內容讀出來的指令).

1.2 二進位文件(binary)

Linux系統其實僅認識且可以執行二進位文件(binary file)。Linux當中的可執行文件(scripts, 文字型批處理文件不算)就是這種格式的文件。 剛剛使用的命令cat就是一個binary file。

1.3 數據格式文件(data)

有些程式在運作的過程當中會讀取某些特定格式的文件,那些特定格式的文件可以被稱為數據文件 (data file)。舉例來說,我們的Linux在使用者登錄時,都會將登錄的數據記錄在 /var/log/wtmp那個文件內,該文件是一個data file,他能夠透過last這個指令讀出來! 但是使用cat時,會讀出亂碼,因為他是屬於一種特殊格式的文件

last命令用來顯示用戶登錄信息

2.目錄文件

當我們在某個目錄下執行,看到有類似 drwxr-xr-x ,這樣的文件就是目錄,目錄在Linux是一個比較特殊的文件。註意它的第一個字元是d。創建目錄的命令可以用 mkdir 命令,或cp命令,cp可以把一個目錄複製為另一個目錄。刪除用rm 或rmdir命令。

3.字元設備或塊設備文件

如果你進入/dev目錄,列一下文件,會看到類似如下的:

[root@localhost log]# ls -al /dev/tty
crw-rw-rw-. 1 root tty 5, 0 Nov 20 18:25 /dev/tty
[root@localhost log]# ls -al /dev/sda1 
brw-rw----. 1 root disk 8, 1 Nov 20 18:25 /dev/sda1

我們看到/dev/tty的屬性是 crw-rw-rw- ,註意前面第一個字元是 c ,這表示字元設備文件。比如貓等串口設備。我們看到 /dev/sda1 的屬性是 brw-rw---- ,註意前面的第一個字元是 b,這表示塊設備,比如硬碟,光碟機等設備。

這個種類的文件,是用mknode來創建,用rm來刪除。目前在最新的Linux發行版本中,我們一般不用自己來創建設備文件。因為這些文件是和內核相關聯的。

與系統周邊及儲存等相關的一些文件, 通常都集中在/dev這個目錄之下!通常又分為兩種:

區塊(block)設備檔 :

就是一些儲存數據, 以提供系統隨機存取的介面設備,舉例來說,硬碟與軟盤等就是啦! 你可以隨機的在硬碟的不同區塊讀寫,這種裝置就是成組設備!你可以自行查一下/dev/sda看看, 會發現第一個屬性為 b

字元(character)設備文件:

亦即是一些串列埠的介面設備, 例如鍵盤、滑鼠等等!這些設備的特色就是一次性讀取的,不能夠截斷輸出。 舉例來說,你不可能讓滑鼠跳到另一個畫面,而是滑動到另一個地方!第一個屬性為 c

4.數據介面文件(sockets):

數據介面文件(或者:套介面文件),這種類型的文件通常被用在網路上的數據承接了。我們可以啟動一個程式來監聽客戶端的要求, 而客戶端就可以透過這個socket來進行數據的溝通了。第一個屬性為 s , 最常在/var/run這個目錄中看到這種文件類型了。

例如:當我們啟動MySQL伺服器時,會產生一個mysql.sock的文件。

[root@localhost ~]# ls -l /var/lib/mysql/mysql.sock 

srwxrwxrwx 1 mysql mysql 0 Nov 20 18:25 /var/lib/mysql/mysql.sock

註意這個文件的屬性的第一個字元是 s。

5.符號鏈接文件:

當我們查看文件屬性時,會看到有類似 lrwxrwxrwx,註意第一個字元是l,這類文件是鏈接文件。是通過ln -s 源文件名 新文件名 。下麵是一個例子,表示log1.link是log1的軟鏈接文件。怎麼理解呢?這和Windows操作系統中的快捷方式有點相似。

符號鏈接文件的創建方法舉例:

[root@localhost test]# touch log1
[root@localhost test]# ls
dir1  log1
[root@localhost test]# ln -s log1 log1.link
[root@localhost test]# ll
total 0
drwxr-xr-x. 4 root root 159 Nov 20 19:24 dir1
-rw-r--r--. 1 root root   0 Nov 22 03:54 log1
lrwxrwxrwx. 1 root root   4 Nov 22 03:54 log1.link -> log1

6.數據輸送文件(FIFO,pipe):

FIFO也是一種特殊的文件類型,他主要的目的在解決多個程式同時存取一個文件所造成的錯誤問題。 FIFO是first-in-first-out的縮寫。第一個屬性為 p 。

二. Linux文件擴展名

1.擴展名類型

基本上,Linux的文件是沒有所謂的擴展名的,一個Linux文件能不能被執行,與他的第一欄的十個屬性有關, 與檔名根本一點關係也沒有。這個觀念跟Windows的情況不相同喔!在Windows底下, 能被執行的文件擴展名通常是 .com .exe .bat等等,而在Linux底下,只要你的許可權當中具有x的話,例如[ -rwx-r-xr-x ] 即代表這個文件可以被執行。

不過,可以被執行跟可以執行成功是不一樣的~舉例來說,在root家目錄下的install.log 是一個純文本檔,如果經由修改許可權成為 -rwxrwxrwx 後,這個文件能夠真的執行成功嗎? 當然不行~因為他的內容根本就沒有可以執行的數據。所以說,這個x代表這個文件具有可執行的能力, 但是能不能執行成功,當然就得要看該文件的內容.

雖然如此,不過我們仍然希望可以藉由擴展名來瞭解該文件是什麼東西,所以,通常我們還是會以適當的擴展名來表示該文件是什麼種類的。底下有數種常用的擴展名:

擴展名 含義
*.sh 腳本或批處理文件 (scripts),因為批處理文件為使用shell寫成的,所以擴展名就編成 .sh
*Z, *.tar, *.tar.gz, *.zip, *.tgz 經過打包的壓縮文件。這是因為壓縮軟體分別為 gunzip, tar 等等的,由於不同的壓縮軟體,而取其相關的擴展名
*.html, *.php 網頁相關文件,分別代表 HTML 語法與 PHP 語法的網頁文件。 .html 的文件可使用網頁瀏覽器來直接開啟,至於 .php 的文件, 則可以透過 client 端的瀏覽器來 server 端瀏覽,以得到運算後的網頁結果。

基本上,Linux系統上的文件名真的只是讓你瞭解該文件可能的用途而已,真正的執行與否仍然需要許可權的規範才行。例如雖然有一個文件為可執行文件,如常見的/bin/ls這個顯示文件屬性的指令,不過,如果這個文件的許可權被修改成無法執行時,那麼ls就變成不能執行。

上述的這種問題最常發生在文件傳送的過程中。例如你在網路上下載一個可執行文件,但是偏偏在你的 Linux系統中就是無法執行!呵呵!那麼就是可能文件的屬性被改變了。不要懷疑,從網路上傳送到你的 Linux系統中,文件的屬性與許可權確實是會被改變的。

2.Linux文件名長度限制

在Linux底下,使用預設的Ext2/Ext3文件系統時,針對文件名長度限製為:

單一文件或目錄的最大容許文件名為 255 個字元

包含完整路徑名稱及目錄 (/) 之完整檔名為 4096 個字元

是相當長的檔名!我們希望Linux的文件名可以一看就知道該文件在幹嘛的, 所以檔名通常是很長很長。

3.Linux文件名的字元的限制

由於Linux在文字介面下的一些指令操作關係,一般來說,你在設定Linux底下的文件名時, 最好可以避免一些特殊字元比較好!例如底下這些:

* ? > < ; & ! [ ] | \ ' " ` ( ) { }

因為這些符號在文字介面下,是有特殊意義的。另外,文件名的開頭為小數點“.”時, 代表這個文件為隱藏文件!同時,由於指令下達當中,常常會使用到 -option 之類的選項, 所以你最好也避免將文件檔名的開頭以 - 或 + 來命名。


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

-Advertisement-
Play Games
更多相關文章
  • 1.安裝supervisor 2.配置supervisor 拉到最後,這裡的意思是 /etc/supervisord.d 文件夾下的所有.ini結尾的文件都可以 開啟遠程圖形界面 3.設置.net core運行配置 windows本地新建一個net.ini文件,內容如下(特別註意UTF-8格式,這裡 ...
  • nuget添加npoi ...
  • 目前遇到的,之後遇到再加 1.時間格式要用.ToString("yyyy-MM-dd HH:mm:ss"); 2.文件路徑要用Path.Combine(); 3.Supervisor的運行配置ini文件必須為UTF-8格式 ...
  • .net中的字元串操作性能問題由來已久,幸運的是微軟推出了span<T>高性能指針操作封裝工具類。這個類到底有多高的性能呢?網上傳言反正很高,但是實際上在網上很難找到合適的測試實例,這讓本人實在無力吐槽。經不住高性能這三個字的誘惑,本人還是瞭解了一番後做了幾個簡單樣例來測試一番,下麵列出幾種字元串常 ...
  • 異常信息: System.IO.FileLoadException:“混合模式程式集是針對“v2.0.50727”版的運行時生成的,在沒有配置其他信息的情況下,無法在 4.0 運行時中載入該程式集。” 解決方案: 在app.config新增如下配置節: <startup useLegacyV2Run ...
  • 什麼是EF? ADO.NET Entity Framework 是一個對象-關係的映射架構。 它支持直接定義完全獨立於資料庫結構的實體類,並把它們映射到資料庫的表和關係上。 三種編程模型: 資料庫優先開發模式(Database First Development) 模型優先開發模式(Model Fi ...
  • " 【.NET Core項目實戰 統一認證平臺】開篇及目錄索引 " 上篇文章我介紹瞭如何在網關上增加自定義客戶端授權功能,從設計到編碼實現,一步一步詳細講解,相信大家也掌握了自定義中間件的開發技巧了,本篇我們將介紹如何實現自定義客戶端的限流功能,來進一步完善網關的基礎功能。 .netcore項目實戰 ...
  • ASP.NET -- WebForm -- Cookie的使用 Cookie是存在瀏覽器記憶體或磁碟上。 1. Test3.aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test3.aspx.cs" Inherits="T ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...