zsh:命令替换和正确引用

2024-06-18

我有一个脚本P它接受文件名作为参数:

P file1 file2 file3 ....

我也有一个脚本G它生成一个(通常是短列表)文件名,每行一个文件名。在我想写的主脚本中zsh,我想用G生成要处理的文件名P。天真的尝试是这样的:

P $(G)

这几乎很有效,只是我生活在一个恶意的人喜欢创建带有嵌入空间的文件的世界中。如果G将生成如下文件列表:

one_file 
a file with spaces

P将被称为

P one_file a file with spaces

代替

P 'one_file' 'a file with spaces'

一种明显的解决方案是粘合G and P不是通过命令替换,而是通过某种语言(Ruby、Perl、Python、Algol68,....)的小程序一起执行,该程序执行P并将参数传递给从标准输入读取。

这编写起来很简单,甚至可以重用。不过,我想知道,是否zsh有了它的好东西,就没有内置的解决方案来解决这个问题吗?


这可以通过以下方式实现:

P ${(f)"$(G)"}

这会调用P as

P 'one_file' 'a file with spaces'

如果输出G is

one_file
a file with spaces

解释:

周围的双引号$(G) tell zsh获取输出G作为一个单词(在单词 word 的 shell 意义上)。

所以只是打电话

P "$(G)"

将相当于

P 'one_file
a file with spaces'

