Questions tagged «zsh»

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


1
为什么在zsh中将vim导出为EDITOR会禁用键盘快捷键?
我的.zshrc样子是这样的: export EDITOR="/usr/bin/vim" 现在,当我打开一个终端并输入键盘快捷键(如ctrla要转到该行的开头)时,它将不起作用。而是将字符串^A(或其他字符串,取决于我输入的快捷方式)输入到终端: emlai:~ % ^A export从我的单词中删除单词.zshrc会使键盘快捷键正常工作: EDITOR="/usr/bin/vim" 导出EDITOR为其他东西,而不是vim使键盘快捷键也可以工作,例如: export EDITOR="/usr/bin/nano" 为什么会这样? 我也对此进行了测试bash,并且键盘快捷键在所有情况下都可以正常工作。

7
bash和zsh中的两次和三次替换
跟踪该问题的背景部分。 在中,bash我可以使用${!FOO}双重替换zsh ${(P)FOO}。在这两种方法中,老式的(hack-y)都eval \$$FOO可以。 因此,对我来说,最聪明,最合乎逻辑的事情是${${FOO}}, ${${${FOO}}}…使用double / triple / n替换。为什么这不能按预期工作? 二:什么是\在做eval陈述?我认为这是一种逃避,使eval \$$$FOO不可能的事情变成现实。如何用在每个shell中都可以使用的三/ n替换?

5
zstyle是做什么的?
zstyle似乎它只是存储和检索数据的中心,就像export-ing shell参数的替代方法一样。那是真的,还是更多?
23 zsh 

1
完成cd OLD NEW的第一个参数
在中zsh,cd命令具有两个参数的形式:cd OLD NEW更改为${PWD/OLD/NEW}。使用新式的完成系统,zsh能够完成NEW:第二个参数根据OLD可以替换为现有目录的内容完成。但是第一个参数仅在现有目录中完成。 OLD除了完成现有目录之外,zsh如何让zsh提供可能的值? 例如,如果当前目录是,/path/to/foo并且还有目录/also/to/foo和/path/to/foo/prime,则cd pTab完成p到prime。如果我打算运行,cd path also那么我希望zsh也可以path作为补充。怎么样? 使用第二个参数的已经输入的值来限制第一个参数的可能性是一个加号,但是独立完成第一个参数也可以。

1
叉子炸弹如何工作?
警告请勿尝试在生产机器上运行 在阅读有关该主题的Wikipedia页面时,通常会使用以下代码来了解发生的情况: :(){ :|:& };: 描述摘录 接下来的叉子炸弹在2002年被作为艺术品展出;56 其确切来源尚不清楚,但在2002年之前在Usenet上存在。通过将以下13个字符粘贴到UNIX shell(例如bash或zsh)中来执行炸弹 。它通过定义一个称为“:”的函数进行操作,该函数两次调用自身,一次在前台,一次在后台。 但是最后一点对我来说还不是很清楚。我看到了函数定义: :(){ ... } 但是还发生了什么?还做其他壳,例如ksh,csh和tcsh也遭受了能够构造类似的东西同样的命运?
22 bash  shell-script  zsh  fork 

4
是否可以在zsh的配置文件中包含文件?怎么样?
我想要一个文件,例如。f仅具有zsh别名(出于纯正的原因)。然后,我想在.zshrc文件中包含f文件,以便在.zshrc中可见f中定义的别名。 可能吗? 如果是这样,我可以创建一个脚本,例如。my_alias($my_alias ll 'ls -l')将别名附加到f文件。我当然可以做 $echo {alias command} >> ~/.zshrc 但这使.zshrc变得一团糟。 另外,在bash中看起来如何? 更新 如果有人同意我的想法,这是解决方案,这要感谢phunehehe: # source aliases ALIASFILE=~/.aliasesrc source $ALIASFILE function add_alias() { if [[ -z $1 || -z $2 || $# -gt 2 ]]; then echo usage: echo "\t\$$0 ll 'ls -l'" else echo "alias $1='$2'" >> $ALIASFILE …

4
ZSH:向上和向下键的搜索历史?
目前,我的.zshrc中包含以下内容: bindkey '^[[A' up-line-or-search bindkey '^[[B' down-line-or-search 但是,这似乎只在空格字符出现之前与我当前输入的内容匹配。例如,sudo ls /将匹配历史记录中以开头的每一行sudo,而我希望它仅匹配与整个输入匹配的行。(即sudo ls /etc匹配,但不匹配sudo cat /var/log/messages) 为了获得所需的行为,我需要更改什么? 如果相关,这是我的整个.zshrc:https : //gist.github.com/919566

1
使用zsh的行编辑器来包装子流程
是否可以使用zsh的内置行编辑器(zle)将输入提供给子进程?也就是说,我想运行zlewrap mycommand哪里zlewrap是zsh函数,并且mycommand是从stdin读取行的任何程序;zlewrap可以有效地向提供zle的行编辑功能mycommand。这是在其模型上rlwrap执行的,但是使用readline而不是zle进行行编辑。
22 zsh  line-editor 

1
如何查找定义别名的文件
我有一个问题,我不确定该如何解决。 在系统的某个地方,我定义了一个别名,如下所示: alias subl=\''/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl'\' 我不确定它在哪个文件中,我想更改(或实际上删除)它。 我可以在我的.zshrc中取消混叠,但这并不是一个优雅的解决方案。 运行时alias | grep subl会显示别名。我有办法让它也回显定义别名的文件的路径吗? 谢谢
22 zsh  alias  search  oh-my-zsh 




6
获取两条路径之间的相对链接
假设我有两条路径:<source_path>和<target_path>。我想我的shell(zsh中)来自动找出是否有代表的方式<target_path>,从<source_path>相对路径。 例如,假设 <source_path> 是 /foo/bar/something <target_path> 是 /foo/hello/world 结果将是 ../../hello/world 为什么我需要这个: 我需要尽可能地创建从<source_path>到<target_path>使用相对符号链接的符号链接,因为否则当我从Windows访问网络上的这些文件时,我们的samba服务器将无法正确显示该文件(我不是sys admin,所以不要无法控制此设置) 假设<target_path>和<source_path>是绝对路径,则下面的代码创建指向绝对路径的符号链接。 ln -s <target_path> <source_path> 因此它无法满足我的需求。我需要对数百个文件执行此操作,因此不能仅仅手动对其进行修复。 有内置的shell可以解决这个问题吗?
21 shell  files  zsh  symlink 

1
将前一个命令的参数添加到zsh完成
在zsh(以及bash)中,您可以使用一些历史单词扩展来表示先前命令的参数。 此示例显示了!:#扩展历史记录中从上一个命令获取第二个参数: % echo foo bar baz foo bar baz % echo !:2 echo bar bar 我经常会忘记一个特定参数是什么#参数!:#,当我记住它是哪个arg时,键入并不总是那么快。我知道meta-.要替换最后一个参数,但是有时它不是我想要的最后一个参数。 我想添加上一条命令中的参数作为建议,以完成我在zsh中键入的任何命令。 我能够弄清楚如何创建一个shell函数,该函数可以从最后一个命令创建一个参数数组(0..N)并将其绑定到特定命令。 _last_command_args() { last_command=$history[$[HISTCMD-1]] last_command_array=("${(s/ /)last_command}") _sep_parts last_command_array } # trying to get last_command_args to be suggested for any command, this just works for foo compdef _last_command_args foo 这是仅在我按以下位置的Tab键时完成foo的样子<TAB>: % echo bar …
21 zsh  autocomplete 

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.