标签: zsh

跟踪shell脚本中执行的shell命令(例如zsh)

给定一个构建和执行某些命令的shell脚本(带有条件,连接和插值)(在我的情况下调用ImageMagick的convertcli),有没有办法列出在该脚本中执行的命令?由于脚本convert多次调用args,我想获得如下列表.

convert ...
convert ...
convert ...
...
Run Code Online (Sandbox Code Playgroud)

我在OS X中使用zsh,但可以切换到bash等.

bash shell scripting zsh command-line-interface

1
推荐指数
1
解决办法
4450
查看次数

无限递归别名`cd`

我想记录我最近的cd任何一个终端.我认为这样做的好方法是编写一个简单的bash脚本包装cd:

#!/bin/bash
cd $1 && echo `pwd` > /tmp/.cwd
Run Code Online (Sandbox Code Playgroud)

既然我希望cd在我的终端进程中发生,我需要运行脚本. bettercd.sh,对吗?

我的问题出现了:如果我cd对这个新的别名. bettercd.sh,我的shell也会cd使用. bettercd.sh- 无限递归扩展脚本内部.

有没有办法cd从不同的名称调用但具有相同的行为?换句话说,是否有一些命令行为完全(或非常相似)cd我可以在我的shell脚本中使用而不会在我cd每天使用别名时注意到差异?

我选择的shell是zsh,如果这在某种程度上是相关的.

谢谢你的帮助.

unix linux shell zsh

1
推荐指数
2
解决办法
745
查看次数

如何将bash/zsh参数转发给另一个shell

我正在研究一个包含大量tcsh配置脚本的系统,要求我通过tcsh运行大多数程序.我试图通过将此添加到我自己来轻松实现这一目标~/.zshrc:

# run command in tcsh
function t() {
    tcsh -c "$@"
}
Run Code Online (Sandbox Code Playgroud)

这适用于类似的东西t ls,但是失败了t ls -l,这会产生错误Unknown option: `-l' Usage: tcsh ...,并且显然是-l作为参数传递而tcsh不是ls.

如何引用传入的字符串$@

bash quotes zsh

1
推荐指数
1
解决办法
873
查看次数

获取脚本目录的bash脚本的zsh等价物是什么?

我想翻译这个bash脚本介绍一个zsh脚本.因此,我没有这方面的经验,我希望我可以在这里得到帮助:

bash脚本:

SCRIPT_PATH="${BASH_SOURCE[0]}";
if([ -h "${SCRIPT_PATH}" ]) then
    while([ -h "${SCRIPT_PATH}" ]) do SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
fi
pushd . > /dev/null
cd `dirname ${SCRIPT_PATH}` > /dev/null
SCRIPT_PATH=`pwd`;
popd  > /dev/null
Run Code Online (Sandbox Code Playgroud)

我已经知道的是,我可以 SCRIPT_PATH="$0";用来获取脚本所在的路径.但后来我的"readlink"语句出错了.

谢谢你的帮助

bash zsh

1
推荐指数
1
解决办法
3056
查看次数

内联评估bash/zsh表达式

我知道可以做类似的事情

echo `ls` "foobar"
echo $(ls) "foobar"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做类似的事情时

diff `pip freeze` requirements.txt
diff $(pip freeze) requirements.txt
Run Code Online (Sandbox Code Playgroud)

它失败.

我在这里错过了什么?谢谢!

PS我正在使用zshshell.

bash zsh

1
推荐指数
1
解决办法
609
查看次数

找不到zsh命令问题

我安装了sublime text 2并为它创建了一个符号链接并将其放在〜/ bin中.我在〜/ .zshrc中添加了〜/ bin到PATH变量.

如果我尝试执行subl(sublime的符号链接),我得到:

zsh: command not found: subl
Run Code Online (Sandbox Code Playgroud)

但是如果我执行〜/ bin/subl,它可以正常工作.

回应PATH表明〜/ bin在PATH变量中:

~/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)

知道什么可能导致命令找不到问题?

zsh zshrc

1
推荐指数
1
解决办法
2946
查看次数

Zsh提示自定义

嗨,我知道您设置了提示变量以编辑提示,如下所示

export PROMPT="This is the date %d"
Run Code Online (Sandbox Code Playgroud)

如何在提示符加载后每次执行命令并打印结果。

command-line zsh

1
推荐指数
1
解决办法
1438
查看次数

根据文件类型对文件进行排序

在HD问题和一些工作之后,我有一堆名称如"f1234","f1235"等的文件.

我的目标是根据文件类型对这些文件进行排序.例如,我想移动"pdfs"目录中的所有PDF文件.

对于一个文件,我可以这样做:"文件f1234",如果它是PDF,我可以"mv f1234 pdfs /".但是我有成千上万的文件...你能帮我用bash或zsh命令一次性排序所有的PDF吗?谢谢

linux bash shell zsh

1
推荐指数
1
解决办法
589
查看次数

如何用args创建shell别名?

我经常使用命令:

ack searchexpre -l --print0 | xargs -0 -n 1 sed -i -e sedexpression
Run Code Online (Sandbox Code Playgroud)

我想创建一个别名,如:

searchandreplace searchexpre  sedexpression
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

bash shell zsh sh

1
推荐指数
1
解决办法
37
查看次数

Zsh选项卡完成无法正常工作

虽然我过去曾经使用过Oh-My-Zsh,但我这次决定(即设置一台新电脑)我会尽量避免安装它以使事情变得更加精简.现在我正试图挑选Oh-My-Zsh的不敏感制表功能.围绕其源代码库挖掘,我找到了以下行:

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'

我相当有信心这是Oh-My-Zsh按照我的要求执行的行,所以我尝试将它添加到我的.zshrc.重启了我的终端.输入cd desk,然后点击[tab].没有骰子 - 我没有得到cd Desktop/.

以下是整个.zshrc参考:

# pure shell theme
autoload -U promptinit; promptinit
prompt pure

# completion definitions
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
fpath=(/usr/local/share/zsh-completions $fpath)

# syntax highlighting (must be last line)
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

shell zsh autocomplete

1
推荐指数
1
解决办法
5530
查看次数