在Mac OS X上的终端上合并命令


18

我想在终端机中的一行上写以下内容,或者如果有一种较短的方法来创建文件并设置权限,那么请发表评论。

sudo touch .htaccess
sudo chmod 766 .htaccess

非常感激

Answers:


31

如果第一个命令成功,请使用“ &&”有条件地运行第二个命令。

sudo touch .htaccess和&sudo chmod 766 .htaccess


2
&&之所以喜欢这种解决方案,有两个原因:1. 通常比;在第一个命令失败时停止运行更好; 2.仅使用来运行所需的特定程序sudo,而不是尝试将它们组合为单个sudo调用并运行,通常更好具有更高特权的更多代码超出了必要。
克里斯·佩奇

如果我想做,scp admin@host.com:file1 && scp admin@host.com:file2 && scp admin@host.com:file3并且我已经在SSH密钥上设置了密码,它一直在问我密码,有没有办法组合密码呢?
Akshay Khale,

2

不它不是。

您唯一可以做的是,可以将这两个命令合并在一个命令中sudo

sudo sh -c 'touch .htaccess && chmod 766 .htaccess'

另一种解决方案(仅一个外部调用,但也包含两个命令):

sudo sh -c 'umask 011 && touch .htaccess'

1
很好的建议,但是我会修改这些建议以&&代替;。另外,一般来说,我只使用两个sudo命令,因为以提升的特权而不是需要与它们一起运行的确切程序(在这种情况下,为touch和chmod)运行整个shell会显得过于杀伤和冒险。
克里斯·佩奇

是的,您是对的,这样会更好
Igor Chubin 2012年

1

分号使您可以在一行中容纳多个命令,如下所示:

sudo touch .htaccess; sudo chmod 766 .htaccess


1
这是一个很好的建议,尽管养成使用的习惯,&&而不是;在运行相互依赖的命令时养成一个好主意,以便在命令失败时停止运行。
克里斯·佩奇

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.