Bash使用反引号/可执行部分命名别名(转义反引号)

时间:2017-03-24 10:35:41

标签: linux bash shell

我做了一个简单的bash命令来清除Laravel中的缓存:

for w in `php artisan | grep 'clear' | awk '{print $1;}'`; do php artisan $w; done

我想将其添加为别名,例如我只做laravel-cache。我跑了:

alias laravel-cache="for w in `php artisan | grep 'clear' | awk '{print $1;}'`; do php artisan $w; done"

认为这会添加一个别名,但在运行alias看到它们时,我发现:

# alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias laravel-cache='for w in clear-compiled
auth:clear-resets
cache:clear
config:clear
route:clear
view:clear; do php artisan view:clear; done'
alias ll='ls -alF'
alias ls='ls --color=auto

但显然这不起作用:

# laravel-cache
bash: syntax error near unexpected token `auth:clear-resets

所以,我的问题是你如何逃避反引号(或者在运行别名时执行可执行部分而不是在添加时)?

1 个答案:

答案 0 :(得分:2)

您可能应该创建function而不是alias

单行

laravel-cache () { for w in $(php artisan | grep 'clear' | awk '{print $1}'); do php artisan "$w"; done ; }

<强>格式化

laravel-cache () { 
  for w in $(php artisan | grep 'clear' | awk '{print $1}') 
    do
      php artisan "$w"
  done ;
}

通常,除了更改命令的默认选项(例如,管道到其他命令)之外,不建议使用函数。

例如,您可以将其添加到~/.bash_profile,然后将其与别名类似地使用。一旦添加到您的配置文件中,只需获取它,您应该准备好使用命令:

$ source ~/.bash_profile
相关问题