Linux:桌面系统中的文件后缀和类型

相关阅读

Linuxicon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12234591.html?spm=1001.2014.3001.5482


        Linux中的文件后缀与Windows系统有些不同,因为其似乎没有很重要,一个文件是否可执行对后缀没有要求。但是,后缀依然可以用于表示文件类型,也可以据此选择不同类型文件的默认打开方式。

        在Linux系统中,MIME(多用途互联网邮件扩展)文件类型机制是用来识别和处理不同类型文件的一种方式。MIME类型,也称为互联网媒体类型,最初是为了在电子邮件系统中识别不同格式的文件而设计的,但后来被广泛应用于HTTP传输中以及在操作系统如Linux中识别文件格式。

        MIME类型通常由两部分组成,类型(type)和子类型(subtype),用斜线分隔。例如,test/html表示HTML文档,image/jpeg表示JPEG图像文件。

        /usr/share/mime目录中有一些XML文件,它们是自动生成的,在安装或更新shared-mime-info包时由update-mime-database命令更新,它们规定了MIME类型、以及文件后缀和文件类型的映射关系。

        /usr/share/mime目录下的types文件中包括了目前的所有MIME类型,如下所示。

***********************
text/xmcd
video/3gpp
video/3gpp2
video/annodex
video/dv
video/isivideo
video/mp2t
video/mp4
video/mpeg
video/ogg
video/quicktime
video/vnd.mpegurl
video/vnd.rn-realvideo
video/vnd.vivo
video/wavelet
video/webm
video/x-anim
video/x-flic
***********************

        下面用/usr/share/mime/text目录下x-python.xml文件进行举例说明。

<?xml version="1.0" encoding="utf-8"?>
<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="text/x-python"><!--Created automatically by update-mime-database. DO NOT EDIT!--><comment>Python script</comment><comment xml:lang="ar">سكربت بايثون</comment><comment xml:lang="be@latin">Skrypt Python</comment><comment xml:lang="bg">Скрипт — Python</comment><comment xml:lang="ca">script Python</comment><comment xml:lang="cs">skript Python</comment><comment xml:lang="da">Pythonprogram</comment><comment xml:lang="de">Python-Skript</comment><comment xml:lang="el">Δέσμη ενεργειών Python</comment><comment xml:lang="en_GB">Python script</comment><comment xml:lang="eo">Python-skripto</comment><comment xml:lang="es">secuencia de órdenes en Python</comment><comment xml:lang="eu">Python script-a</comment><comment xml:lang="fi">Python-komentotiedosto</comment><comment xml:lang="fo">Python boðrøð</comment><comment xml:lang="fr">script Python</comment><comment xml:lang="ga">script Python</comment><comment xml:lang="gl">Script en Python</comment><comment xml:lang="he">תסריט Python</comment><comment xml:lang="hr">Python skripta</comment><comment xml:lang="hu">Python-parancsfájl</comment><comment xml:lang="ia">Script Python</comment><comment xml:lang="id">Skrip Python</comment><comment xml:lang="it">Script Python</comment><comment xml:lang="ja">Python スクリプト</comment><comment xml:lang="kk">Python сценарийі</comment><comment xml:lang="ko">파이썬 스크립트</comment><comment xml:lang="lt">Python scenarijus</comment><comment xml:lang="lv">Python skripts</comment><comment xml:lang="ms">Skrip Python</comment><comment xml:lang="nb">Python-skript</comment><comment xml:lang="nl">Python-script</comment><comment xml:lang="nn">Python-skript</comment><comment xml:lang="oc">escript Python</comment><comment xml:lang="pl">Skrypt Python</comment><comment xml:lang="pt">script Python</comment><comment xml:lang="pt_BR">Script Python</comment><comment xml:lang="ro">Script Python</comment><comment xml:lang="ru">сценарий Python</comment><comment xml:lang="sk">Skript Python</comment><comment xml:lang="sl">Skriptna datoteka Python</comment><comment xml:lang="sq">Script Python</comment><comment xml:lang="sr">Питонова скрипта</comment><comment xml:lang="sv">Pythonskript</comment><comment xml:lang="tr">Python betiği</comment><comment xml:lang="uk">скрипт мовою Python</comment><comment xml:lang="vi">Văn lệnh Python</comment><comment xml:lang="zh_CN">Python 脚本</comment><comment xml:lang="zh_TW">Python 指令稿</comment><sub-class-of type="application/x-executable"/><sub-class-of type="text/plain"/><glob pattern="*.py"/><glob pattern="*.pyx"/><glob pattern="*.wsgi"/>
</mime-type>

        XML文件中类似<comment>Python script</comment>的字段,规定了在桌面系统下,text/x-python类型文件在进行查询时显示的类型。最后的<glob pattern="*.py"/>字段,规定了哪些后缀的文件会被识别为text/x-python类型,不加说明后缀是大小写不敏感的,即.py、.PY、.pY和.Py都会被识别为text/x-python类型。

        下面给出了一个大小写敏感的例子,出现在x-c++src.xml中,其中的<glob pattern="*.C" case-sensitive="true"/>字段说明了只有大写C后缀的文件才会被识别为text/x-c++src类型。

