技术解析

不懂就问: Linux 默认创建的文件是什么后缀格式的?
0
2021-06-15 13:28:42
idczone
网上找了半天都找不到,这回连英文内容都没有了。
如果可以的话,顺便问问 windows 下的文件默认是什么格式的后缀好了。
补充一下,Windows 所谓的新建能新建很多格式的文件,其实是有一个 template 拷贝过来改名而已

你可以用 16 进制编辑器看看文件。
[![BH1ptO.png]( https://s1.ax1x.com/2020/11/09/BH1ptO.png)]( https://imgchr.com/i/BH1ptO)
Windows 下右键新建一个文本文档:
[url=https://imgchr.com/i/BH18un][img]https://s1.ax1x.com/2020/11/09/BH18un.png[/img][/url]
Windows 下右键新建一个 Word 文档:
[url=https://imgchr.com/i/BH1zKs][img]https://s1.ax1x.com/2020/11/09/BH1zKs.png[/img][/url]
文本文档和 Word 文档都是空的,用记事本打开 Word 文档或者用 Word 打开文本文档都可以正常显示编辑。

首先,linux 不会瞎创建,然后,后缀对 linux 没意义。

这么多回答发现你就的靠谱。
问题解决了,自己回答自己好了。
1. 单独创建一个文件不写内容,文件类型是 empty
2. 写入内容后,文件类型是 abb.md: ASCII text
------
你还是理解错了,ASCII text 类型不是因为 .md 这个后缀,即使重命名为 abb,文件类型是不会变的(因为内容还是 ASCII ),也就是文件类型和文件的后缀(扩展名)没什么关系

我感觉你这个说法也有点类似。我确实讲不太明白

不写内容就是一个空文件啊, 要不从操作系统的文件开始复习起?
而且本身 Linux 文件也没有类型一说吧, 操作系统并不关心你的文件是个文本还是个二进制, 对他来说都是磁盘或者内存里的字节流而已.
你可以把一个文件送给任意程序打开执行, 能不能执行得靠这个程序去判断了. 操作系统去执行 ELF 文件也是去判断是不是符合 ELF 文件的格式, 你完全可以送一个空文件或者文本文件 +x 之后去执行, 只是操作系统不认而已.

linux 文件有头信息来描述文件,就是 file 命令输出的信息,系统根据文件头来关联操作而不是后缀
你 touch 一个文件是没后缀的,你愿意改个什么后缀没任何影响
但是长久使用中也产生了一些约定俗成的后缀方便大家识别,就没有统一格式了。
比如动态库.so ,压缩包.tar ,这个是给人看的,你把后缀改了也照样用

建议楼主买一本《鸟哥的 Linux 私房菜(第四版)》,从头开始学一下 Linux
在这本书中的 5.2.3 节(权限对文件的重要性)中提到
"文件是实际含有数据的地方,包括一般文本文件、数据库内容档、二进制可可执行文件( binary program )等等。 因此,权限对于文件来说,他的意义是这样的:
r ( read ):可读取此一文件的实际内容,如读取文本文件的文字内容等;
w ( write ):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
x ( eXecute ):该文件具有可以被系统执行的权限。
那个可读( r )代表读取文件内容是还好了解,那么可执行( x )呢?这里你就必须要小心啦! 因为在 Windows 下面一个文件是否具有执行的能力是借由“ 扩展名 ”来判断的, 例如:.exe, .bat, .com 等等,但是在 Linux 下面,我们的文件是否能被执行,则是借由是否具有“x”这个权限来决定的!跟文件名是没有绝对的关系的!"
——引自《鸟哥的 Linux 私房菜(第四版)》
后缀名在 WINDOWS 下可以方便的关联可以执行这个文件的启动程序(如.jpg 格式关联图片查看器、.docx 格式关联 world 等);但在 Linux 中文件的后缀对于文件执行没有影响。
---
同时,我们也可以做一个实验
1.我桌面上有一个 dog.jpg 的文件,文件内容是一个狗头的图片
![image.png]( https://pic.rmb.bdstatic.com/bjh/1f75273b843e40ed4c1d0ce08b3f4758.png)
我双击点击打开它,它跳出来图片查看器,显示的是一个狗头图片
2.我将它后缀改为 dog.txt ,双击它,跳出来一个内容为乱码的文本编辑器。但是我右键,选择打开方式,图片查看器,点击之后,跳出来图片查看器,内容为一个狗头的图片。说明我虽然更改了它的后缀,但是他的实际数据内容并未发生任何改变,只是默认打开方式不同罢了。
---
Linux 下也是同理,后缀只是用来方便关联启动它的软件和分类的。
"在 Linux 下面,我们的文件是否能被执行,则是借由是否具有“x”这个权限来决定的!跟文件名是没有绝对的关系的!"
--
所以。在 Linux 中 touch 一个新文件时,你不给他后缀名。他就是没有后缀的一个文件而已,只是一个普通文件,是否可以执行是根据你对该文件是否拥有 x(eXecute)执行权限罢了。



万物皆为二进制,文件只是一种抽象。文件的类型是为方便程序区分的附加数据,文件名后缀也好,文件头也好,都是为了程序在处理文件时区别对待,程序也可以不关心文件的类型,比如 cat 什么都能给你输出来,即使结果可能是一堆乱码。

怎么帖子回了这么久 楼主还是没有理解。。。

楼主怎么就是看不懂呢

什么叫没有后缀也是有后缀的??

他在钻牛角尖哈哈哈

Linux 创建的文件的默认后缀就是没有后缀。Windows 其实也是一样的,不过 windows 有个配置可以让你新建的时候默认带一个自定义的后缀名……很多人觉得这个就是“默认后缀”,其实不是。
任何操作系统的文件后缀名只对用户(人)是有意义的,对操作系统或者任何软件内部都是没有意义的,包括 Windows 和 Linux 。这个后缀名只起一个“方便用户分辨这是啥文件”的用途,对于其他软件……我现在真没见过哪个软件只靠后缀名分辨内容,如果后缀名不识别还不工作的。
最后备注一下,以上都是针对非 8.3 的现代文件名系统,8.3 的文件名系统那是真的以后缀为文件类型的。Windows 支持 8.3 文件名系统,所以现在的 Windows 有时候还能找到一点 8.3 系统的残留(比方说 COMX 不能当文件名之类的或者有时候创建个新建文件提示你没后缀的问题)

能不能好好地去多读读书,自己做一做实验,这种 CS101 的问题。。。

哈哈哈哈哈没点进来之前都不知道这帖子这么好玩

文件都是二进制保存的,每种格式有自己的内部结构规范。而扩展名只是一个标签,方便系统快速识别这个文件的类型,然后扔给对应的程序处理

可以这样类比:
每个文件都是一个箱子
MP3 箱子里面全是鸡蛋,箱子外面贴了张标签:鸡蛋箱(扩展名)
PDF 箱子里面全是苹果,箱子外面也贴了标签:苹果箱(扩展名)
系统收到箱子先看标签,看到是鸡蛋箱,就扔给蒸蛋器处理,看到苹果箱,就扔给削皮器处理,如果看不到标签,就弹框问用户怎样处理
也就是说,箱子里面的东西(内容)和标签(扩展名)是独立的,后者只是方便系统快速识别,然后扔给对应的程序处理

如果你把你个鸡蛋箱贴上苹果标签,系统就会把这箱鸡蛋扔给削皮器,接着削皮器就会报错,因为它无法处理这个内容
如果你把鸡蛋箱的标签撕掉(无扩展名),然后把这个没标签的鸡蛋箱扔给蒸蛋器,蒸蛋器还是能够正确处理

所有人都明白除了楼主, 楼上讲的很通俗易懂了
点进来看了才发现, 固有思维是多么难纠正

git 为什么不能版本管理 doc , excel, ppt, 等文件呢?

你好,可以的。

这作者好像分不清 有没有权限、系统去不去执行、本身能不能执行、界面和系统?
我知道的是:两者都有执行权限设定、两者都能不管扩展名执行二进制( explorer 不能)、windows 执行脚本靠扩展名而非 shellbang

是的,我是把编译器也算作了应用程序。一个操作系统也可以不安装编译器。

那么这就是这个应用软件的行为呗,就让它没后缀呗。是使用起来遇到什么问题或者困惑了吗?

Windows 怎么做到不管扩展名执行二进制的?试了下去掉扩展名的情况下,cmd 提示两个不是,PowerShell 直接弹出打开方式了…… 然而打开方式没有作为二进制执行这种选项
或者忽略末端用户界面的话,可以用 CreateProcess ?
话说那个叫 shebang 吧
hash-bang = sh-bang = shebang

原来是 hash bang 啊,weblog 这种简称理解不能
任意扩展能,无扩展不能。可行:
$a=[System.Diagnostics.ProcessStartInfo]("test");
$a.UseShellExecute=$false;
[System.Diagnostics.Process]::Start($a);

要完整路径

英文母语者的思路问题,古人的 “不正” = “歪” 也差不多
确实可以,相对路径也行……
事 dotNetScript (

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服