小编cru*_*ore的帖子

如何处理以连字符( - )字符开头的文件名?

不知何故,在某些时候,我不小心在我的主目录中创建了一个名为'-s'的文件.它大约500 kb,我不知道它是否包含重要数据.我无法想办法对这个文件做任何事情,因为我用来尝试查看,复制或移动它的每个命令都会将文件名解释为参数.

我试过把它放在引号中,用反斜杠转义它,两者结合,似乎没什么用.

此外,当我第一次向我的同事提出这个问题时,我们一直困惑于此,直到有人最终无意中听到并问"你为什么不重命名?" 在我向他解释说cp和mv都认为文件名是一个参数所以它不起作用后,他说"不,不是从命令行,从Gnome做." 我羞怯地听从了他的建议,这很有效.但是,如果你没有窗口管理器并且命令行是唯一的选择,我仍然对你如何解决这个难题感兴趣.

linux bash

43
推荐指数
2
解决办法
2万
查看次数

为什么bash不会因短路命令序列中的故障而停止错误?

当我运行一个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)

有人能解释一下吗?

linux bash shell short-circuiting

5
推荐指数
2
解决办法
624
查看次数

标签 统计

bash ×2

linux ×2

shell ×1

short-circuiting ×1