- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前的情况是,我在 .zshrc
中定义了一些别名像
alias gco='git checkout'
alias cdp='cd ..'
$> gco master
> Command: git checkout master
> Git process ...
最佳答案
这是一个巧妙的问题。我们可以通过定义几个函数来扩展别名,然后使用 preexec
钩子(Hook)在我们执行函数之前运行它们。
我从 here 得到了答案.
1. 评估所有别名
_aliases="$(alias -Lr 2>/dev/null || alias)"
alias_for() {
[[ $1 =~ '[[:punct:]]' ]] && return
local found="$( echo "$_aliases" | sed -nE "/^alias ${1}='?(.+)/s//\\1/p" )"
[[ -n $found ]] && echo "${found%\'}"
}
alias -r
打印所有
regular
别名(非全局或后缀)和
alias -L
“以适合在启动脚本中使用的方式”打印它们。
alias_for()
函数进行一些清理,删除引号并放置
alias
在行前。当我们做
echo ${_aliases}
,我们得到这样的结果:
alias history='fc -l 1'
alias ls='ls -F -G'
alias lsdf='ls -1l ~/.*(@)'
alias mv='mv -v'
alias
的输出进行比较:
history='fc -l 1'
ls='ls -F -G'
lsdf='ls -1l ~/.*(@)'
mv='mv -v'
expand_command_line() {
[[ $# -eq 0 ]] && return # If there's no input, return. Else...
local found_alias="$(alias_for $1)" # Check if there's an alias for the comand.
if [[ -n $found_alias ]]; then # If there was
echo ${found_alias} # Print it.
fi
}
preexec
功能非常适合这个。这是一个功能:
Executed just after a command has been read and is about to be executed. If the history mechanism is active (and the line was not discarded from the history buffer), the string that the user typed is passed as the first argument, otherwise it is an empty string. The actual command that will be executed (including expanded aliases) is passed in two different forms: the second argument is a single-line, size-limited version of the command (with things like function bodies elided); the third argument contains the full text that is being executed.
autoload -U add-zsh-hook # Load the zsh hook module.
add-zsh-hook preexec expand_command_line # Adds the hook
# add-zsh-hook -d preexec expand_command_line # Remove it for this hook.
$ 1
cd -
$ rake
bundle exec rake
^C
$ chmod
usage: chmod [-fhv] [-R [-H | -L | -P]] [-a | +a | =a [i][# [ n]]] mode|entry file ...
chmod [-fhv] [-R [-H | -L | -P]] [-E | -C | -N | -i | -I] file ...
$ git lg1
fatal: Not a git repository (or any of the parent directories): .git
chmod
),不会显示完整的命令。运行别名命令(如
1
或
rake
)时,将显示完整的命令。
git
运行别名(例如
git lg1
),
git
别名未展开 .如果你看我的
first link , 完整的例子确实使用
git
别名扩展 - 如果 git 别名对您至关重要,您应该接受并修改。
关于alias - 在 zsh 或 bash 中打印执行的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18143307/
我正在尝试在 Macos big sur 上执行 .zsh 脚本,但它不允许我这样做。 每当我在终端中运行 .zsh 时,它会显示“/bin/zsh:无法打开输入文件:file-name.zsh” 我
在此示例中,我尝试将所有值从一个关联数组复制到另一个关联数组。我正在使用 zsh -n 检查我的代码是否存在语法错误,但是这个会抛出一个 test:12: bar: assignment to inv
我想获取$*的最后一个元素。到目前为止,我发现的最好的是: last=`eval "echo \\\$$#"` 但这似乎太不透明了。 最佳答案 在zsh中,您可以使用P parameter expa
有没有办法做type of auto-suggestion Fish does在 Zsh 中? 最佳答案 https://github.com/tarruda/zsh-autosuggestions正
我希望通过为 dtach 创建一个 zsh 别名来加快我的工作流程,其功能如下: dtach -A /tmp/{directoryName} -r winch dvtm 我尝试过这样做,但不起作用。
我已经安装了 NVM,然后我发现了 oh-my-zsh 并安装了它。它似乎有一个 nvm 插件,我在 .zshrc 中启用了它。 我还将其放入我的 .zprofile export NVM_DIR="
每当我运行 bower install或任何 bower命令,它最终运行为 bundle install或来自 bundler 的其他内容.我正在使用 oh-my-zsh 运行 zsh shell。它
如果在 bash 我做(从命令行) echo $0 输出是 bash 和其他 shell 类似。 但是如果我在 中做同样的事情zsh 输出是 -zsh 为什么zsh前面有那个破折号? 最佳答案 she
关于bower.io有一条警告说: Warning On prezto or oh-my-zsh, do not forget to alias bower='noglob bower' or bow
我想为接受目录作为参数的命令编写自定义补全。我认为通过示例来解释它应该如何工作是最简单的。 假设我在某处定义了一个目录列表: d=(~/somedir/foo ~/somedir/foo/bar ~/
我正在尝试构建一个 zsh 函数,该函数根据时间间隔返回输出。最初“你渴了”条件为真,但在通过命令行更改变量 thirsty 并将其设置为 false 后,初始 if 语句通过,但变量 thirsty
如果在 Zsh 中(在 macOS 或 Ubuntu 上)连续运行以下命令: date +%s echo \ a\ b\ c 然后可以按 5 次向上箭头滚动回到第一个命令。 有没有一种方法可以通过两次
在常规数组中,我可以使用 (i) 或 (I) 来搜索与给定值匹配的条目的索引(从头开始的第一个匹配项或数组的末尾,分别): list=(foo bar baz) echo $list[(i)bar]
我是 zsh 的新手。 我可以输入类似 cd %wiki 的内容吗?跳转到 ~/prj/golang/gowiki如果它是独一无二的。 但是,如果 cd %unix 可能有两个以上的目录, 只显示匹配
我尝试了无数方法来获得我想要的东西,但似乎没有任何效果。我总是得到类似 2:not found 的结果. 我想捕获命令的输出,然后测试它是否等于“!”,如下所示: function test() {
我在我的 mac 上使用 zsh (oh-my-zsh),我不明白为什么在我的输出结束时总是有这个字符:“%” 如果我不把 export TERM="xterm-256color"放在我的 ~/.zs
给定一个 Zsh 数组 myarray,我可以把它作为一个子集数组 set -A subarray for el in $myarray do if [[ $el =~ *x*y* ]] th
有时候我们在终端运行一个命令,输出太大了,忘了把“|less”放在最后。所以我想知道当输出在 zsh 中太大时是否可以分页? 我尝试使用 python 和 less 来实现这个功能: #!/usr/b
我有一个设置,我很高兴在机器之间共享我的配置文件,但我发现我经常想在 zsh (Ctrl + R) 中搜索,我不记得我在哪台机器上输入了命令。理想情况下,我希望从我的任何机器中搜索以前命令的规范重复列
如何根据现有的完成定义和默认参数为函数设置完成。 一个简化的例子(可以改写为别名): gpl() { git pull origin $@ } 这应该与 git pull origin 之后的
我是一名优秀的程序员,十分优秀!