Questions tagged «zsh»

Zsh是具有许多高级命令行和脚本功能的shell。

1
如何将zsh自动完成功能用于包装函数参数和现有命令
我主要在gvim和许多终端中工作。最初,我更喜欢在单个vim实例中打开所有文件。为此,我使用别名从当前“ vim服务器”中的终端打开文件。 alias rv="gvim --remote-silent" 但是在单个vim实例中打开多个项目的许多文件会影响我的工作效率,因此我将别名升级为函数。 # main function rv() { local args options server options=$(getopt -o hils:t: -l "help,info,list,set:,target:" -- "$@") if [[ $? -ne 0 ]]; then echo "Failed to parse options." return 1 fi # a little magic, necessary when using getopt eval set -- "$options" # …
40 zsh  autocomplete 



2
在zsh中完成avfs伪目录
在某些情况下,如何调整zsh的完成系统以完成“伪造”文件? 更准确地说,AVFS文件系统通过在每个档案旁边创建一个“伪目录”,将档案作为目录公开。默认情况下,它将在其安装点下复制整个目录层次结构~/.avfs。此外,在之下~/.avfs,对于每个档案文件(例如)/tmp/foo.zip,除了档案文件本身之外~/.avfs/tmp/foo.zip,还有一个名为的目录~/.avfs/tmp/foo.zip#,用于显示档案的内容。但是,此额外目录未出现在的列表中~/.avfs/tmp:仅在明确请求时存在。(这类似于某些自动安装器的操作。) mountavfs cd ~/.avfs/tmp/foo.zip\# 当我输入上述命令时,由于没有这样的目录,因此不会foo.zip#在下方显示为~/.avfs/tmp/补全。我怎样才能告诉zsh,只要有一个完整路径$arc匹配~/.avfs/**/*.(tgz|zip)¹ 的文件,它就应该假装存在一个名为的目录${arc}#? (请注意,我希望完成操作可用于对_files或的每次调用_dirs,而不仅是cd命令的_files调用。如果可能的话,我希望不必重复该函数的代码。) ¹ 以及所有其他扩展名

1
在shell脚本中避免“ BASH-isms”
是否存在类似于Perl :: Critic的工具,该工具将检查您的Shell脚本并指出缺陷,可移植性问题,使用无故障的非标准程序,使用折旧的程序等? 我意识到这set -o posix将禁用非POSIX用法,但这不会告诉我我想知道的事情,例如zsh索引从1开始的shell数组,从0开始的bash索引,以及ash根本不支持数组。
37 bash  shell  zsh  ash 

3
为什么打开文件比读取可变内容快?
在bash脚本中,我需要/proc/文件中的各种值。到目前为止,我有数十行代码直接像这样对文件进行grep: grep -oP '^MemFree: *\K[0-9]+' /proc/meminfo 为了提高效率,我将文件内容保存在一个变量中并对其进行grep化: a=$(</proc/meminfo) echo "$a" | grep -oP '^MemFree: *\K[0-9]+' 与其多次打开文件,不如将其打开一次并grep变量内容,我认为这会更快-但实际上它更慢: bash 4.4.19 $ time for i in {1..1000};do grep ^MemFree /proc/meminfo;done >/dev/null real 0m0.803s user 0m0.619s sys 0m0.232s bash 4.4.19 $ a=$(</proc/meminfo) bash 4.4.19 $ time for i in {1..1000};do echo "$a"|grep ^MemFree; done …


1
如何在zsh中启用反向搜索?
我最近(最终)切换到了zsh并喜欢它!到目前为止,我缺少的一件事是Ctrl+ R做增量历史记录搜索。 我的历史记录设置正确 HISTSIZE=10000 SAVEHIST=10000 HISTFILE=~/.zsh_history 我用了vi键绑定 bindkey -v 但是Ctrl+ R不起作用。它将删除当前行上方的行,这也不是它在vim中应具有的行为。 有什么建议么?

8
git clone后如何自动CD?
我想在输入某些内容后自动cd进入clone命令创建的目录git clone。 重要提示:我不想更改命令的语法(例如,使用别名/函数),因为它会破坏我从Pretzo项目中自动获得的zsh完成。 编辑:之所以没有选择正确的答案,是因为没有给出符合上述条件的答案。 我使用ZSH,但在其他外壳程序中的答案也是可以接受的。
35 shell  zsh 

3
如何在Zsh Shell中查看历史记录命令的日期时间戳
在ubuntu服务器上运行history命令时,输出如下: history ... 25 cd ~ 26 ls -a 27 vim /etc/gitconfig 28 vim ~/.gitconfig 我想查看特定用户的日期时间。但是,当我假设它们: su otheruser export HISTTIMEFORMAT='%F %T ' history ... 25 cd ~ 26 ls -a 27 vim /etc/gitconfig 28 vim ~/.gitconfig 它仍然不显示日期时间。我正在使用zsh shell。

3
$ {param:= value}是什么意思?
我在《 Z-Shell用户指南》中阅读了以下内容: 'true'的同义词是':';它通常以这种形式用于提供具有副作用但不应该使用的参数-类似于 : ${param:=value} 这是所有Bourne Shell衍生物中的常见习语。在参数扩展中,$param如果之前为空,则为其赋值,否则保留该值。由于那是参数扩展的唯一原因,因此您:可以忽略该参数。实际上,shell巧妙地构建了命令行-冒号,然后跟随$paramis 的值(无论赋值是否发生),然后执行命令;碰巧':'并没有注意到它给出的参数。 但我不明白。我的:意思是true,但是表达式中有两个冒号。作为一个小问题,为什么这个习语在所有的Bourne Shell衍生物中都使用了这么多?它有什么作用? 注意: 我对该成语在bash和zsh中的作用感兴趣。 谢谢
34 bash  shell  zsh 


2
别名vs导出简单命令
对于诸如的简单命令less,最好使用别名或导出选项?一个人比另一个人有什么好处吗? 例如,如果我想less始终使用该-R选项来显示原始字符,则这两种解决方案都可以工作: export LESS='-R' alias less='less -R' 对于这样一个简单的案例,一个相对于另一个有什么好处吗?任何一种情况都会导致问题而另一种情况不会导致问题? 我已经仔细阅读了几页info和几man页,以及对其进行了谷歌搜索,但是我仍然坚持这一点。
33 bash  zsh  alias 

7
可移植的方式来获取脚本的绝对路径?
(zsh)脚本确定其绝对路径的可移植方式是什么? 在Linux上,我使用类似 mypath=$(readlink -f $0) ...但这不是便携式的。(例如,readlink在darwin上,该-f标志无法识别,也没有任何等效的标志。)(当然,readlink为此使用的是一个相当晦涩的hack。) 有什么更便携的方式?

1
如何使用oh-my-zsh禁用zsh中的“ auto cd”
谷歌搜索没有显示任何结果。这就是我的意思:x我的路径中有一个二进制文件(不是当前文件夹,但在中PATH),并且在当前工作目录中还有一个具有相同名称的文件夹。如果输入x,我希望二进制文件执行,但将其CD放入该文件夹。我该如何解决?
29 shell  zsh  oh-my-zsh 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.