小编onl*_*one的帖子

如何解析 ssh 远程命令行参数

我已经看到了关于需要对远程 ssh 命令的参数进行双重转义的问题和答案。我的问题是:第二次解析究竟在何时何地完成?

如果我运行以下命令:

$ ssh otherhost pstree -a -p
Run Code Online (Sandbox Code Playgroud)

我在输出中看到以下内容:

  |-sshd,3736
  |   `-sshd,1102
  |       `-sshd,1109
  |           `-pstree,1112 -a -p
Run Code Online (Sandbox Code Playgroud)

远程命令 ( pstree)的父进程是sshd,那里似乎没有任何外壳程序可以解析远程命令的命令行参数,因此似乎不需要双引号或转义(但它绝对是)。相反,如果我先在那里 ssh 并获得登录 shell,然后运行,pstree -a -p我会在输出中看到以下内容:

  ??sshd,3736
  ?   ??sshd,3733
  ?       ??sshd,3735
  ?           ??bash,3737
  ?               ??pstree,4130 -a -p
Run Code Online (Sandbox Code Playgroud)

很明显,那里有一个bashshell 可以在这种情况下进行命令行解析。但是我直接使用远程命令的情况,好像没有shell,那为什么还要双引号呢?

shell bash process ssh quoting

14
推荐指数
2
解决办法
2567
查看次数

有没有办法跟踪 bash 执行的所有进程

我希望能够统计我通过 bash 运行最多的程序。有没有办法在 bash 中插入某种钩子,以便它记录它执行的所有内容?

请注意,仅查看 bash 历史文件还不够。我可以从历史记录的每一行中打印出第一个标记,但这不会获得管道和进程替换。我想要以下内容:

$ ls /usr/bin/* | fgrep $(echo grep)
Run Code Online (Sandbox Code Playgroud)

记录lsfgrep、 和echo分别运行一次。以及以下内容:

$ for file in /usr/bin/*; do stat $file; echo $file; done
Run Code Online (Sandbox Code Playgroud)

应注意statecho运行。由于for是 bash 流程控制语句,因此不会被记录。

是否应该记录 shell 内置函数和函数是有争议的(也许只是记录它们的内容)。stat在上面的示例中,是否echo应该记录一次或多次运行循环也存在争议。但我可以以最简单的方式处理输出。

运行 bash-x显示它确实有一些内部机制来挂钩进程exec并记录正在发生的事情。还有其他方法可以进去吗?

bash

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

CDPATH 行为在 bourne shell (/bin/sh) 中是否被破坏

我有以下脚本:

#!/bin/sh

mkdir -p /tmp/test/foo

cd /tmp/test

unset CDPATH
echo "TEST1: Current working directory: ${PWD}"
echo "TEST1: attempting to 'cd foo'"
cd foo
echo "TEST1: Current working directory: ${PWD}"

cd /tmp/test
CDPATH=/tmp
echo "TEST2: Current working directory: ${PWD}"
echo "TEST2: attempting to 'cd foo'"
cd foo
echo "TEST2: Current working directory: ${PWD}"
Run Code Online (Sandbox Code Playgroud)

打印出来:

$ ./cdpath.sh
TEST1: Current working directory: /tmp/test
TEST1: attempting to 'cd foo'
TEST1: Current working directory: /tmp/test/foo
TEST2: Current working directory: /tmp/test
TEST2: attempting to 'cd foo' …
Run Code Online (Sandbox Code Playgroud)

linux shell bash cd-command

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

标签 统计

bash ×3

shell ×2

cd-command ×1

linux ×1

process ×1

quoting ×1

ssh ×1