如何在命令行中获得上一个命令的第n个参数?

时间:2016-05-17 13:43:14

标签: zsh

如果您在交互式shell中输入类似的内容:

echo this is it

然后你可以扩展第一个参数:

echo !^    #=> echo this

或者你可以扩展最后一个参数:

echo !$    #=> echo it

但现在我想知道:

我如何访问 n 参数?我浏览了a related bash question,但似乎只有在脚本中才有效,因为!n只是通过我的命令历史记录(而不是我的参数历史记录) - 例如

    echo !1 #=> echo ls

这是有道理的,因为

    history | grep -E '^\s+1 ' #=> 1  ls

但我想要的是echo !(some correct index) #=> echo is

1 个答案:

答案 0 :(得分:10)

这样:

column "Badge ID", :number, :sortable => 'event_category_registrations.number' do |event_category_registration|
   best_in_place event_category_registration, :number, :type => :input, :path => update_admin_event_category_registrations_path(:id=>event_category_registration.id,:event_id=>event_category_registration.try(:event_id)) #, :path => [:admin, event_category_registration]
end

HttpContext.Current.Response.WriteFile是第n个 string DocumentPath = "D:/Live//web/"; Path.Combine(DocumentPath, FileName); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ClearHeaders(); HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=" + FileName); HttpContext.Current.Response.AddHeader("Content-Type", "application/octet-stream"); HttpContext.Current.Response.WriteFile(DocumentPath); HttpContext.Current.Response.End(); response.Write(DocumentPath); 是从头到尾的args

注意:~ $ echo this is it ~ $ echo !!:2 echo is is 扩展为最后一个命令

<小时/> 根据OP的编辑(here):

倒数第二个命令的第二个参数:

!!:n

!!:n-$扩展为当前命令之前'n'个命令的命令。

注意:!!~ $ echo foo bar baz # This one is the target foo bar baz ~ $ echo catz ratz batz catz ratz batz ~ $ echo !-2:2 echo bar bar 相同。