如何在 Linux 中创建带有特殊字符的文件如何在 Linux 中创建带有特殊字符的文件如何在 Linux 中创建带有特殊字符的文件如何在 Linux 中创建带有特殊字符的文件
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中创建带有特殊字符的文件

我们经常遇到文件和文件夹名称。在大多数情况下,文件/文件夹名称与文件/文件夹的内容相关,并以数字和字符开头。

字母数字文件名非常常见并且使用非常广泛,但是当我们必须处理其中包含特殊字符的文件/文件夹名时,情况并非如此。

注意:我们可以拥有任何类型的文件,但为了简单和易于实现,我们将在整篇文章中处理文本文件 (.txt)。

Linux 中最常见的文件名

最常见的文件名示例有:

abc.txt
avi.txt
debian.txt
...

数字文件名的示例有:

121.txt
3221.txt
674659.txt
...

字母数字文件名的示例有:

eg84235.txt
3kf43nl2.txt
2323ddw.txt
...

具有特殊字符且不太常见的文件名示例:

#232.txt
#bkf.txt
#bjsd3469.txt
#121nkfd.txt
-2232.txt
-fbjdew.txt
-gi32kj.txt
--321.txt
--bk34.txt
...

这里最明显的问题之一是 – 到底是谁创建/处理具有哈希 (#)、分号 (;)、破折号 (-) 或任何其他特殊字符。

我同意你的观点,这样的文件名并不常见,但当你必须处理任何这样的文件名时,你的 shell 不应该中断/放弃。另外,从技术上讲,无论是文件夹、驱动程序还是其他任何东西,在 Linux 中都被视为文件。

Linux 中的虚线文件名

在 Linux 中,以破折号 ("-") 开头的文件名通常称为“破折号文件名”或“连字符文件名”。这些文件名有时会在使用它们时引起问题,因为前导破折号可能会被误解为选项或被命令行实用程序标记。

在 Linux 中创建虚线文件

要在 Linux 中使用短划线文件名,首先,使用 touch 命令创建一个以短划线 (-) 开头的文件,例如 -abx.txt。

touch -abc.txt

示例输出:

touch: invalid option -- 'b'
Try 'touch --help' for more information.

上述错误的原因是 shell 将破折号 (-) 之后的任何内容解释为选项,显然,没有这样的选项,因此出现错误。

为了解决这样的错误,我们必须告诉 bash shell 不要解释特殊字符(这里是破折号)之后的任何内容,作为一个选项。

有两种方法可以解决此错误:

touch -- -abc.txt		[Option #1]
touch ./-abc.txt		[Option #2]

您可以通过运行命令 ls 或 ls -l 进行长列表来验证通过上述两种方式创建的文件。

ls -l

total 0
.rw-rw-r-- tecmint tecmint   0 B  Tue Jun 20 10:32:43 2023 -abc.txt

在 Linux 中编辑虚线文件

要编辑带有破折号文件名的文件,您可以使用各种可用的文本编辑器。这是使用 Nano 文本编辑器的示例:

nano -- -abc.txt 
or 
nano ./-abc.txt 

您可以将 nano 替换为您选择的任何其他编辑器,例如,使用 vim 编辑器,如下所示:

vim -- -abc.txt 
or 
vim ./-abc.txt 

在 Linux 中重命名虚线文件

要重命名带有破折号的文件名,您可以使用 mv 命令,如下所示。

例如,要将名为“-abc.txt”的文件重命名为“-a.txt”,您可以使用:

mv -- -abc.txt -a.txt
OR
mv ./-abc.txt ./-a.txt

在Linux中删除虚线文件

要删除文件名带有破折号的文件,可以使用 rm 命令,如下所示。

rm -- -abc.txt
OR
rm ./-abc.txt 

如果您的文件夹中有很多文件且其名称中包含破折号,并且您想要一次删除所有文件,请执行以下操作:

rm ./-*

对于文件名中任意数量的连字符及其出现次数,遵循与上述相同的规则。即-a-b-c.txt、ab-c.txt、abc-.txt等。

对于具有任意数量连字符及其出现次数的文件夹名称,遵循与上述相同的规则,但要删除文件夹,您必须使用“rm -rf”,如下所示:

rm -rf -- -abc
or
rm -rf ./-abc

Linux 中的哈希文件名

在 Linux 中,"#" 字符在文件名中不受限制或保留用于任何特定用途。您可以像文件名中的任何其他字母数字字符一样使用 "#" 字符。

但是,值得一提的是,一些特殊字符(包括 "#")在某些上下文中或与特定命令或实用程序一起使用时具有特殊含义。

例如,"#" 字符通常在 shell 脚本中用于指示注释。如果您正在编写 shell 脚本并希望在文件名中包含 "#" 字符,建议正确转义或引用文件名,以避免任何意外解释为注释。

在 Linux 中创建哈希文件

以下是创建文件名中包含 "#" 字符的文件的示例:

touch #abc.txt

示例输出:

touch: missing file operand
Try 'touch --help' for more information.

上述错误的原因是 bash 将 #abc.txt 解释为注释,因此忽略它。因此,触摸命令已在没有任何文件操作数的情况下传递,因此出现错误。

要解决此类错误,您可以要求 bash 不要将 # 解释为注释。

touch ./#abc.txt
or
touch '#abc.txt'

并验证刚刚创建的文件为:

ls -l

.rw-rw-r-- tecmint tecmint 0 B Tue Jun 20 11:11:00 2023 #abc.txt

现在创建一个文件,其名称在除开头以外的任何位置都包含 # 。

touch ./a#bc.txt
touch ./abc#.txt

or
touch 'a#bc.txt'
touch 'abc#.txt'

当您同时创建两个文件(例如 a 和 #bc)时会发生什么:

touch a.txt #bc.txt

显然,从上面的示例来看,它只创建了文件“a”,而文件“#bc”已被忽略。为了成功执行上述情况,我们可以这样做,

touch a.txt ./#bc.txt
or
touch a.txt '#bc.txt'

最后,使用 ls 命令验证刚刚创建的文件。

ls -l

在 Linux 中重命名或复制哈希文件

要重命名哈希文件,您可以使用 mv 命令,如下所示。

mv ./#bc.txt ./#cd.txt
or
mv '#bc.txt' '#cd.txt'

要复制哈希文件,您可以使用 cp 命令,如下所示。

cp ./#cd.txt ./#de.txt
or
cp '#cd.txt' '#de.txt'

在 Linux 中编辑或删除哈希文件

要编辑哈希文件,您可以使用 nano 或 vim 编辑器,如图所示。

vi ./#cd.txt
or
vi '#cd.txt'
nano ./#cd.txt
or
nano '#cd.txt'

要删除哈希文件,您可以使用 rm 命令,如图所示。

rm ./#bc.txt 
or
rm '#bc.txt'

要删除文件名中包含哈希(#)的所有文件,您可以使用:

rm ./#*

Linux 中的分号文件名

如果您不知道,分号在 BASH 以及其他 shell 中充当命令分隔符。分号可让您一次性执行多个命令并充当分隔符。您是否处理过其中包含分号的文件名?如果不在这里,你会的。

创建一个其中包含分号的文件。

touch ;abc.txt

示例输出:

touch: missing file operand
Try 'touch --help' for more information.
bash: abc.txt: command not found

出现上述错误的原因是,当你运行上述命令时,BASH将touch解释为命令,但在分号之前找不到任何文件操作数,因此报错。

它还报告另一个错误,即未找到“abc.txt”命令,只是因为在分号BASH之后需要另一个命令,而“abc.txt” ',不是一个命令。

要解决此类错误,请告诉 BASH 不要将分号解释为命令分隔符,如下所示:

touch ./';abc.txt'
or
touch ';abc.txt'

注意:我们用单引号 '' 将文件名括起来。它告诉 BASH ; 是文件名的一部分,而不是命令分隔符。

对名称中带有分号的文件和文件夹的其余操作(即复制、移动、删除)可以通过将名称括在单引号中直接执行。

Linux 中文件名中的特殊字符

在 Linux 中,文件名可以包含大多数特殊字符,包括空格、点、破折号、下划线,甚至是 @、!、$ 等符号和%。

以下是特殊字符的列表,在文件名中使用它们时应谨慎使用或考虑转义:

文件名中的加号 (+)

要在 Linux 中创建加号 (+) 文件,您可以使用 touch 命令以及用单引号括起来的文件名。


touch '+ravi.txt' 

文件名中的美元符号 ($)

要在 Linux 中创建美元符号 ($) 文件,您可以使用 touch 命令以及用单引号括起来的文件名。


touch '$ravi.txt' 

文件名中的百分比 (%)

要在 Linux 中创建百分号 (%) 文件,您可以使用。


touch '%ravi.txt' 

文件名中的星号 (*)

要在 Linux 中创建星号符号 (*) 文件,您可以使用。

touch '*ravi.txt' 

注意:当您必须删除以*开头的文件时,切勿使用以下命令删除此类文件。

rm *
or
rm -rf *

相反,使用,

rm ./*.txt

文件名中的感叹号 (!)

只需将文件名括在单引号中即可,其余内容相同。

touch '!ravi.txt'

文件名中的符号 (@)

没有什么额外的,将带有 @ 符号的文件名视为普通文件。

touch '@ravi.txt'

文件名中的插入符号 (^)

无需额外注意,将文件名中包含 ^ 的文件作为普通文件使用。

touch '^ravi.txt'

文件名中的与号 (&)

文件名应该用单引号括起来,您就可以开始了。

touch '&ravi.txt'

文件名中的括号()

如果文件名有括号,则需要用单引号将文件名括起来。

touch '(ravi.txt)'

文件名中的大括号 ({})

无需额外护理。只需将其视为另一个文件即可。

touch {ravi.txt}

文件名中的 V 形符号 (<>)

具有 V 形符号的文件名必须用单引号引起来。

touch '<ravi.txt>'

文件名中的方括号 ([])

将带有方括号的文件名视为普通文件,无需额外处理。

touch [ravi.txt]

文件名中的分数 (_) 下

它们很常见,不需要任何额外的东西。只需执行对普通文件所做的操作即可。

touch _ravi.txt

文件名中的等于 (=)

有等号不会改变任何东西,您可以将其用作普通文件。

touch =ravi.txt

文件名中的反斜杠 (\)

反斜杠告诉 shell 忽略下一个字符。您必须将文件名括在单引号中,就像我们在分号的情况下所做的那样。其余的事情都很简单。

touch '\ravi.txt'

在文件名中转发 (\)

在您的文件系统出现错误之前,您无法创建名称中包含正斜杠 (/) 的文件。没有办法逃避正斜杠。

因此,如果您可以创建诸如 '/ravi.txt' 或 'b/c.txt' 之类的文件,那么您的文件系统可能有错误,或者您有 Unicode 支持,它允许您创建带有正斜杠的文件。在这种情况下,正斜杠不是真正的正斜杠,而是看起来像正斜杠的 Unicode 字符。

文件名中的问号 (?)

同样,这是一个您不需要进行任何特殊尝试的示例。可以用最通用的方式处理带有问号的文件名。

touch '?ravi.txt'

文件名中的点号 (.)

以点 (.) 开头的文件在 Linux 中非常特殊,称为点文件。它们是隐藏文件,通常是配置文件或系统文件。您必须使用开关“-a”或“-A”与ls 命令来查看此类文件。

创建、编辑、重命名和删除此类文件非常简单。

touch '.ravi.txt'

注意:在 Linux 中,文件名中可以包含任意数量的点 (.)。与文件中的其他系统点不同,名称并不意味着分隔名称和扩展名。您可以创建一个具有多个点的文件,如下所示:

touch 1.2.3.4.5.6.7.8.9.10.txt

并将其检查为:

ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 14:32 1.2.3.4.5.6.7.8.9.10.txt

文件名中的逗号 (,)

您可以在文件名中包含逗号,只要您想要,就可以有多个逗号,并且不需要任何额外的内容。只需按照正常方式进行即可,如简单的文件名。

touch ',ravi.txt'
or
touch ',ravi,.txt'

文件名中的冒号 (:)

您可以在文件名中包含冒号,只要您想要的数量,并且不需要任何额外的内容。只需按照正常方式进行即可,如简单的文件名。

touch :12.txt
or
touch ':ravi:.txt'

文件名中的双引号 (“”)

要在文件名中包含引号,我们必须使用交换规则。即,如果您需要在文件名中使用单引号,请用双引号将文件名括起来;如果您需要在文件名中使用双引号,请用单引号将其括起来。

touch "15'.txt"

and

touch 'ravi”.txt'

文件名中的波形符 (~)

Linux 中的一些编辑器(例如 emacs)会创建正在编辑的文件的备份文件。备份文件具有原始文件的名称以及文件名末尾的波形符。您可以在任何位置创建一个名称包含波形符的文件,如下所示:

touch '~ravi.txt'
or
$touch 'anusha~.txt'

文件名中的空格

创建一个名称在字符/单词之间有空格的文件,说“嗨,我的名字是 ravi.txt”。

文件名中带有空格并不是一个好主意,如果您必须使用不同的可读名称,则应该使用下划线或破折号。但是,如果您必须创建这样的文件,则必须使用反斜杠来忽略它的下一个字符。要创建上述文件,我们必须这样做。

touch hi\ my\ name\ is\ ravi.txt

hi my name is ravi.txt

我已经尝试涵盖您可能遇到的所有场景。上述大多数实现都是明确针对 BASH Shell 的,可能无法在其他 shell 中工作。

如果您觉得我错过了一些东西(这是非常常见和人性的),您可以在下面的评论中提出您的建议。保持联系,并继续发表评论。敬请关注并保持联系!喜欢并分享我们并帮助我们传播!

©2015-2025 艾丽卡 support@alaica.com