小编Mot*_*001的帖子

为什么 Bash 的源代码不需要执行位?

与 Bash 的 source可以在不设置执行位的情况下执行脚本。这是记录在案的预期行为,但这不是反对使用执行位吗?

我知道,这source不会创建子shell。

bash source permissions conventions executable

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

如何在远程 ssh 会话上使用 awk 打印特定列?

使用时

df -h | grep /dev/root | awk '{print $5}'
Run Code Online (Sandbox Code Playgroud)

我在我的 Pi 中使用了我的 SD 卡: 78%

但是当我使用

/usr/bin/ssh -i /path/to/key user@server "df -h | grep /dev/root | awk '{print $5}'"
Run Code Online (Sandbox Code Playgroud)

从另一台计算机,我得到:

/dev/root       7.2G  5.3G  1.6G  78% /
Run Code Online (Sandbox Code Playgroud)

完整df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.2G  5.3G  1.6G  78% /
devtmpfs        364M     0  364M   0% /dev
tmpfs           368M   68K  368M   1% /dev/shm
tmpfs           368M  5.2M  363M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           368M …
Run Code Online (Sandbox Code Playgroud)

ssh awk

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

为什么会显示 $PS3 的内容,即使 $PS3 是空的?

$ echo $PS1
$
$ echo $PS2
>
$ echo $PS3

$ echo $PS4
+
$ select i in 1 2 3
> do
> case $i in
> 1)
> echo 1
> ;;
> *)
> ;;
> esac
> done
1) 1
2) 2
3) 3
#? 1
1
$ PS3="##? "
$ select i in 1 2 3; do case $i in 1) echo 1; ;; *) ;; esac; done
1) 1
2) 2
3) 3 …
Run Code Online (Sandbox Code Playgroud)

bash prompt

9
推荐指数
2
解决办法
1258
查看次数

为什么更改 $PATH 会影响子 shell,而更改 $foo 不会?

$ unset foo
$ unset bar
$ echo $foo

$ echo $bar

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ foo=a
$ bar=b
$ export bar
$ echo $foo
a
$ echo $bar
b
$ PATH=
$ echo $PATH

$ /bin/bash
bash: lesspipe: No such file or directory
bash: dircolors: No such file or directory
bash: ls: No such file or directory
$ echo $foo

$ echo $bar
b
$ echo $PATH

$
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,更改$PATH会影响子shell,而另一个变量需要被export编辑。为什么?

shell path environment-variables variable

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

为什么在使用引号时显示单个反斜杠

我一直认为 bash 在不带或带双引号的情况下对反斜杠的处理方式相同,但我错了:

[user@linux ~]$ echo "foo \ "
foo \
[user@linux ~]$ echo foo \ # Space after \
foo
Run Code Online (Sandbox Code Playgroud)

所以我认为在使用双引号时总是会打印反斜杠,但是:

[user@linux ~]$ echo "foo \" "
foo "
[user@linux ~]$ echo "foo \\ "
foo \
Run Code Online (Sandbox Code Playgroud)

为什么显示第一行代码中的反斜杠?

bash echo escape-characters

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