你会如何简化这个命令?

And*_*iuc 10 bash command-line-interface strace

我对 strace / netstat / 等很陌生。我正在使用此命令来跟踪处理我的请求 (telnet) 的 apache 进程,有没有办法稍微简化一下?

sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -antlp | \ 
    grep $(lsof -p `pidof telnet` | grep TCP | \
    perl -n -e'/localhost:(\d+)/ && print $1') | grep apache2 | \ 
    perl -n -e'/ESTABLISHED (\d+)/ && print $1')
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 1

我可以对 Mark Henderson 的改进一点,用 $() 而不是 `` 并用更好的 sed 删除 grep:

sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -antlp | \
   sed -e "/telnet/s/^.*ESTABLISHED\ \|\/.*$//g")
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我认为反引号使其难以阅读;此外,与 $() 语法不同,它们不嵌套