UNIX/Linux中的别名是一个快捷方式,可让您创建自定义命令或修改现有命令的行为方式。通过使用Alias命令,您可以缩写一个长命令,或默认情况下将选项添加到命令中,从而使其更容易或更安全。
但是,在使用别名时,您必须谨慎,尤其是当它们改变RM等强大命令的行为时,避免养成不良习惯或在不同系统上遇到意外行为。
在本简短的教程中,我们将了解为什么将RM与RM -RM -I -I是一个不好的做法。我们还将了解与Linux中RM命令的最佳实践和更安全的替代方案。
目录
当您在UNIX/Linux系统上使用命令RM时,它立即永久删除文件。这是一个强大的命令,必须仔细地使用,以避免意外删除重要文件。
有些人为RM创建一个别名,例如Alias RM =“ RM -I”,以使其更安全。此别名更改RM命令,以在删除任何内容之前始终要求确认。
让我向您展示一个例子,以便您可以更好地理解它。
无别名的RM的示例:
$ rm exigants-file.txt
此命令将立即删除重要file.txt,而无需询问您是否确定。如果您制作错别字或改变主意,这很快但是有风险。
带别名(RM -I)的RM的示例:
$ rm exigants-file.txt
使用别名,此命令现在问:“删除常规文件'featign-file.txt'?”您必须输入y(是)才能删除它或n(否)才能取消。感觉更安全,因为它添加了仔细检查您的决定的步骤。
别名rm ='rm -i'非常危险,因为;
原因1-不良习惯
如果您始终习惯RM命令要求确认,那么您可能会在删除哪些文件时仔细检查一下。
有一天,如果您使用没有该别名集的用户帐户,RM可能会立即删除文件。当您意识到发生了什么事时,可能为时已晚。
这种习惯在没有此别名的情况下也可能是危险的,因为RM会立即删除文件,而无需任何确认。
原因2-行为不一致
如果您使用不同的计算机或系统(例如Office计算机,服务器或朋友的笔记本电脑),则RM命令可能不会有相同的别名。
这种不一致会导致错误,您希望在其中要求确认,但没有意外删除重要的东西。
原因3-脚本和自动化问题
使用RM的脚本也将受到别名的影响。如果脚本期望删除文件而未确认,则该别名可能会导致其卡住,等待响应。这会破坏自动化并引起混乱。
与其依靠别名为安全,不如练习仔细的命令使用。这里有一些提示:
您可以使用以下任何一个更安全的替代方案,而不是将默认RM命令列为RM -I。
如果要为RM命令创建自定义别名,请完全使用一个不同的名称,例如RMI或RMCLI或MYRM。
例如,我将创建一个名为RMI的别名。
$ nano〜/.bashrc
最后添加以下行:
别名rmi ='rm -i'
保存文件并关闭。
从现在开始,您应该使用RMI命令来删除文件,而不是默认的“ RM”。
$ rmi somefile.txt
如果您真的想删除文件,您将被提示。
RM:删除常规文件“ somefile.txt”?
按“ y”确认文件删除或按“ n”跳过。
创建一个单独的别名,例如Alias rmi ='rm -i'确实是一种更安全,更有效的方法,而不是覆盖RM命令的默认行为。
此方法使您可以在不改变RM的基本行为的情况下具有交互式删除选项,从而降低了由于对别名的过度依赖而导致意外删除的风险。
使用别名rmi ='rm -i'的好处:
这就是为什么此替代方案对更安全的文件删除有益的原因:
在上一个示例中,我们创建了一个名为“ RMI”的自定义命令,该命令在删除文件之前提示确认。另外,您可以编写一个小脚本,其中包括记录并将文件移至垃圾目录以进行以后的审查或恢复。
2.1。创建脚本
创建一个称为RMCLI的文本文件,其中包含以下内容:
#!/bin/bash #rmcli:更安全的文件删除脚本 trash_dir =“ $ home/.trash” log_file =“ $ home/.rmcli.log” #确保存在垃圾目录 mkdir -p“ $ trash_dir” #将文件移至垃圾而不是删除 用于“ $@”中的文件;做 时间戳= $(日期%y-%m-%d_%h-%m-%s) trash_path =“ $ trash_dir/$(basename“ $ file”)_ $ timestamp” MV -V“ $ file”“ $ trash_path” echo“ [$ timestamp] $ file-> $ trash_path” >>“ $ log_file” 完毕
请随时根据您的需求修改脚本,例如更改垃圾目录位置或日志文件格式。保存文件并关闭。
2.2。使脚本可执行:
保存脚本后,您需要使其可执行。这使您可以将其作为命令运行。为此,请使用CHMOD命令:
$ chmod x rmcli
2.3。将脚本移至路径中的位置:
为了方便起见,您应该将脚本移至系统路径中的位置,以便可以从任何目录运行它。个人脚本的一个常见位置是/usr/local/bin:
$ SUDO MV RMCLI/USR/local/bin
2.4。使用脚本:
现在,您可以像使用RM一样使用RMCLI命令,但具有脚本的安全功能。
例如:
$ rmcli somefile.txt
此命令将把somefile.txt移至垃圾目录,而不是永久删除它。
样本输出:
重命名为“ somefile.txt” - >'/home/ostechnix/.trash/somefile.txt_2024-02-28_16-53-59'
您可以通过列出〜/.trash目录的内容来验证它。
$ ls〜/.trash
2.5。恢复文件:
要恢复文件,请导航到垃圾目录(示例中的〜/。trash),然后根据需要将文件移回其原始位置或其他位置。
$ cd〜/.trash
$ mv somefile.txt_2024-02-28_16-53-59〜/somefile.txt
2.6。记录:
该脚本用时间戳登录每个“删除”。确保脚本中指定的日志文件位置存在或可写。您可以查看此日志,以查看哪些文件已移至垃圾桶。
$ cat $ home/.rmcli.log [2024-02-28_16-53-59] somefile.txt-> /home/ostechnix/.trash/somefile.txt_2024-02-28_16-53-59
RM的另一个更安全的替代方法是使用命令行垃圾桶罐,例如Trash-Cli ,它将文件移至垃圾目录而不是永久删除它们。如果需要,这允许恢复文件。
要知道如何安装和使用垃圾CLI,请检查以下链接:
垃圾场:命令行垃圾桶,用于Unix式系统
使用支持无限快照的文件系统,例如BTRF (B-TREE文件系统)或ZFS (Zettabyte文件系统),是维护因意外文件删除或覆盖而保护的绝佳策略。
快照本质上是在特定时间点上的文件系统的仅读取副本,但在时空上都高效,因为它们仅存储与以前的快照的差异。
如何在OpenSuse中使用快照器创建和管理BTRFS快照
虽然将RM降低到RM-我似乎是一个很好的安全措施,但它可能会导致没有设定别名的环境中的过度自信和错误。
通过采用这些技巧和最佳实践,您可以通过UNIX/Linux系统上的RM命令显着降低与意外文件删除相关的风险。
相关阅读:
以上是为什么在Linux中混为rm命令是一种不良习惯的详细内容。更多信息请关注PHP中文网其他相关文章!