gpt4 book ai didi

与管道输入或基于参数的输入一起使用的 fish shell 函数

转载 作者:行者123 更新时间:2023-12-04 05:04:48 26 4
gpt4 key购买 nike

我正在尝试创建一个 fish shell 函数,它将从输入中修剪新行,然后将输入复制到剪贴板。

我怎样才能编写这个函数,以便它会;

  • 处理管道输入(现在有效)
  • 处理第一个参数,就好像它是通过管道输入到函数
  • 一样
  • 在没有通过参数或管道提供值的情况下立即退出,现在 tr如果没有在管道中传递一些值,将不会退出

  • 代码:
    function copy --description 'Trim new lines and copy to clipboard'
    tr -d '\n' | pbcopy
    end

    最佳答案

    更新可以更好地处理换行符:

    function copy --description 'Trim new lines and copy to clipboard'
    cat $argv ^/dev/null | while read -l line
    set argv $argv $line
    end

    test -z "$argv"; and return

    for i in $argv
    echo -n $i
    end | tr -d '\n' | pbcopy
    end

    这是一个相当大的挑战,但有一点技巧是可能的。如果您编写 copy,则此功能按您的描述工作,并有一个警告。如果没有任何参数,它将无限期地等待您的输入。

    如果您不关心多行复制,您可以删除 | tr -d '\n'之前 read然后 copy也会工作。因为 read 由换行符终止。那么它会自动接受第一个换行符,例如 copy\nme只会复制 copy .

    代码:
    function copy --description 'Trim new lines and copy to clipboard'
    cat $argv ^/dev/null | tr -d '\n' | read -l input

    set -ql input; or set -l input $argv

    if test -n "$input"
    echo $input | tr -d '\n' | pbcopy
    end
    end

    例子:
    ➤ echo copy\nme | copy
    Clipboard: copyme

    ➤ copy copy\nyou
    Clipboard: copyyou

    ➤ echo | copy
    Clipboard: copyyou

    ➤ copy
    (Waiting for command indefinitely...)

    关于与管道输入或基于参数的输入一起使用的 fish shell 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11407617/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com