小编aaa*_*aaa的帖子

POSIX 在 case 语句中捕获换行符

我想在 POSIX shell(破折号)的 case 语句中捕获变量是否为多行。

我试过这个:

q='
'
case "$q" in
    *$'\n'*) echo nl;;
    *) echo NO nl;;
esac
Run Code Online (Sandbox Code Playgroud)

nl以 zsh 形式返回,但NO nl以破折号形式返回。

谢谢。

posix newlines case

9
推荐指数
1
解决办法
776
查看次数

Zsh 获取带有修饰符的 terminfo 键

Zsh 上的 Arch Linux Wiki 页面有一个从 terminfo 获取按键序列的示例。

typeset -g -A key

key[Home]="${terminfo[khome]}"
key[End]="${terminfo[kend]}"
...
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能得到带有修饰符的呢?具体来说是 Alt+j 和 Alt+k。

谢谢。

zsh terminfo

4
推荐指数
1
解决办法
1373
查看次数

使用 POSIX sed 连接行

我正在尝试使用 POSIX sed 加入行。

使用 GNU sed(没有 --posix),这可以按预期工作:

$ sed ':a; N; s/\n//; b a' <<< $'a\nb\nc'
abc
Run Code Online (Sandbox Code Playgroud)

但是如果我使用 --posix 我没有输出。

为什么会这样,否则我该怎么做?

sed posix newlines

4
推荐指数
1
解决办法
215
查看次数

使用裸 git 存储库自动完成 Zsh 文件

我的 .zshrc 中有这个:

# command completion
autoload -Uz compinit
compinit
Run Code Online (Sandbox Code Playgroud)

通常让我通过选项卡浏览命令、参数和文件。

但对于git --git-dir=<the path> --work-tree="$HOME"(通常是别名)它仅适用于子命令(如添加和推送)和参数,不适用于文件。我希望它也能处理文件。

我尝试将其放入脚本中,如下所示:

#!/usr/bin/env sh

git --git-dir=<the path> --work-tree="$HOME" "$@"
Run Code Online (Sandbox Code Playgroud)

它适用于文件,但子命令和参数会中断。

谢谢。

zsh git autocomplete

2
推荐指数
1
解决办法
869
查看次数

鱼喜欢 Zsh 中的 ls 键绑定

在鱼壳中,当您按下Alt+l它时,它会ls很好地显示命令的输出。它会保留您按下之前正在编写的命令。我想在 zsh 中有这个。

这是我非常不稳定的尝试:

function myls {
    awk '{len = length($0); for(i=0;i<len;i++) printf "\b"}' <<< "$LBUFFER"
    zle push-input
    zle accept-line
    print $(ls --color=always --indicator-style=slash)
}
zle -N myls
bindkey -- '^[l' myls
Run Code Online (Sandbox Code Playgroud)

我努力清除现有命令,最终使用了 hacky\b的。它不能在长行和多行上正常工作。

谁能做得更好?

zsh

2
推荐指数
1
解决办法
141
查看次数

与号 (&amp;) 与组零 (\0)

& 和 \0 在替换替换上有什么区别吗?

$ echo a b c | sed 's/\(a\) b \(c\)/&/'
a b c

$ echo a b c | sed 's/\(a\) b \(c\)/\0/'
a b c
Run Code Online (Sandbox Code Playgroud)

sed regular-expression

1
推荐指数
1
解决办法
130
查看次数

标签 统计

zsh ×3

newlines ×2

posix ×2

sed ×2

autocomplete ×1

case ×1

git ×1

regular-expression ×1

terminfo ×1