<?xml version="1.0" encoding="utf-8"?>
<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="text/x-c++src"><!--Created automatically by update-mime-database. DO NOT EDIT!--><comment>C++ source code</comment><comment xml:lang="ar">شفرة مصدر سي++</comment><comment xml:lang="be@latin">Kryničny kod C++</comment><comment xml:lang="bg">Изходен код — C++</comment><comment xml:lang="ca">codi font en C++</comment><comment xml:lang="cs">zdrojový kód C++</comment><comment xml:lang="da">C++-kildekode</comment><comment xml:lang="de">C++-Quelltext</comment><comment xml:lang="el">Πηγαίος κώδικας C++</comment><comment xml:lang="en_GB">C++ source code</comment><comment xml:lang="eo">C++-fontkodo</comment><comment xml:lang="es">código fuente en C++</comment><comment xml:lang="eu">C++ iturburu-kodea</comment><comment xml:lang="fi">C++-lähdekoodi</comment><comment xml:lang="fo">C++ keldukota</comment><comment xml:lang="fr">code source C++</comment><comment xml:lang="ga">cód foinseach C++</comment><comment xml:lang="gl">código fonte de C++</comment><comment xml:lang="he">קוד מקור של C++‎</comment><comment xml:lang="hr">C++ izvorni kod</comment><comment xml:lang="hu">C++-forráskód</comment><comment xml:lang="ia">Codice-fonte C++</comment><comment xml:lang="id">Kode program C++</comment><comment xml:lang="it">Codice sorgente C++</comment><comment xml:lang="ja">C++ ソースコード</comment><comment xml:lang="ka">C++-ის საწყისი კოდი</comment><comment xml:lang="kk">C++ бастапқы коды</comment><comment xml:lang="ko">C++ 소스 코드</comment><comment xml:lang="lt">C++ pradinis kodas</comment><comment xml:lang="lv">C++ pirmkods</comment><comment xml:lang="ms">Kod sumber C++</comment><comment xml:lang="nb">C++-kildekode</comment><comment xml:lang="nl">C++-broncode</comment><comment xml:lang="nn">C++-kjeldekode</comment><comment xml:lang="oc">còde font C++</comment><comment xml:lang="pl">Kod źródłowy C++</comment><comment xml:lang="pt">código origem C++</comment><comment xml:lang="pt_BR">Código-fonte C++</comment><comment xml:lang="ro">Cod sursă C++</comment><comment xml:lang="ru">исходный код C++</comment><comment xml:lang="sk">Zdrojový kód jazyka C++</comment><comment xml:lang="sl">Datoteka izvorne kode C++</comment><comment xml:lang="sq">Kod burues C++</comment><comment xml:lang="sr">Ц++ изворни ко̂д</comment><comment xml:lang="sv">C++-källkod</comment><comment xml:lang="tr">C++ kaynak kodu</comment><comment xml:lang="uk">вихідний код мовою C++</comment><comment xml:lang="vi">Mã nguồn C++</comment><comment xml:lang="zh_CN">C++ 源代码</comment><comment xml:lang="zh_TW">C++ 源碼</comment><sub-class-of type="text/x-csrc"/><glob pattern="*.cpp"/><glob pattern="*.cxx"/><glob pattern="*.cc"/><glob pattern="*.C" case-sensitive="true"/><glob pattern="*.c++"/>
</mime-type>

        下图展示了在桌面系统GNOME中,一个.py后缀文件的类型查询结果。 

        可以看出首先根据系统语言(这里是默认),显示了<comment>字段规定的类型名,并且在小括号中显示了MIME类型。

        不同的桌面系统的显示结果可能有差异,下面是桌面系统XFCE中,一个.py后缀文件的类型查询结果。

        其中根据系统语言(这里是zh_CN),显示了<comment>字段规定的类型名,即Python 脚本。

        需要注意的是,一个有后缀的文件,显示出来的类型是由后缀决定的,这可能与文件真实类型不符合。如一个可执行二进制文件,如果重命名以.py为后缀,则其显示出来的类型会是错误的Python 脚本。所以一个文件的后缀只是对其类型的一个暗示,但并不确保其准确性。如果要准确识别一个文件的类型,可以使用file命令,它是通过文件的魔术头识别文件类型的,因此更为准确,如下所示。

