不知何故,在某些时候,我不小心在我的主目录中创建了一个名为'-s'的文件.它大约500 kb,我不知道它是否包含重要数据.我无法想办法对这个文件做任何事情,因为我用来尝试查看,复制或移动它的每个命令都会将文件名解释为参数.
我试过把它放在引号中,用反斜杠转义它,两者结合,似乎没什么用.
此外,当我第一次向我的同事提出这个问题时,我们一直困惑于此,直到有人最终无意中听到并问"你为什么不重命名?" 在我向他解释说cp和mv都认为文件名是一个参数所以它不起作用后,他说"不,不是从命令行,从Gnome做." 我羞怯地听从了他的建议,这很有效.但是,如果你没有窗口管理器并且命令行是唯一的选择,我仍然对你如何解决这个难题感兴趣.
当我运行一个bash脚本时,我看到一些对我没有意义的行为,该-e选项有多个命令与&&s 串在一起,其中一个失败.我希望脚本停止在失败的命令上并返回退出状态,但它只是愉快地执行脚本的其余部分.
以下是对我有意义的例子:
$ false && true; echo $?
1
$ bash -xe -c "false && true"; echo $?
+ false
1
$ bash -xe -c "false; true"; echo $?
+ false
1
Run Code Online (Sandbox Code Playgroud)
这是对我没有意义的那个:
$ bash -xe -c "false && true; true"; echo $?
+ false
+ true
0
Run Code Online (Sandbox Code Playgroud)
这是我不明白发生了什么的地方.false && true返回状态1所以脚本不应该停止执行并返回状态1,就像脚本一样false; true?
在进行实验的过程中,我发现如果用括号括起命令链,它会按照我的预期方式工作:
$ bash -xe -c "(false && true); true"; echo $?
+ false
1
Run Code Online (Sandbox Code Playgroud)
有人能解释一下吗?