エイリアスをbashでインライン展開する方法はありますか?
$bash>alias ll='ls -l '
$bash>ll<tab>
$bash>ls -l
押すことができます Ctrl-Alt-e readline関数Shell-expand-line
を実行して、エイリアス、履歴、Wordの展開を行います。一部のキーボードでは Meta ではありません Alt。押す必要があるかもしれません Esc その後 Ctrl-e
関数alias-expand-line
とhistory-and-alias-expand-line
はデフォルトではバインドされていませんが、~/.inputrc
ファイルに次のような行を追加してバインドできます。
"\e\C-l": alias-expand-line
作るだろう Ctrl-Alt-l (小文字の「エル」)onlyエイリアス展開を実行します。
ZshとOh My ZSHをインストールしていて、簡単な解決策を探している人にとっては、 globalias があなたの友達かもしれません
すべてのグロブ式、サブコマンド、およびエイリアス(グローバルを含む)を展開します。
# .zsrc:
alias S="Sudo systemctl"
$ S<space>
# expands to:
$ Sudo systemctl
インストールするには、「globalias」を.zshrcプラグインリストに追加するだけです
plugins=(... globalias)
次に、
SPACE
を押して、記述したコマンドの展開をトリガーします。コマンドラインを展開せずにスペースのみを挿入する場合は、
CTRL+SPACE
を押します。
これは実際には、あなたがやろうとしていることを行うためのはるかに簡単な方法かもしれません(bash
version> = 4.2.29):
shopt -s direxpand
shopt -s expand_aliases
shopt
のman
ページ: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
これは動作しません。しかし、私はあなたがやりたいことをするためにこのようなことができると思います/期待しています。独自の補完スクリプトを使用する必要があります。これはあなたが作る方法です:
_ll()
{
COMPREPLY=(ls -l)
#The next line does not work. I just hope there were a way to replace that Word
COMP_WORDS[COMP_CWORD-1]="ls -l"
}
complete -F _ll ll
次に、完全なbash_completionファイル( http://caliban.org/bash )を入手し、上記のスクリプトを、URLから参照するスクリプトがbash_completion.dディレクトリ内のファイルに配置します。うまくいかない場合はお知らせください。
ありがとう。