bashでcshエイリアスを機能させるにはどうすればよいですか?

bashでcshエイリアスを機能させるにはどうすればよいですか?

このエイリアスは、次の場合は正しく機能します/bin/csh が、次の場合は機能しません/bin/bash

alias cd='chdir !* && setprompt; clear;  ls -F'

基本的に私はcdどんなディレクトリとls色も欲しい。

答え1

それが何であるかはよくわかりませんが、setpromptエイリアスinはエイリアスのbashようなcshパラメータを受け入れません(使用!*)。シェルのエイリアシングはbashエイリアシングよりもはるかに簡単で、コマンドラインのデフォルトcshのテキスト置換ツールと同等の機能のみを提供します。

代わりに、ユーティリティをオーバーロードする短いシェル関数を書くことができますcd

cd () {
    command cd "$1" && clear && ls -F
}

または一行で、

cd () { command cd "$1" && clear && ls -F; }

このシェル関数宣言は、で別名を宣言するたびに表示されますbash(おそらく~/.bashrc)。

関数で利用可能な1つのパラメータを使用してください"$1"command cdこれを引数として使用します。command cd代わりにcdシェル関数を再帰的に呼び出すのを避けるために使用します。

このcdコマンドはディレクトリを変更し、成功すると呼び出され、clearディレクトリリストを作成するために使用されますls -F

関連情報