Questions tagged «zsh»

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

11
如何使用zsh提示符下输入的文本搜索历史记录?
在zsh中,我知道可以使用Ctrl+ 搜索历史记录r。但是,通常我会开始在提示符下直接键入命令,但后来意识到我应该在搜索历史记录。当我按Ctrl+时r,它会弹出一个空白的历史搜索提示,如下所示: 请注意在我的提示下如何显示文本,而在历史记录搜索提示下却没有。如何使用提示中已有的文本开始历史搜索,因此看起来像这样:

1
For zsh和bash中的循环
我注意到有两种在zsh中构建循环的替代方法: for x (1 2 3); do echo $x; done for x in 1 2 3; do echo $x; done 他们都打印: 1 2 3 我的问题是,为什么要使用两种语法?是否在每个对象中都$x通过不同类型的对象进行迭代? bash是否也有类似的区别? 附录: 为什么以下工作? #!/bin/zsh a=1 b=2 c=5 d=(a b c) for x in $d; do print $x;done 但这不是吗?: #!/bin/zsh a=1 b=2 c=5 d=(a b c) …
57 bash  zsh 

5
如何在zsh中定义和加载自己的shell函数
我很难在zsh中定义和运行自己的shell函数。我按照官方文档中的说明进行操作,并首先尝试使用简单的示例,但未能使其正常工作。 我有一个文件夹: ~/.my_zsh_functions 在此文件夹中,我有一个functions_1具有rwx用户权限的文件。在此文件中,我定义了以下外壳函数: my_function () { echo "Hello world"; } 我定义FPATH要包含文件夹的路径~/.my_zsh_functions: export FPATH=~/.my_zsh_functions:$FPATH 我可以.my_zsh_functions使用echo $FPATH或确认文件夹位于函数路径中echo $fpath 但是,如果我从外壳尝试以下方法: > autoload my_function > my_function 我得到: zsh:my_test_function:找不到函数定义文件 我还能做些什么才能打电话my_function? 更新: 到目前为止的答案建议使用zsh函数采购文件。这是有道理的,但我有点困惑。zsh不应该知道这些文件在哪里FPATH吗?那么目的是autoload什么?
54 shell-script  zsh 

6
将zsh设为没有root访问权限的默认shell
我正在使用学校的计算机,并且想使用zsh而不是bash。我想将其设置为默认外壳程序,但是$ chsh -s $(which zsh)由于我没有管理员权限,因此无法运行命令。 有什么办法可以放入我的.bashrc东西,或者zsh当它作为解决方法打开时会自动调用的东西吗? 澄清一下,zsh已经安装了。
52 bash  zsh  login  profile 

3
在外壳通配符中使用OR模式
我的目录的内容是 $ ls -lrt total 0 -rw-r--r-- 1 user1 admin 19 Oct 8 12:31 night.txt -rw-r--r-- 1 user1 admin 19 Oct 8 12:31 noon.txt -rw-r--r-- 1 user1 admin 38 Oct 8 12:31 day.txt 我想列出文件名中包含单词的文件的详细信息。 范例: $ ls -lrt *day|night* ls: *day: No such file or directory bash: night.txt: command not …
52 bash  shell  zsh  ls  wildcards 

4
如何在ZSH中的全屏编辑器中编辑命令行?
在bash中,使用vi模式,如果我打Esc,v我现在的命令行中所指定的编辑器中打开$EDITOR,我能够“拯救”的指令也可以返回到shell并执行之前在全屏幕编辑它。 如何在zsh中实现类似的行为?v尽管EDITOR设置了环境变量,但在命令模式下命中不会产生明显的影响。
52 zsh  editors 



2
如何在ZSH的vi模式下执行反向历史记录搜索?
我vim基本上满足了所有编辑需要,因此我决定再次尝试对外壳使用vi模式(当前在OS X上为ZSH w / oh-my-zsh),但是我发现自己一直在尝试(并且失败)Ctrl-R不断使用。什么是等效的键绑定?为了将来参考,我如何自己解决这个问题?我很确定我可以bind -P在bash中使用。

2
为什么ZSH用高亮的百分比符号结束一行?
我有时会在各种应用程序中注意到这一点。我经常以为这是因为输出被提前取消(例如ctrl + c)或类似的操作,而zsh则填充了新的换行符。但是现在,好奇心已经成为我最好的,因为它似乎并没有做到那么快。 sh 重击 该Sequence程序是我在阅读Java认证时从书中摘录的,只是想看看它是否可以编译和运行。我确实注意到它没有使用包/类中的println()方法System.out。相反,它使用普通old print()。 缺少换行符是我得到此符号的原因吗?
46 bash  zsh  prompt  newlines 

10
在vi模式下使我的zsh提示显示模式
我使用bindkey -v(对于bash-ers,set -o vi我认为也可以在zsh中使用)或vi(m)模式。但令我感到困惑的是,我没有任何视觉提示可以告诉我是处于插入模式还是命令模式。有谁知道我如何使我的提示显示模式?
44 shell  prompt  zsh 


3
如何在zsh中正确收集行数组
我认为以下内容将以行的形式对输出进行分组my_command: IFS='\n' array_of_lines=$(my_command); 因此,$array_of_lines[1]它将指向输出中的第一行my_command,$array_of_lines[2]指向第二行,依此类推。 但是,上面的命令似乎无法正常工作。就像我检查过的一样,它似乎也将my_command字符的输出分割开了,我相信它会逐行打印数组的元素。我也用以下方法对此进行了检查:nprint -l $array_of_lines echo $array_of_lines[1] echo $array_of_lines[2] ... 在第二次尝试中,我认为添加eval可能会有所帮助: IFS='\n' array_of_lines=$(eval my_command); 但我得到的结果与没有它时完全相同。 最后,按照zsh中带空格的List元素的答案,我还尝试了使用参数扩展标志,而不是IFS告诉zsh如何拆分输入并将元素收集到数组中,即: array_of_lines=("${(@f)$(my_command)}"); 但我仍然得到相同的结果(发生n) 有了这个,我有以下问题: Q1。有哪些“适当”的方式来收集多行代码中的命令输出? Q2。如何指定IFS仅在换行符上分割? Q3。如果我在上面的第三次尝试中使用参数扩展标志(即使用@f)来指定拆分,则zsh是否会忽略IFS?的值?为什么上面没有用?
42 shell-script  zsh 

1
在终端中可以有vim键绑定吗?
我已经习惯了vim绑定(例如按w转到单词,按dw删除单词,等等),以及它的模式(插入,正常,视觉),出于好奇,我想知道:这里有一些这种行为方式的实现以及从vim到我的终端的绑定? 有插入模式,普通模式等...
42 bash  shell  terminal  vim  zsh 

4
zsh中的无限历史记录
在中zsh,我希望拥有无限的历史记录。我设置了HISTSIZE=,在bash。现在我导入了一个古老的历史 mv old_history .history 很大 wc -l .history 43562 .history 如果现在关闭并重新开始zsh,我会看到 wc -l .history 32234 .history 我可以拥有无​​限的历史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.