如何从历史记录中复制命令?

发布于 2024-07-16 01:42:38 字数 521 浏览 5 评论 0原文

我尝试从历史记录中复制命令。 如何复制第510条命令? 请看下面的数据。 我的赌注是:

history | grep 510 | sed '1q;d' | awk '{print $2-$10}' | pbcopy

但输出是0。我无法理解原因。 命令中有什么错误?

  505  find . -perm=750 -print0 | xargs -0 chmod 750
  506  find . --perm=750 -print0 | xargs -0 chmod 750
  507  find . -perm=750 -print0 | xargs -0 chmod 750
  508  find . -perm=750 -print0 | xargs -0 chmod 750
  510  find . -perm 750 -print0 | xargs -0 chmod 750
  512  history | grep perm 750 -print0 | pbcopy

I try to copy a command from history. How can I copy the 510th command? Please, see the data below. My bet is:

history | grep 510 | sed '1q;d' | awk '{print $2-$10}' | pbcopy

but the output is 0. I cannot understand the reason. What is wrong in the command?

  505  find . -perm=750 -print0 | xargs -0 chmod 750
  506  find . --perm=750 -print0 | xargs -0 chmod 750
  507  find . -perm=750 -print0 | xargs -0 chmod 750
  508  find . -perm=750 -print0 | xargs -0 chmod 750
  510  find . -perm 750 -print0 | xargs -0 chmod 750
  512  history | grep perm 750 -print0 | pbcopy

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

謸气贵蔟 2024-07-23 01:42:38

如果您使用的是 bash:(

echo "!510" | pbcopy

另请参阅

If you're using bash:

echo "!510" | pbcopy

(See also "history expansion" in the bash manual)

千鲤 2024-07-23 01:42:38

您可以使用 perl 打印除请求行的第一列 (510) 之外的所有内容:

history | perl -ane 'print "@F[1..$#F]" if($F[0]==510)'

You can use perl to print everything but the first column (510) of the requested line:

history | perl -ane 'print "@F[1..$#F]" if($F[0]==510)'
白日梦 2024-07-23 01:42:38

对于 Awk 中的一系列字段,您需要一个 for 循环。 你所做的是减法,因此结果为零。

通常 cut 命令执行提取列的任务,但有时 Awk 更合适。

这就是你的意思。

history | grep 510 | sed 1q \
 | awk '{for(i = 2; i <= NF; i++){ORS = (i == NF ? "\n" : " "); print $i;}}' \
 | pbcopy

For a range of fields in Awk, you need a for-loop. What you're doing is subtraction, thus the result of zero.

Usually the cut command does the task of extracting columns, but sometimes Awk is more appropriate.

Here's what you meant.

history | grep 510 | sed 1q \
 | awk '{for(i = 2; i <= NF; i++){ORS = (i == NF ? "\n" : " "); print $i;}}' \
 | pbcopy
最笨的告白 2024-07-23 01:42:38

原因是 $2$10 不是 awk 脚本中的数字。 字段的索引从 1 开始,因此如果您想要 750,第一个索引是 $5,第二个索引是 $11

请注意,这与带有“-perm=750”的行不同

The reason is that $2 and $10 are not numbers in the awk scripts. The fields' indexes are 1-based, so if you want the 750, the first one is $5, the second one is $11.

Note that this is different with the lines with "-perm=750"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文