$ file test.py
test.py: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=8c8cfe14852611f912f695c4ff7fae0b6607382d, not stripped

        对于没有后缀的文件,桌面系统会根据文件内容尝试推断其类型,即如果他是一个二进制文件,则可能推断为executable (application/x-executable)类型。下面是一个例子展示了一个没有后缀的jupyter+json格式的文件被正确识别为了Jupyter Notebook (application/x-ipynb+json)类型。

{"cells": [{"cell_type": "markdown","metadata": {},"source": ["# 简单的Jupyter Notebook"]},{"cell_type": "code","execution_count": 1,"metadata": {},"outputs": [],"source": ["print('Hello, world!')"]}],"metadata": {"kernelspec": {"display_name": "Python 3","name": "python3"}},"nbformat": 4,"nbformat_minor": 2
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/346735.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习笔记:label smoothing

在传统的分类任务中&#xff0c;我们通常使用硬标签&#xff08;hard labels&#xff09; 即如果一个样本属于某个类别&#xff0c;其对应的标签就是一个全0的向量&#xff0c;除了表示这个类别的位置为1。例如&#xff0c;在一个3类分类任务中&#xff0c;某个样本的标签可能是…

实用软件分享---简单菜谱 0.3版本 几千种美食(安卓)

专栏介绍:本专栏主要分享一些实用的软件(Po Jie版); 声明1:软件不保证时效性;只能保证在写本文时,该软件是可用的;不保证后续时间该软件能一直正常运行;不保证没有bug;如果软件不可用了,我知道后会第一时间在题目上注明(已失效)。介意者请勿订阅。 声明2:本专栏的…

【Python】 装饰器,可不只是装饰作用!

Python 是一种高级编程语言&#xff0c;以其清晰的语法和代码可读性而著称。在 Python 中&#xff0c;“at” 符号&#xff08;&#xff09;通常被称为装饰器&#xff08;Decorator&#xff09;的语法符号。装饰器是一种设计模式&#xff0c;用于修改或增强函数、方法或类的行为…

Spring Cloud Gateway详解

一、前言Spring Cloud Gateway的作用 路由转发&#xff1a; Spring Cloud Gateway作为微服务架构中的网关服务&#xff0c;充当所有请求的入口。它可以根据请求的路径、Host、Header、请求参数等多种条件进行路由&#xff0c;将请求转发到相应的微服务实例。路由信息由ID、目的…

2024蓝桥杯初赛决赛pwn题全解

蓝桥杯初赛决赛pwn题解 初赛第一题第二题 决赛getting_startedbabyheap 初赛 第一题 有system函数&#xff0c;并且能在bss上读入字符 而且存在栈溢出&#xff0c;只要过掉check函数即可 check函数中&#xff0c;主要是对system常规获取权限的参数&#xff0c;进行了过滤&…

git版本控制工具常用命令

一、本地仓库管理 push 向远程推送代码 pulll 拉取代码 二、远程仓库管理 三、分支操作 本地主分支master 远程主分支main head指向当前分支 查看&#xff1a;git branch 创建分支: git branch 名字 切换分支&#xff1a;git checkout 名字 合并分支&#xff1a;git…

VS2019创建c++动态链接库dll与调用方法

VS2019创建c动态链接库dll与调用方法 1.点击文件-》新建-》项目&#xff0c;输入dll,选择具有导出项的(DLL)动态链接库 2.输入一个文件名&#xff1a;dll2 头文件.h 3.添加加减法函数&#xff1a; // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的…

爱普生SMD3225贴片晶振升级版TSX-3225

爱普生有一款外形尺寸3.2*2.5mm的无源贴片晶振&#xff0c;型号TSX-3225&#xff0c;也是非常直观的能从型号分辨其封装尺寸大小的&#xff0c;被广泛应用于便携式的无线传输设备&#xff0c;同时&#xff0c;这也是一款非常成熟的产品&#xff0c;毕竟SMD3225封装是目前市场主…

部署LVS-DR模式(附带详细实验)

目录 一.数据包流向分析 二.DR模式特点 三.ARP问题及解决办法 四.实验部署 1.配置负载调度器&#xff08;192.168.80.105&#xff09; 1.1.安装并启用ipvsadm 1.2.配置虚拟IP地址&#xff08;VIP&#xff1a;192.168.80.100&#xff09; 1.3.调整 proc 响应参数 1.4.配…

springboot 在线心理咨询管理系统-计算机毕业设计源码82552

摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用Java技术建设在线心理咨询管理系统…

Elasticsearch index 设置 false,为什么还可以被检索到?

在 Elasticsearch 中&#xff0c;mapping 定义了索引中的字段类型及其处理方式。 近期有球友提问&#xff0c;为什么设置了 index: false 的字段仍能被检索。 本文将详细探讨这个问题&#xff0c;并引入列式存储的概念&#xff0c;帮助大家更好地理解 Elasticsearch 的存储和查…

IO模型和多路转接

叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.IO 概要1.1.IO 低效原因1.2.IO 常见模型1.2.1.阻塞 IO1.2.2.非阻…

shell脚本简单命令

shell脚本 脚本就是可运行代码的集合&#xff0c;脚本语言&#xff08;计算机语言&#xff09;脚本的特点&#xff1a;从上到下&#xff0c;按行执行。 python 脚本语言 格式更严谨 严格的执行锁进。也是从上到下按行执行。 shell脚本就是在shell环境&#xff08;/bin/bash&…

Word忘记保存?请使用Word隐藏备份文件

大家用Word写材料时&#xff0c;如果忘记保存&#xff0c;可以使用Word隐藏备份文件找回未保存的文件。&#xff08;仅供参考&#xff09; Windows7、8、10、11系统的设置如下&#xff1a; 执行上述操作&#xff0c;可以在word文件菜单中信息项的自动保存中找到了。上述内容…

Qt for Android 申请摄像头权限

步骤 1. 添加用户权限 方式1: AndroidManifest.xml 中新增&#xff08;不添加后面申请选项时不弹窗&#xff09; 或者再Qt Creator中直接添加 方式2: .pro 中引用multimedia 模块&#xff0c;编译时配置自动添加 <uses-permission android:name"android.permissi…

我给KTV服务生讲解防抖,他竟然听懂了

端午节三天假期&#xff0c;的最后一天&#xff0c;我和朋友闲来无事&#xff0c;想着去唱会儿歌吧&#xff0c;好久不唱了&#xff0c;于是吃了午饭&#xff0c;石景山就近找了一家KTV&#xff0c;我们团好了卷就过去了。 装修还算不错&#xff0c;很快找到服务生&#xff0c…

Day 43 keepalived高可用集群

keepalived高可用集群 负载均衡 lb集群 load balance ​ 流量分发 高可用 ha集群 high availability ​ 主要是给服务器做冗余 keepalive 持久连接 保持存活 keepalived 高可用软件名称 红帽有自己的高可用集群套件&#xff1a;RHCS keepalived介绍 ​ keepalived是集…

【浏览器清空证书】

chrome://net-internals/#hsts 在地址栏输入并访问&#xff1a;chrome://net-internals/#hsts

[AI Omost] 革命性AI图像合成技术,让你的创意几乎一触即发!

介绍 Omost 是一个创新的项目&#xff0c;它利用大型语言模型&#xff08;LLM&#xff09;的编码能力来生成图像&#xff0c;特别是通过图像合成技术。项目的名称“Omost”发音类似于“almost”&#xff0c;寓意着使用该项目后&#xff0c;用户的图像生成工作几乎可以完成。同…

bbbike下载OSM路网数据后使用GraphHopper离线进行路径规划

一、bbbike下载OSM路网数据 BBBike extracts OpenStreetMap (OSM, Garmin, Shapefile etc.) 二、GraphHopper离线搭建 GraphHopper是一种快速且内存有效的Java导航引擎&#xff0c;默认使用OSM和GTFS数据&#xff0c;也可导入其他的数据源。支持CH&#xff08;Contraction Hi…