Questions tagged «zsh»

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

2
使用自定义zshrc启动zsh
我希望能够使用类似于命令的自定义rc文件启动zsh: bash --rc-file /path/to/file 如果这不可能,那么是否可以启动zsh,运行source /path/to/file,然后停留在同一zsh会话中? 注意:该命令zsh --rcs /path/to/file不起作用,至少对我而言不起作用... 编辑:整体而言,我希望能够执行以下操作: ssh在远程服务器“ example.com”上,运行zsh,source我的配置位于/path/to/file,所有命令为1。这就是我一直在努力的地方,尤其是因为我不想覆盖远程计算机上的任何配置文件。
17 linux  shell  zsh  oh-my-zsh 

2
SCP通配符在zsh中不起作用
我已经切换到zsh,并且工作正常。一件奇怪的事,当我尝试使用*通配符进行scp时,它不起作用,我必须投入大量精力。下面的第二个命令运行正常。 关于为什么会这样以及如何解决的任何想法? ~/dmp ⌚ 16:06:10 $ scp abc@123:/home/se/exports/201405091107/* . zsh: no matches found: root@uf3:/home/se/exports/201405091107/* ~/dmp ⌚ 16:06:53 $ bash sean@seanlaptop:~/dmp$ scp abc@123:/home/se/exports/201405091107/* .
17 zsh  wildcards 

4
从当前命令的中间运行一个子shell
在这种情况下,我经常发现自己。我正在输入命令,在完成命令之前,我需要检查其他内容。 有没有一种方法可以打开某种类型的子shell,到目前为止我的当前输入仍然被记住,然后当我退出该子shell时,我又回到了原来的状态? $ mylongcommand -n -e <SOME KEY COMBINATION WHICH OPENS A SUBSHELL> $ date ... $ exit $ mylongcommand -n -e <BACK TO WHERE I WAS> 我在用着 zsh
16 command-line  zsh 

1
当我键入scp命令时,可以制表符补全远程文件的神奇之处是什么?
大概这是我在oh-my-zsh设置中启用的某些插件提供的功能(我已经使用zsh多年了)。 自从我将公钥添加到服务器(现在我无需输入密码就可以SSH到服务器)以来,我就注意到了,当我scp在shell中编写命令时,我实际上可以制表完整的远程文件路径! 例如 $ diff <(scp Remoteuser@remote.domain.net:/var/www/html/ 我点击选项卡,它就可以了!(至于我要使用命令本身来完成的工作,我将使用scp“复制”到stdout,并将其作为文件添加到差异文件中。这样,我可以看到我之前部署到服务器的确切更改正在运行rsync) 我很好奇是什么使这项工作如此出色。它是与z shell集成的scp中内置的东西吗?或者是其他东西?

6
如何用较少的击键键入几个文件名
如果要使用imagemagick 将图像转换pdf为png图像,请执行以下操作: convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.pdf this_is_a_very_long_filename_of_my_pdf_file.png 出于某些原因,pdf文件的文件名通常很长,我希望该png文件具有相同的名称,但扩展名除外。 通常,我this_is_a_very_long_filename_of_my_pdf_file.pdf通过制表符选择两次zsh-menu,然后pdf将其更改png为第二个参数。 但是,有更快的方法吗?

5
您如何在不卸载的情况下“禁用” oh-my-zsh(和zsh)?
我正在尝试新的开发环境,包括zsh和oh-my-zsh。现在,我已经安装了oh-my-zsh,默认情况下,它将在我的终端(iTerm2和终端)上启动,始终以zsh和oh-my-zsh上的设置启动。我想知道是否可以“禁用”或停止使用oh-my-zsh的zsh及其设置,而不必卸载oh-my-zsh?知道如何将它们重新打开也很高兴。 目前,我的终端(我认为)自动进入zsh并自动使用oh-my-zsh。我希望对此有更多的控制,并且能够控制使用zsh的时间和使用oh-my-zsh功能的时间。 我还想知道的一件事是,终端应用程序如何知道在启动时开始运行哪个shell。能够控制也很好! 如果您尽可能多地解释您给我的每条命令的“为什么”,那将很有用!:) 我使用的是OSX。不确定这是否重要,但是我倾向于更喜欢更适用于更一般的Unix环境而不是自己的Unix环境的答案。
16 zsh  oh-my-zsh 

4
在echo命令中更改字体
是否可以在zsh或bash中更改echo输出的字体属性? 我想要的是类似于: echo -n "This is the font: normal " echo -n $font=italic "italic," echo -n $font=bold "bold," echo -n "and" echo -n $font=small "small". 以便在一行文本中显示 “这是字体:normal,italic,粗体,small ”。
16 bash  shell  zsh  fonts 

4
使用多行语法将路径添加到PATH
据我了解,将路径添加到PATH环境变量的通常方法是串联由:字符分隔的路径。 例如,如果我想三个路径添加到它/my/path/1,/my/path/2并且/my/path/3,我会做到这一点,如下所示: PATH=$PATH:/my/path/1:/my/path/2:/my/path/3 这不容易阅读。 有没有一种方法可以使用多行语法来定义或向变量添加路径?也许使用数组?我正在寻找这样的东西:PATH PATH = $PATH /my/path/1 /my/path/2 /my/path/3 如果有一些特定于Shell的有趣解决方案,那么我正在zsh中寻找解决方案。

3
什么是分词?为什么它在Shell编程中很重要?
我对单词拆分在其中扮演的角色感到困惑zsh。在使用C,Python或MATLAB进行编程时,我没有接触过这个概念,这引起了我的兴趣,为什么单词拆分似乎是Shell编程特有的。 之前,我已经在此站点和其他站点上阅读过分词的知识,但没有找到关于此概念的明确解释。维基百科对分词有一个定义,但似乎没有关于如何将其应用于Unix shell的参考。 这是我对以下方面感到困惑的示例zsh: 在Z Shell FAQ中,我阅读以下内容: 3.1:为什么在$var哪里var="foo bar"没有我所期望的? 在大多数Bourne-shell派生词中,诸如多词变量var="foo bar" 在传递给命令或在for foo in $var循环中使用时都会分解为多个词 。默认情况下,zsh没有这种行为:该变量保持不变。(这不是错误!请参阅下文。)SH_WORD_SPLIT存在此选项是为了提供兼容性。 但是,在《 Z Shell手册》中,我读到以下内容: SH_WORD_SPLIT (-y) <K> <S> 导致对未引用参数扩展执行字段拆分。请注意,此选项 与分词无关。(请参阅参数扩展。) 为什么会说SH_WORD_SPLIT有没有做与分词?单词拆分难道不是一本正经吗?
16 shell  zsh 

1
在bash和zsh中推送,popd与cd,cd-
bash与zsh中push / popd的行为之间有区别吗?在zsh cd中,cd-的行为与push / popd(在cd时会自动添加/ pops目录)完全相同,而在bash cd中则不会影响目录堆栈。 如果有人可以给我一个指针,那将是很好。
16 bash  zsh  cd-command  pushd 

1
哪里和哪里有什么区别
where和whichshell命令有什么区别?这里有些例子 ~ where cc /usr/bin/cc /usr/bin/cc ~ which cc /usr/bin/cc 和 ~ which which which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /usr/bin/which ~ which where /usr/bin/which: no where in (/usr/local/bin:/bin:/usr/bin:/home/bnikhil/bin:/bin) 也 ~ where which which: aliased to alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde which: shell built-in command /usr/bin/which /usr/bin/which …

1
在zsh中执行脚本-文件权限
我对执行文件权限不符合我的预期感到困惑。可能是因为我的期望是错误的。无论如何: 我有一个脚本文件,为了简单起见s,它位于中~/bin。对于此示例,文件仅包含以下几行: #!/bin/zsh echo "Test"; 很简单的。 我导航到~/bin目录,并chmod具有sto 的文件权限400-即,仅对我只读。没有执行权限。因此,我尝试通过输入脚本路径来执行脚本,并给出以下内容: % ./s zsh: permission denied: ./s 到目前为止,一切都很好。由于权限错误,无法执行该文件。将权限提升到最高500(授予执行权限)也可以正常工作-使用这些权限,文件可以正常执行: % ./s Test 这完全符合预期。但是然后我将chmod权限放回至400(再次关闭执行权限),尝试source处理该文件,然后发生这种情况: % source s Test 虽然权限是 400,但脚本将执行。 所以这是我的问题:为什么会./s失败(应该如此),但是source s正常执行?这不会破坏执行权限的全部目的吗? 在400权限下,sh s以及zsh s同时工作。 我确定我在做某事或在某处了解严​​重错误。可有人指出哪里给我,并解释之间的区别./s,source s,sh s和zsh s?


2
在什么情况下将不使用在路径中首先找到的可执行文件
我在osx上使用zsh(5.4.2_1和homebrew一起安装)有一些奇怪的行为,没有在路径中首次使用可执行文件。 这是场景: echo $PATH 返回: /usr/local/Cellar/zplug/HEAD-9fdb388/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 两者都 酿造 /usr/local/Cellar/zplug/HEAD-9fdb388/bin 和 usr/local/bin/brew 通过运行哪个-a brew返回以下内容可以确认这一点: /usr/local/Cellar/zplug/HEAD-9fdb388/bin/brew /usr/local/bin/brew 但是当我运行哪种冲泡时,它会返回: /usr/local/bin/brew 而且酿造确实运行/usr/local/bin/brew而不是/usr/local/Cellar/zplug/HEAD-9fdb388/bin/brew 当酿造走得更早时,这怎么会发生? 帮助表示赞赏。
15 zsh  path 

2
如何后台执行命令链?
我想像这样的命令链作为背景cp a b && mv b c && rm a。 我尝试做,cp a b && mv b c && rm a &但这仅是最后一个过程的背景。 如何为命令链设置背景?

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.