linux强制退出命令行_在Linux命令行上使用强制

linux强制退出命令行

在最近的历史上的某个时候,科幻家们于5月4日开始了年度庆祝星际大战的庆典,这是对绝地的祝福:“愿原力与你同在”。 尽管大多数Linux用户可能不是绝地武士,但他们仍然有使用武力的方法。 当然,如果尤达(Yoda)只是简单地告诉卢克(Luke)输入人X翼战斗机人用力量 ,这部电影可能不会那么令人兴奋。 或者,如果他说“ RTFM”(当然,请阅读《部队手册》)。

-f选项,您猜到了,它代表强制! 有时,当您执行命令时,它会失败或提示您进行其他输入。 这可能是为了保护您要更改的文件,或者是通知用户设备正忙或文件已存在。

如果您不想被提示打扰或不关心错误,请使用力量!

请注意,使用命令的force选项覆盖这些保护通常是破坏性的。 因此,用户需要密切注意并确保他们知道自己在做什么。 使用武力可能会造成后果!

以下是四个带有强制选项的Linux命令,并简要说明了如何以及为什么要使用它。

cp

cp命令是复制的简称-用于复制(或复制)文件或目录。 手册页cp的force选项描述为:


   
   
-f, --force
       if an existing destination file cannot be opened, remove it
       and try again

本示例适用于您使用只读文件的情况:


   
   
[alan@workstation ~]$ ls -l
total 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
Icy Planet

Green Planet

如果要将名为Hoth的文件复制到Naboo ,则由于Naboo是只读的,因此cp命令将不允许该文件:


   
   
[alan@workstation ~]$ cp Hoth Naboo
cp: cannot create regular file 'Naboo': Permission denied

但是通过使用强制, cp不会提示。 Hoth的内容和权限将立即复制到Naboo


   
   
[alan@workstation ~]$ cp -f Hoth Naboo
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet

Icy Planet

[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 12 May  1 12:32 Hoth
-rw-rw---- 1 alan alan 12 May  1 12:38 Naboo

不好了! 我希望他们在纳布(Naboo)有冬季装备。

ln

ln命令用于在文件之间建立链接。 手册页ln的force选项描述为:


   
   
-f, --force
       remove existing destination files

假设Leia公主正在维护Java应用程序服务器,并且她有一个存储所有Java版本的目录。 这是一个例子:


   
   
leia@workstation:/usr/lib/java$ ls -lt
total 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

如您所见,Java开发工具包(JDK)有多个版本,并且有一个指向最新版本的符号链接。 她使用带有以下命令的脚本来安装新的JDK版本。 但是,如果没有force选项,或者除非root用户运行它,否则它将无法工作:


   
   
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: failed to create symbolic link 'jdk/jdk1.8.0_181': File exists
leia@workstation:/usr/lib/java$ ls -lt
total 28
drwxr-x--- 2 leia leia 4096 May  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选项和另一个参数-n来强制ln正确更新链接。 因为链接指向目录,所以需要-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
total 28
lrwxrwxrwx 1 leia leia   12 May  1 16:13 jdk -> jdk1.8.0_181
drwxr-x--- 2 leia leia 4096 May  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,而不必在每次更新Java时都对其进行更改。

R M

rm命令是“ remove”(删除)的缩写(我们通常称为delete,因为某些其他操作系统对此操作使用了del命令)。 手册页rm的force选项描述为:


   
   
-f, --force
       ignore nonexistent files and arguments, never prompt

如果尝试删除只读文件,则rm会提示您:


   
   
[alan@workstation ~]$ ls -l
total 4
-r--r----- 1 alan alan 16 May  1 11:38 B-wing
[alan@workstation ~]$ rm B-wing
rm: remove write-protected regular file 'B-wing'?

您必须输入yn来回答提示,并允许rm命令继续。 如果使用force选项,则rm不会提示您,而是立即删除该文件:


   
   
[alan@workstation ~]$ rm -f B-wing
[alan@workstation ~]$ ls -l
total 0
[alan@workstation ~]$

rm中 ,force的最常见用法是删除目录。 -r (递归)选项告诉rm删除目录。 与force选项结合使用时,它将删除目录及其所有内容,而不会提示。

带有某些选项的rm命令可能是灾难性的。 多年来,在线论坛上充斥着用户完全擦除其系统的笑话和恐怖故事。 这个臭名昭著的用法是rm -rf * 。 这将立即删除所有文件和目录,而无论在何处使用都不会出现任何提示。

用户名

userdel命令是用户删除的缩写,它将删除用户。 手册页userdel的force选项描述为:


   
   
-f, --force
    This option forces the removal of the user account, even if the
    user is still logged in. It also forces userdel to remove the
    user's home directory and mail spool, even if another user uses
    the same home directory or if the mail spool is not owned by the
    specified user. If USERGROUPS_ENAB is defined to yes in
    /etc/login.defs and if a group exists with the same name as the
    deleted user, then this group will be removed, even if it is
    still the primary group of another user.

    Note: This option is dangerous and may leave your system in an
    inconsistent state.

当欧比旺到达穆斯塔法的城堡时,他知道该怎么做。 他必须删除Darth的用户帐户-但Darth仍已登录。


   
   
[root@workstation ~]# ps -fu darth
UID        PID  PPID  C STIME TTY          TIME CMD
darth     7663  7655  0 13:28 pts/3    00:00:00 -bash
[root@workstation ~]# userdel darth
userdel: user darth is currently used by process 7663

由于Darth当前已登录,因此Obi-Wan必须将force选项用于userdel 。 即使已登录,也会删除该用户帐户。


   
   
[root@workstation ~]# userdel -f darth
userdel: user darth is currently used by process 7663
[root@workstation ~]# finger darth
finger: darth: no such user.
[root@workstation ~]# ps -fu darth
error: user name does not exist

如您所见, fingerps命令确认用户Darth已被删除。

在Shell脚本中使用强制

许多其他命令具有强制选项。 在shell脚本中,强制使用非常有用。 由于我们在cron作业和其他自动化操作中使用脚本,因此避免出现任何提示至关重要,否则这些自动化过程将无法完成。

我希望我在上面分享的四个例子可以帮助您了解某些情况下可能需要使用武力。 在命令行或创建自动化脚本时,应该对force选项有深刻的了解。 滥用可能会造成毁灭性的影响,有时甚至会影响整个基础架构,而不仅仅是在一台机器上。

翻译自: https://opensource.com/article/19/5/may-the-force-linux

linux强制退出命令行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值