如何从历史记录中复制命令?
我尝试从历史记录中复制命令。 如何复制第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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您使用的是 bash:(
另请参阅
If you're using bash:
(See also "history expansion" in the bash manual)
您可以使用 perl 打印除请求行的第一列 (
510
) 之外的所有内容:You can use perl to print everything but the first column (
510
) of the requested line:对于 Awk 中的一系列字段,您需要一个 for 循环。 你所做的是减法,因此结果为零。
通常 cut 命令执行提取列的任务,但有时 Awk 更合适。
这就是你的意思。
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.
原因是
$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 the750
, the first one is$5
, the second one is$11
.Note that this is different with the lines with "
-perm=750
"