You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在zsh命令行中访问并修改命令内的位置参数?

在Zsh命令行中复用并修改当前命令的位置参数

方法一:使用历史扩展(!#)

Zsh的历史扩展功能可以直接引用当前正在输入的命令参数,核心是用!#指代当前命令行,再通过:n提取第n个参数,结合参数展开实现修改:

  1. 基础用法示例(对应你的ffmpeg场景):
ffmpeg -i path/to/long/filename.original new/destination/${!#:1:t:s/original/output}
  • !#:1:获取当前命令的第一个参数(即输入文件路径)
  • :t:提取路径中的文件名部分(去掉目录前缀)
  • :s/original/output:将文件名里的original后缀替换为output
  1. 处理含空格的路径:
    如果路径包含空格,用(Q)修饰符解析带引号的参数,避免空格拆分问题:
ffmpeg -i "path with spaces/filename.original" new/destination/${${(Q)!#:1}:t:s/original/output}

方法二:临时定义快捷函数(适合高频操作)

如果经常需要这类参数复用修改,可以定义一个临时函数,省去每次输入复杂历史扩展的麻烦:

ffmpeg-convert() {
  local input="$1"
  local output="new/destination/${input:t:s/original/output}"
  ffmpeg -i "$input" "$output"
}

调用时只需输入:

ffmpeg-convert path/to/long/filename.original

注意事项

  • 历史扩展中的!符号如果和其他语法冲突,可以用\!转义,但命令行直接输入时通常无需转义
  • 参数展开的修饰符(:t、:s)是Zsh专属功能,bash环境下无法使用

内容的提问来源于stack exchange,提问作者Kyle Barbour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:09:59