这就是参数扩展标志 f开始发挥作用。${(f)SOMEVAR} tells zsh分开$SOMEVAR换行处的单词。而不是参数(例如SOMEVAR)还可以使用命令替换(此处$(G)) 里面${...}输入参数表达式,这会导致命令P ${(f)"$(G)"}.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zsh:命令替换和正确引用 的相关文章

  • 递归搜索二进制文件目录中的十六进制序列?

    我用来搜索一些十六进制值的当前命令 例如0A 8b 02 涉及 find type f not name png exec xxd p grep 0a8b02 xargs 0 P 4 鉴于以下目标 是否可以改进这一点 递归搜索文件 显示偏移
  • 过滤文件内容到排序表

    我有一个包含以下代码行的文件 这里的文件显示了一个逐一排序的时间表 at 12 00 the schedule of james version1 is first task eating nothing second task rest
  • 在文件和文件夹的名称中递归地填充 0

    我有一个文件夹 其中包含有关某个特定主题的视频讲座 它的结构如下 1 fol 1 file mp4 2 file mp4 3 file mp4 2 fol 10 file mp4 4 file mp4 5 file mp4 6 file m
  • 在 zsh 中安装 npm 后找不到命令

    我在安装时遇到一些问题vows http vowsjs org通过 zsh 中的 npm 这是我得到的 我尝试使用和不使用 g 选项安装它 你知道这里出了什么问题吗 Desktop sauce node demo master npm in
  • Zsh 无法正确自动完成我的 ssh 命令

    我在 ssh 自动完成方面遇到一些问题 我希望我的 zsh 在我的 ssh config 文件上自动完成 但到目前为止它只对 etc hosts 文件执行此操作 我发现如何通过添加此配置来不使用主机文件 zstyle completion
  • ZSH:如何禁用“make”的默认完成?

    我编写了自动完成功能make命令 并将其放入 zsh function comp make function body compctl K comp make make 不幸的是 它不会工作 因为完成make已经定义在 usr share
  • 如何在终端中显示 git 用户 (oh-my-zsh)

    我很喜欢 oh my zsh 并享受其中飞船提示 https github com denysdovhan spaceship prompt 就像它显示我的 git 分支和状态一样 我怎样才能让它在旁边显示我当前的 git 用户 之所以问这
  • bash 中类似 zsh 的历史记录

    我真的很喜欢 zsh 的历史记录自动完成功能 也就是说 当我按下时 我会收到上一个命令 当我打字时emacs然后按向上键 我得到了我使用的最后一个 emacs 命令 当我打字时git然后按向上键 我得到了我使用的最后一个 git 命令 当我
  • Git / 分离 HEAD,恢复工作吗?

    我对我认为是我的分支进行了数十次提交 然后检查了另一个分支 愿意回到我最初的分支 我没有找到我更新的代码 在控制台中查看我的历史记录后 我了解到我在一个独立的分支工作 是否有可能获得我在独立分支上完成的工作 是的 您可以使用重新记录 尝试g
  • 使 zsh 从文件中获取完整参数

    zsh很棒 但它的完成系统非常多样化 并且文档缺乏好的示例 是否有用于完成特定应用程序的模板 补全将从文件中获取其匹配数据 并用换行符分隔 我尝试修改我的一个旧示例 该示例将匹配数据 实时 cat zsh completers jazzup
  • zsh 更改提示输入颜色

    我想更改 zsh 中输入文本的颜色 我为每个命令键入的文本 示例 在user host gt ls 我想要ls 为黄色以从标准输出中脱颖而出 我知道我可以完成这个bash using export PS1 BIGreen u h w IYe
  • 如何在多台机器之间共享 zsh 历史记录?

    我对在机器之间共享配置文件感到非常满意 但我发现我经常想在 zsh Ctrl R 中搜索 但我不记得在哪台机器上输入了命令 理想情况下 我希望它可以从我的任何机器中搜索先前命令的规范重复数据删除列表 鉴于我有时会在没有网络连接的情况下同时在
  • 在 Mac OS Lion 上使用 tmux 提示之前出现奇怪的空格

    它刚刚发生在我的 Lion 系统上 我正在使用 zsh 和 tmux 在 zsh shell 中正常 tmux 屏幕中的双倍空间 我是否缺少 zsh 或 tmux 中的某些配置 使用 u 选项启动 tmux 以实现 unicode 功能 看
  • jq - bash 和 zsh 以及 zsh-subshel​​l 之间换行处理的差异

    我试图将字符串格式化为 JSON https gist github com jakub g b2ef123f8b754bc5c63bc854e7019987 using jq我注意到 bash 与 zsh 的行为不同 特别是当 zsh 运
  • 如何使用语法突出显示 zsh 函数的自动建议

    我使用 zsh 并编写了一个函数来替换 cd 功能 在一些帮助下 我让它按照我想要的方式工作 大部分 这是后续我的另一个问题之一 https stackoverflow com questions 64463599 cant use in
  • Oh-my-zsh 哈希(井号)符号错误模式或未找到匹配项

    我很确定是与我的 Oh my zsh 配置相关的东西 但我不知道它是什么 当我在 git 命令中使用 符号时 但也适用于其他所有命令 例如 ls 2 我收到 错误模式 错误或 找不到匹配项 我猜是要计算一些东西 但我找不到在哪里配置它 I
  • Zsh 中的鱼式自我暗示?

    有没有办法做到鱼的自我暗示类型 http ridiculousfish com shell images autosuggestion png in Zsh https github com tarruda zsh autosuggesti
  • zsh 自动完成 ssh 速度较慢

    我最近将我的 MacBook 升级到了 OSX Catalina 自从升级后 我的 ssh 的 zsh 自动完成 制表符完成 非常慢 以前 它相当快 例如自动完成会在几秒钟内发生 我认为相关的一些细节 我有一个 ssh config配置了约
  • 如何让“git status”始终使用短格式?

    我想要git status始终使用短格式 git status short M file1 M dir file2 file untracked3 dir file untracked4 似乎不存在这方面的配置选项 并且git config
  • gsutil 返回“未找到匹配项”

    我正在尝试使用 gsutil 删除 Cloud Storage 存储桶的内容 但不是存储桶本身 根据文档 命令应该是 gsutil rm gs bucket 但是 每当我运行该命令 当然用我的存储桶名称替换 时 我都会收到以下响应 zsh

