小编joH*_*oH1的帖子

如何对“test”的两个表达式进行异或?

我需要检查一个目录(我们称之为dir)是否包含两个文件之一(我们称之为fileafileb),但既不包含一个文件,也不包含两个文件。

理想的解决方案是在谓词之间使用 XOR 运算:

if [ -f dir/filea ] ^ [ -f dir/fileb]
then
    echo Structure ok
    # do stuff
fi
Run Code Online (Sandbox Code Playgroud)

然而,shell 不支持^作为 XOR 运算符,并且该[命令没有选项-X--xor像它那样具有-aand -o...使用否定相等也不起作用:

if ! [ -f dir/filea -eq -f dir/fileb ]
# or
if ! [ -f dir/filea = -f dir/fileb ]
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以实现这一点,而不需要求助于像这样的成熟的 AND/OR 表达式

if { [ -f dir/filea ] || [ -f dir/fileb ]; } && ! …
Run Code Online (Sandbox Code Playgroud)

shell filenames test

12
推荐指数
3
解决办法
4660
查看次数

如何确定我使用的是哪种 Ubuntu 风格?

我在Xubuntu(16.04,顺便说一句)但是lsb_release -a给了我:

user@host:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:    16.04
Codename:   xenial
Run Code Online (Sandbox Code Playgroud)

它应该显示Xubuntu,还是合法的输出?
如果是,我如何(通过 CLI)知道我使用的确切 Ubuntu 发行版?

No LSB modules are available.无论如何,警告是什么意思?
(它输出到stderr

user@host:~$ lsb_release -a >/dev/null
No LSB modules are available.
Run Code Online (Sandbox Code Playgroud)

所以我猜在名义上它不应该在那里)

command-line xubuntu distributions lsb-release

6
推荐指数
2
解决办法
5405
查看次数

`chmod -R ugo+rwx /` 比 `chmod -R 777 /` 安全吗?

在这里读到这chmod -R 777 /是一个非常糟糕的主意,因为它会覆盖文件的权限,并删除粘性位setgid和其他内容。
但是,我认为这chmod -R ugo+rwx /不会覆盖权限而是添加它们,如果没有的话,它会比前面提到的命令安全得多。
我对吗?或者这些命令基本相同并且都会破坏我的系统?

我不打算这样做,只是要求一般文化。

permissions chmod

5
推荐指数
1
解决办法
1万
查看次数

如何在 Python 中找到系统语言?

在 Python 3 中,有没有办法找出系统使用的语言?
即使是一个棘手的一个,虽然,这样的:从文件中读取偷偷摸摸目录,并找到字符串'ENG''FRE'文件的内容中...

system-information locale python3

4
推荐指数
1
解决办法
3421
查看次数

用字符而不是位置提取子串

我最近进入了 nautilus 脚本,对于我正在编写的脚本,我需要从文件名中提取一个子字符串。我的问题是我找到了大量的方法来根据字符的位置提取子字符串,而不是关于如何在我的字符串中查找给定字符并从该字符提取子字符串或从该字符提取子字符串的方法。

cut -f1 -d "delimiter"
Run Code Online (Sandbox Code Playgroud)

有效,但cut只接受 1 个字符的分隔符。

也许awkexpr

编辑:
我正在用 bash 编写,例如我希望有一个名称为的文件

Any.Series.S01E01.VOSTFR.@whatever.com.avi
Run Code Online (Sandbox Code Playgroud)

简单地重命名为

Any Series S01 E01 VOSTFR.avi
Run Code Online (Sandbox Code Playgroud)

string shell-script

1
推荐指数
1
解决办法
3351
查看次数