gpt4 book ai didi

将调用 ls -l 等命令行命令的 ruby​​ 脚本,然后将特定列提供给另一个 fn

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:45 28 4
gpt4 key购买 nike

我想创建一个可以在命令行上运行的 ruby​​ 脚本,它将:

1. run a command line command like e.g.  "ls -l"
2. then I pass an argument for a specific column from the output of #1
3. for each column specified in #2, it will run another command

ls -l 只是一个例子,我希望它是通用的。

我是 ruby​​ 的新手,还不太了解其中的一些内容,所以如果您能赞扬您的做法和做法,那将对我非常有帮助。

最佳答案

我经常在管道中使用 |awk '{print $5;}'(将 5 替换为您选择的单索引列)。如果您使用一些有趣的命令行开关,您可以使用 ruby 获得同样简单的单行代码。比较:

$ ls -l | awk '{print $5;}'

404
16
10
8733

对比

$ ls -l | ruby -ne "a = split; puts a[4];"
nil
404
16
10
8733

ruby -n 在您的代码周围放置一个隐式 while gets() do .. end 循环,并且 ruby -e 传递脚本元素在命令行上。将两者结合起来,您将获得一些简单的单行脚本编写能力,类似于 perl -neawk(1)

联机帮助页提到了另一个看起来非常有用的选项:

 -a             Turns on auto-split mode when used with -n or
-p. In auto-split mode, Ruby executes
$F = $_.split
at beginning of each loop.

Juan 指出了如何使用它(单引号阻止我的 shell bash(1)$F[3] 解释为变量引用)。 :

$ ls -l | ruby -ane 'puts $F[3]'
nil
root
root
root
root
sarnold
sarnold
...

关于将调用 ls -l 等命令行命令的 ruby​​ 脚本,然后将特定列提供给另一个 fn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6313566/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com