随机推荐

  • ASCII - Asciimatics - 如何在代码中实现效果/屏幕

    几篇文章之前 有人建议我研究一下 Python 的 Asciimatics 库 我正在尝试使用以下方法来解决它 样品 https github com peterbrittain asciimatics tree master sample
  • iPhone 应用程序在 iOS 4 上安装后无法启动,但设备重启后可以运行

    我有一个在 iOS 3 0 3 1 3 上运行良好的应用程序 然而 在测试 iOS 4 SDK 特别构建时 该应用程序的行为很奇怪 安装后 使用 Xcode iTunes 或 iPhone 配置实用程序 应用程序会执行以下两项操作之一 应用
  • Rollup & Plugins 能否将大多数遗留库转换为 es6 模块?

    我们团队的项目内部完全是es6模块 ESM 但是有依赖项还没有制作esm版本 我们创建了各种解决方案 但它们绝对不是现代的主流解决方案 我指的是将旧格式转换为 esm 的 Rollup 工作流程 或同等学历 那么问题来了 现在是否有 Rol
  • 使用 jQuery 捕获“删除”按键

    When using the example code from the jQuery documentation for the keypress event handler I m unable to capture the Delet
  • Webmatrix 3 Sql Server CE 4 崩溃了吗?

    好吧 当我在新的 Webmatrix 3 中创建 sql server CE sdf 数据库时 我遇到了问题 我已经将一个例子缩小到这个范围 1 我创建一个名为 test 的表 一列 test ID 是一个 bigint 主键和一个身份 2
  • golang mongodb (mgo) 没有插入文档

    我在使用 mgo 在 mongodb 中保存 golang 结构时遇到问题 type AN Track Log struct Id bson ObjectId bson id omitempty user session id str st
  • 具有图形样式的 DatePicker 打破了 iOS 16.0 上的布局限制

    以下代码在 iOS 16 0 的 Xcode 14 0 0 Beta 5 上运行时打破了布局约束 struct ContentView View State var date Date var body some View DatePick
  • Magento 2 404 错误管理面板

    最近我安装了 Magento 2 0 版 安装成功后 我尝试登录管理面板 但显示404未找到 我真的不明白是什么导致了这样的问题 此外 从 URL 可以看出我已登录管理 oanel 但仪表板不可见 URL http example com
  • findAndModify - MongoError:异常:必须指定删除或更新

    我想更新一个数组并返回文档 我的 findAndModify 语法正确吗 this becomeFollower function title username callback use strict posts findAndModify
  • Raspberry PI 上的 JavaFX:加载库存着色器时出错

    目前我正在尝试部署我的 JavaFX 应用程序 该应用程序可以在 Windows 上的 Raspberry Model B v1 2 上顺利运行 由于 JavaFX 不能直接在 Raspi 上使用 我已经按照此处所述使用 Gluon 进行了
  • 为什么使用 Win32_PrintJob/C# 打印 N-Up 总页数错误?

    我正在用 C 编写一个程序 用于在打印时暂停并获取总页数 这是主要代码 string wql SELECT FROM Win32 PrintJob ManagementObjectCollection mos Dictionary
  • 有条件地忽略 Karma / Jasmine 的个别测试

    我有一些测试在 PhantomJS 中失败 但在其他浏览器中则不然 我希望在我的监视任务中使用 PhantomJS 运行时忽略这些测试 因此新的浏览器窗口不会获得焦点并且性能更快一点 但在我的标准测试任务和 CI 管道中 我想要all在 C
  • 如何用单线程实现TCP上的全双工通道?

    我正在编写的网络库需要通过 TCP 套接字发送和接收消息 消息可以随时发送或接收 即应该作为全双工通道工作 我能够使用两个线程来实现这样的场景 调用 send 的主线程和一个主要在 receive 调用处阻塞的专用线程 我的问题是 是否可以
  • NestJs/Mongoose 中的自动递增序列

    我正在将 NodeJs 项目迁移到 NestJs 该项目使用 MongoDB 作为后端数据库 使用 Mongoose 作为 ODM 我当时用的是猫鼬序列 https github com ramiel mongoose sequence插件
  • 如何在 Objective C 中使用 swift 文件

    我想在 Objective C 代码中使用我的 Swift 文件 我找到了不同的链接 说明了如何操作 我的项目名称是 测试项目 我将 import Test Project Swift h 导入到我的 m 文件中 以在 Objective
  • 有没有一个 PHP 函数可以交换两个变量的值?

    比如说我有 var1 ABC var2 123 在某些条件下我想像这样交换两者 var1 123 var2 ABC 是否有一个 PHP 函数可以执行此操作 而不必创建第三个变量来保存其中一个值 然后重新定义每个值 就像这样 var3 var
  • 在perl中调用基本构造函数

    从 Perl 中的类构造函数调用基本构造函数的正确方法是什么 我见过这样的语法 my class shift my a shift my b shift my self class gt SUPER new a b return self
  • Chart js:更新具有两个数据集的折线图

    我想用两个数据集更新图表js中的折线图 我以某种方式设法清空图表 然后能够填充其中一个数据集 但无法使两个数据集都工作 这是代码 ajaxRequest url reports updateChart filter true method
  • Vb中读取USB存储设备的序列号

    是否可以使用VB读取USB驱动器的序列号 这将为您提供 net 中驱动器的信息 包括 USB 设备 只需导入这些 导入脚本 导入系统 IO Private Class USBsn Private Sub Button1 Click ByVa
  • zsh:命令替换和正确引用

    我有一个脚本P它接受文件名作为参数 P file1 file2 file3 我也有一个脚本G它生成一个 通常是短列表 文件名 每行一个文件名 在我想写的主脚本中zsh 我想用G生成要处理的文件名P 天真的尝试是这样的 P G 这几乎很有效