我对shell命令很陌生,想知道是否有一种方法可以连接两个命令:Scenario->您使用ls命令检查目录,如果还没有,则使用mkdir命令连接ls。你能把这两个联系起来吗?我尝试了ls && mkdir感谢您的任何提示和任何帮助!我试着检查我的路径中是否有目录bar,如果没有,它应该创建一个命名的bar。命令应该看起来像这样:ls bar && mkdir bartho的输出是ls:未找到酒吧。很明显它还没有被创造出来。
1tu0hz3e1#
&&只在第一个命令不成功时执行第二个命令-参见this question。对于ls bar && mkdir bar命令,如果bar不存在,则ls bar将不成功,并且不会继续到mkdir bar。您可以使用ls bar || mkdir bar而不是&&来确保执行第二个命令,即使第一个命令没有成功完成。如果您不确定bar是否存在,则更好的选择是mkdir -p bar && ls bar。如果mkdir -p bar不存在,它将生成bar,如果bar已经存在,它将不会抛出错误(在this post中有更好的解释)。然后,在调用ls时,您知道目录已经存在,因此您确信ls将成功完成。如果文件夹中没有任何内容,您知道它是新创建的,如果有内容,您知道它已经存在。
&&
ls bar && mkdir bar
bar
ls bar
mkdir bar
ls bar || mkdir bar
mkdir -p bar && ls bar
mkdir -p bar
ls
1条答案
按热度按时间1tu0hz3e1#
&&
只在第一个命令不成功时执行第二个命令-参见this question。对于ls bar && mkdir bar
命令,如果bar
不存在,则ls bar
将不成功,并且不会继续到mkdir bar
。您可以使用
ls bar || mkdir bar
而不是&&
来确保执行第二个命令,即使第一个命令没有成功完成。如果您不确定
bar
是否存在,则更好的选择是mkdir -p bar && ls bar
。如果mkdir -p bar
不存在,它将生成bar
,如果bar
已经存在,它将不会抛出错误(在this post中有更好的解释)。然后,在调用ls
时,您知道目录已经存在,因此您确信ls
将成功完成。如果文件夹中没有任何内容,您知道它是新创建的,如果有内容,您知道它已经存在。