给定一个构建和执行某些命令的shell脚本(带有条件,连接和插值)(在我的情况下调用ImageMagick的convertcli),有没有办法列出在该脚本中执行的命令?由于脚本convert多次调用args,我想获得如下列表.
convert ...
convert ...
convert ...
...
Run Code Online (Sandbox Code Playgroud)
我在OS X中使用zsh,但可以切换到bash等.
我想记录我最近的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,如果这在某种程度上是相关的.
谢谢你的帮助.
我正在研究一个包含大量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脚本介绍一个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"语句出错了.
谢谢你的帮助
我知道可以做类似的事情
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.
我安装了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)
知道什么可能导致命令找不到问题?
嗨,我知道您设置了提示变量以编辑提示,如下所示
export PROMPT="This is the date %d"
Run Code Online (Sandbox Code Playgroud)
如何在提示符加载后每次执行命令并打印结果。
在HD问题和一些工作之后,我有一堆名称如"f1234","f1235"等的文件.
我的目标是根据文件类型对这些文件进行排序.例如,我想移动"pdfs"目录中的所有PDF文件.
对于一个文件,我可以这样做:"文件f1234",如果它是PDF,我可以"mv f1234 pdfs /".但是我有成千上万的文件...你能帮我用bash或zsh命令一次性排序所有的PDF吗?谢谢
我经常使用命令:
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)
我怎么能这样做?
虽然我过去曾经使用过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)
我究竟做错了什么?