Questions tagged «zsh»

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


3
如果为空,如何将带引号的变量扩展为空?
假设我有一个脚本正在执行: some-command "$var1" "$var2" ... 而且,在var1为空的情况下,我希望将其替换为空字符串而不是空字符串,以便执行的命令为: some-command "$var2" ... 并不是: some-command '' "$var2" ... 有没有比测试变量并有条件地包含它更简单的方法了? if [ -n "$1" ]; then some-command "$var1" "$var2" ... # or some variant using arrays to build the command # args+=("$var1") else some-command "$var2" ... fi 在bash,zsh等中,是否有参数替换无法扩展为空?我可能仍想在其余参数中使用globing,因此禁用该选项并取消引用该变量不是一种选择。

1
带有zsh的git完成:带空格的文件名未正确转义
Git完成: 我无法在系统上使用git的文件名自动完成功能。我在OS X(10.9.3)上将zsh(5.0.5)与git(1.9.3 )一起使用。两者zsh和git都已通过自制软件安装。(完整版本的输出在文章的底部。) git的文件名完成不像我期望的那样插入空格。当我输入名称中带有空格的文件名时,shell将插入文件名而不会出现空格。zsh的内置补全功能不会执行此操作,而gits可以。 这是我所看到的示例。 我有一个存储库,其中包含一些名称中带有空格的文件。 % ls -la test test four - latest.txt test three.txt test two 当我使用制表符补全插入文件名时,shell反斜杠会按预期转义文件名。 % echo "testing" >> test<tab> 连按三次标签后,会自动完成此操作。 % echo "testing" >> test\ four\ -\ latest.txt ––– file test test\ four\ -\ latest.txt test\ three.txt test\ two git status 以引号显示这些文件名(它完全了解最新情况): % git …
20 zsh  autocomplete  git 

3
删除除一种(或多种)文件类型外的所有文件类型
我一直在试图找到一个命令来删除文件夹中的所有文件,但不是一种文件类型。但是我似乎没有任何运气。到目前为止我尝试过的是: set extended_glob rm !(*.dmg) # this returns zsh:number expected rm ./^*.dmg # this returns no matches found 我正在使用的zsh版本是zsh 5.0.2 (x86_64-apple-darwin13.0.1)。
20 zsh  wildcards 

3
设置“ noclobber”有什么缺点吗?
鉴于zsh此命令可以破坏所有文件: >* 我认为设置该选项noclobber将是一个好主意。 >| file如果我想同时在bash和zsh中使用默认的clobber行为,则可以始终使用。(zsh还允许使用其他语法>!file)。 我猜测noclobber由于POSIX兼容性,默认情况下未设置,但请确保: 设置是否有缺点noclobber? 无论如何,是否noclobber只为交互式外壳设置?
20 bash  shell  zsh 

2
运行Zsh首次使用向导
第一次配置Zsh时,我做出了一个错误的选择,所以现在我想再次运行配置向导(第一次登录时运行的向导)。我该怎么做呢?

4
路径独立shebangs
我有一个脚本,希望能够在两台计算机上运行。这两台机器从相同的git存储库中获取脚本的副本。该脚本需要使用正确的解释器(例如zsh)运行。 不幸的是,这两个 env和zsh住在本地和远程计算机不同的位置: 遥控机器 $ which env /bin/env $ which zsh /some/long/path/to/the/right/zsh 本地机器 $ which env /usr/bin/env $which zsh /usr/local/bin/zsh 如何设置shebang,以便像/path/to/script.sh往常一样运行脚本中的Zsh可用脚本PATH?
20 shell  zsh  cron  path 

