为什么创建的文件带有 ~ 符号?
通过删除 ~ 符号文件是否会影响原始文件?
我的文件:(通过linux命令ls获取)
DG_Item122 DG_Item147 DG_Item175 DG_Item200 DG_Item226 DG_Item249~ DG_Item271~ DG_Item293~ DG_Item314~ DG_Item49 DG_Item80
DG_Item122~ DG_Item148 DG_Item175~ DG_Item200~ DG_Item226~ DG_Item25 DG_Item272 DG_Item294 DG_Item315 DG_Item5 DG_Item80~
我的预期输出:
要打印的文件不带波形符。
答案1
当使用某些文本编辑器编辑文件时,编辑器可能会保存一个备份带有后缀的文件~
。其他编辑器可能使用其他后缀,但~
它是迄今为止 Unix 上最常用的备份后缀。
如果您觉得不再需要备份,您可以删除这些文件:
$ rm *~
如果您希望保留备份文件,但不想在 的输出中看到它们ls
,那么您可以使用
$ ls -B
或者
$ ls --ignore-backups
(这是同一件事)。这些标志将ls
忽略与 shell 文件名通配模式特别匹配的文件*~
(因为它是常见的备份后缀)。要隐藏任何其他文件的列表,请使用eg --hide='*.bak'
(这将隐藏任何带有.bak
后缀的文件)。-B
和标志--ignore-backups
可以被视为 的简写--hide='*~'
。
-B
为了避免每次都键入,您可以将以下内容添加到~/.bashrc
文件中:
function ls {
command ls --ignore-backups "$@"
}
这将有效地用 shell 函数“替换”该命令,该函数调用添加了标志ls
的 real 。ls
--ignore-backups
您可以添加别名来代替 shell 函数:
alias ls='command ls -B "$@"'
...如果您认为这样看起来更整洁。
注意:-B
/--ignore-backups
选项以及--hide
是GNU coreutils 包实现ls
中可用的GNU 扩展ls
,但这很可能已经安装在您的 Linux 计算机上。
至于别名与 shell 函数,bash
手册中包含短语
对于几乎所有用途,别名都被 shell 函数取代。
答案2
这些文件通常是由某些文本编辑器创建的,这意味着它们是原始文件的备份。
如果您不想在以下情况下看到这些文件ls
:
ls | grep -v '~$'
或使用 GNU ls
:
ls --hide='*~'
如果你想删除它们:
rm ./*~
删除它们不会影响您的原始文件(末尾没有 ~ 的文件)