在Linux命令行下使用“原力”

发布者:上海IT外包来源:http://www.lanmon.net点击数:1313

就像绝地武士的力量一样,-f参数非常强大,并且伴随着潜在的破坏性,当你可以很好地使用它时很方便。
近年来,科幻爱好者已经开始每年5月4日庆祝星球大战。口号是绝地武士的问候。 “May Force Force和你在一起。”虽然大多数Linux用户可能不是Jedi Knights,但我们仍然可以使用Force Force。当然,如果尤达大师刚问天行者卢克进入什么“男子X翼战斗机”,“男子军队”,或RTFM(阅读原版手册,那一定是正确的事),那么电影绝对不是做什么的你的意思是? (LCTT翻译:RTFM是“Read The Fucking Manual”的缩写——阅读该死的手册)。
许多Linux命令都有-f选项,这意味着你现在就知道了,原始强制(LCTT):force选项最初是为了“强制”!很多时候,您尝试执行命令然后失败,或者提示您添加更多选项。通常这是为了保护您尝试更改的文件,或者告诉用户设备正忙或该文件已存在。
如果您不想被这些提醒困扰或者根本不关心,请使用Force!
但要小心,通常使用Force选项是毁灭性的。所以用户必须特别注意!并确保你知道你在做什么!凭借原始力量,我们必须承担后果!
以下是常见Linux命令及其效果的常用力选项,以及常见的使用方案。
CP
Cp是“copy”的缩写,它是用于复制文件或目录的命令。它的手册页说:
-f,-force
如果无法打开现有目标文件,请将其删除并重试
您可以使用它来处理只读状态的文件:
[alan @ workstation~] $ ls -l
总计8
-rw-rw ---- 1 alan alan 13 May 1 12: 24 Hoth
-r  -  r ----- 1 alan alan 14 May 1 12: 23 Naboo
[alan @ workstation~] $ cat Hoth Naboo冰冷的星球
绿色星球
如果要将名为Hoth的文件复制到Naboo,但由于Naboo当前是只读的,cp命令将不会执行:
[alan @ workstation~] $ cp Hoth Naboo
Cp:无法创建常规文件'Naboo':权限被拒绝
但是,通过使用Force,将强制执行cp。 Hoth的内容和文件权限直接复制到Naboo:
[alan @ workstation~] $ cp -f Hoth Naboo
[alan @ workstation~] $ cat Hoth Naboo
冰冷的星球
冰冷的星球
[alan @ workstation~] $ ls -l
总计8
-rw-rw ---- 1 alan alan 12月1日12: 32 Hoth
-rw-rw ---- 1 alan alan 12月1日12: 38 Naboo
LN
ln命令用于在文件之间建立链接。手册页中描述的人力选项如下:
-f,-force
删除现有文件
假设Leia公主正在维护Java应用程序服务器,并且她有另一个包含所有Java版本的目录,例如:
Leia @ workstation:/usr/lib/java $ ls -lt
总计28
Lrwxrwxrwx 1 leia leia 12 Mar 5 2018 jdk  - >
Jdk1.8.0_162
Drwxr-xr-x 8 leia leia 4096 Mar 5 2018 jdk1.8.0_162
Drwxr-xr-x 8 leia leia 4096 Aug 28 2017 jdk1.8.0_144
如您所见,JDK有许多版本,并且是最新版本JDK的符号链接。然后,她使用脚本安装最新版本的JDK。但是如果没有Force选项,以下命令将无法成功:
Tar xvzmf jdk1.8.0_181.tar.gz -C jdk1.8.0_181 /
Ln -vs jdk1.8.0_181 jdk
tar命令会将.gz文件解压缩到特定目标目录,但ln命令将失败,因为该链接已存在。结果是符号链接没有指向最新版本的JDK:Leia @ workstation:/usr/lib/java $ ln -vs jdk1.8.0_181 jdk
Ln:无法创建符号链接'jdk/jdk1.8.0_181':文件存在
Leia @ workstation:/usr/lib/java $ ls -lt
总计28
Drwxr-x --- 2 leia leia 4096 5月1 15: 44 jdk1.8.0_181
Lrwxrwxrwx 1 leia leia 12 Mar 5 2018 jdk  - >
Jdk1.8.0_162
Drwxr-xr-x 8 leia leia 4096 Mar 5 2018 jdk1.8.0_162
Drwxr-xr-x 8 leia leia 4096 Aug 28 2017 jdk1.8.0_144
她可以使用Force选项强制ln更新链接,但是在这里她还需要使用-n,-n因为在这种情况下链接实际指向目录而不是文件。在这种情况下,链接将正确指向最新版本的JDK。
Leia @ workstation:/usr/lib/java $ ln -vsnf jdk1.8.0_181 jdk
'jdk' - >
'jdk1.8.0_181'
Leia @ workstation:/usr/lib/java $ ls -lt
总计28
Lrwxrwxrwx 1 leia leia 12月1日16: 13 jdk  - >
Jdk1.8.0_181
Drwxr-x --- 2 leia leia 4096 5月1 15: 44 jdk1.8.0_181
Drwxr-xr-x 8 leia leia 4096 Mar 5 2018 jdk1.8.0_162
Drwxr-xr-x 8 leia leia 4096 Aug 28 2017 jdk1.8.0_144
您可以将Java应用程序配置为始终在/usr/lib/java/jdk中使用JDK,而不是每次升级时都更新它。
R M
rm命令是“remove”的缩写(也称为delete,因为某些系统del命令执行相同的操作)。其手册页描述了Force选项,如下所示:-f,-force
忽略不存在的文件或参数,不要向用户确认
如果您尝试删除只读文件,rm将要求用户进行确认:
[alan @ workstation~] $ ls -l
总计4
-r  -  r ----- 1 alan alan 16 May 1 11: 38 B翼
[alan @ workstation~] $ rm B翼
Rm:删除写保护的常规文件'B-wing'?
您必须输入y或n才能回答确认,以便rm命令继续。如果您使用强制选项,则rm将不会寻求您的确认并直接删除该文件:
[alan @ workstation~] $ rm -f B翼
[alan @ workstation~] $ ls -l
总计0
[alan @ workstation~] $
rm force选项的最常见用法是删除目录。 -r(递归)选项导致rm删除目录。与Force选项结合使用时,它会删除文件夹及其内容,而无需用户确认。
rm命令和一些选项的组合是致命的,互联网上有关于滥用rm删除整个系统的笑话和鬼故事。例如,最着名的无意执行rm -rf将直接删除目录和文件(无用户确认)。 (LCTT注释:我真的做了校对漂移~~请在返回确认之前按下并确认:我是谁,我在哪里,我在做什么?)
则userdel
userdel命令用于删除用户。它的手册页描述了它的原始力选项,如下所示:
-f,-force
即使用户当前已登录,此选项也会强制删除用户。它还会强制删除用户的目录和邮件存储,即使用户目录由其他人共享或邮件存储不属于该用户。如果USERGROUPS_ENAB在/etc/login.defs中为yes,并且具有与此用户同名的组,则该组也将被删除,即使该组仍与另一个用户的主用户组相同。
注意:此选项存在风险,可能会使系统处于不稳定状态。
当欧比万到达穆斯塔法时,他知道自己的使命。他需要删除Das Vader的用户帐户——,而Das仍然在里面。
[root @ workstation~] #ps -fu darthUID PID PPID C STIME TTY TIME CMD
Darth 7663 7655 0 13: 28 pts/3 00: 00: 00 -bash
[root @ workstation~] #userdel darth
Userdel:用户darth当前由进程7663使用
由于Das仍在系统中,因此Obi-Wan需要使用Force选项来操作userdel。这可以强制删除当前登录的用户。
[root @ workstation~] #userdel -f darth
Userdel:用户darth当前由进程7663使用
[root @ workstation~]#finger darth
手指: darth:没有这样的用户。
[root @ workstation~] #ps -fu darth
错误:用户名不存在
正如我们所见,finger和ps命令让我们确认Das已被删除。
在shell脚本中使用Force
许多命令都有一个Force选项,它们在shell脚本中特别有用。因为我们经常使用脚本来执行常规或自动化任务,所以避免用户输入很关键,否则无法完成自动化任务。
我希望上面的例子可以帮助你理解你需要使用Force的一些情况。在命令行上使用Force或将其写入脚本之前,您应该完全了解它们的角色。滥用部队具有破坏性后果——通常是整个系统,甚至不限于一个设备。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部