3
如何在zsh中删除斜线或单词?
重击行为 我刚从迁移bash到zsh。在中bash,我有以下一行~/.inputrc。 "\e\C-?": unix-filename-rubout 因此,Alt+ Backspace将删除回到前一个斜杠,这对于更改输入的路径很有用。 此外,bash默认情况下使用Ctrl+ w delete删除前一个空格,这对于删除整个参数(假定它们没有空格)很有用。 Zsh行为 在中zsh,Alt+ Backspace和Ctrl+ w做相同的事情。它们都删除前一个单词,但是它们对于构成一个分词符过于宽松,最多删除前一个-或_。有没有办法使zsh行为类似于bash?如果重要的话,我已经oh-my-zsh安装了。
20 zsh 


5
如何显示当前Virtualenv的名称?
我使用virtualenv,virtualenvwrapper,zsh,oh-my-zsh,终止,在Crunchbang。 我试图virtualenv像这样显示当前的名称 workon example (example)... 我已经尝试了许多解决方案,但似乎都行不通,这是我的.zshrc文件,我知道对其进行修复没什么大不了的,但是我找不到合适的解决方案。自从我上次使用Linux进行Django开发以来已经有很长时间了,但我忘记了以前的工作。 现在,我知道了username@crunchbang,我无法确定我正在使用哪个virtualenv。

3
如何删除交互式外壳中的路径的一部分?
bash和zsh中是否有删除路径中一个组成部分的快捷方式?例如,如果我键入ls ~/local/color/,并且光标位于行的末尾,是否有快捷方式删除该行color/的末尾?理想情况下,我需要vi模式和emacs模式下的解决方案
19 bash  shell  zsh 

4
运行chsh不会更改外壳
我想将我的shell从bash更改为zsh。 我尝试以zol用户身份登录时运行以下命令: $ chsh -s /bin/zsh $ sudo chsh -s /bin/zsh zol $ su -c 'chsh -s /bin/zsh zol' # The above all results with: $ password: $ chsh: Shell not changed. # zsh exists in /etc/shells.. chsh -l /bin/sh /bin/bash /sbin/nologin /bin/zsh 有什么事吗 我该如何解决?
19 shell  zsh  users 

1
fc命令中的字母代表什么?
我刚刚遇到了fc命令,该命令使您可以编辑上一个命令,然后再发布。 它具有FCEDIT用于设置其编辑器的自己的环境变量,以及POSIX程序员手册(1p)中的手册页。 它创建在一个文件/tmp目录,如果该文件(保存执行内容:wq中vim)。 除此之外,它还可以编号并列出fc -l以前执行的命令以供选择。 因此,知道这是非常方便的命令。 问题是它的名字的真正含义是什么?如何将命令与其功能联系起来? “一流”?甚至只是“功能”(撰写上一句话后,我想到什么)? 该手册将其简称为“ fc实用程序”。
19 zsh  command  posix 

1
用于自定义命令的动态zsh自动完成
我正在尝试为我编写的一些自定义函数编写完成函数,但是即使是最基本的函数,似乎也很挣扎。 一个示例函数是: function eb_instances() { if [ "$#" -ne 2 ]; then echo "Usage eb_instances <aws profile name> <environment name>" echo "e.g.:" echo " eb_instances production kraken-prod-api" return 1 fi aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Name,Values=$2" --profile=$1 --output=json | jq -r ".Reservations[].Instances[].PrivateIpAddress" } 这有两个位置参数,<aws profile name>以及<environment name> 我希望<aws profile name>可以通过运行来动态获得 …
19 zsh  autocomplete 

3
PS1 ='$(pwd)'为什么有效,为什么与PS1 = $(pwd)不同
为什么当我输入此命令时,提示会更改为我的目录? PS1='$(pwd)' 我使用的是单引号,也就是说没有插值,也就是echo '$(pwd)'-→$(pwd) 此外,请说我们已经弄清了它为什么有效……为什么它的功能不同于PS1=$(pwd)?(完全没有引号) 通过不同的方式,我的意思是如果我使用引号,那么当我浏览终端时,提示将不断更改为当前目录。但是,如果我不使用引号,那么提示符将始终保留为我首次输入命令时所在的目录PS1=$(pwd) 为什么?
18 bash  zsh  prompt  pwd 

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.