.bashrc
各Markdownファイル(bashscriptファイル)に関数を生成してエディタで開くシェルスクリプトがあります。
例:
ls /home/nikhil/Notes/Studies
Physics.md
Chemistry.md
Studies.md
index.md
ls /home/nikhil/Notes/Sports
Football.md
Cricket.md
index.md
ご覧のとおり、一部のフォルダ(Studiesなど)には同じ名前(Studies.md)とindex.mdのファイルが含まれており、他のフォルダ(Sportsなど)にはindex.mdが含まれていますが、Sports.mdは含まれていますありません。
今私のbashスクリプトは、次の機能を生成します。
oPhysics(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Physics.md }
oChemistry(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Chemistry.md }
oStudies(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Studies.md }
oiStudies(){ ${Editor:-vim} /home/nikhil/Notes/Studies/index.md }
oFootball(){ ${Editor:-vim} /home/nikhil/Notes/Sports/Football.md}
oCricket(){ ${Editor:-vim} /home/nikhil/Notes/Sports/Cricket.md}
oiSports(){ ${Editor:-vim} /home/nikhil/Notes/Sports/index.md}
注:oStudies
そしてoiStudies
存在し、ただoiSports
存在します。
アプリケーション
oStudies
これで、ユーザーとしてnotoSports
の代わりにor(失敗)を入力したいので、関数が存在しない場合はoiSports
自動的に実行する必要があります。これは、ほとんどの場合、ユーザーが通常のMarkdownファイルを開くことに興味があり、そのファイルが存在しない場合にのみindex.mdのみが存在するフォルダ(Sportsフォルダなど)を覚えていないためです。oiSports
oSports
index.md
どうすればいいですか?oiBlahBlah
私が探しているパターンは、oBlahBlah
ユーザーが呼び出した関数が存在しない場合にそれを実行することです。oBlahBlah
提案に返信する
oStudies
実行したくないので、エイリアスを作成するのはうまくいきませんoiStudies
答え1
さまざまな質問に対する答え。ユーザーがデフォルトのMarkdownファイルを編集し、インデックスファイルのみを編集したい場合(インデックスファイルがない場合)、これを行う関数を書くのはどうでしょうか。その場合は、このoSports
機能をお試しください。関数に共通のコードを含めるようにリファクタリングします。
# Internal edit markdown function
_emd(){
if [ -e "/home/nikhil/Notes/$1/$2.md" ]
then
${Editor:-vim} "/home/nikhil/Notes/$1/$2.md"
else
${Editor:-vim} "/home/nikhil/Notes/$1/index.md"
fi
}
oPhysics(){ _emd Studies Physics ; }
oChemistry(){ _emd Studies Chemistry ; }
oStudies(){ _emd Studies Studies ; }
oiStudies(){ _emd Studies index ; }
oFootball(){ _emd Sports Football ; }
oCricket(){ _emd Sports Cricket ; }
oSports(){ _emd Sports Sports ; }
oiSports(){ _emd Sports index ; }
答え2
状況は明確ではありませんが、簡単な解決策は次のとおりです。
まず、各関数を次のように定義します。
oStudies() { oiStudies; }
などを使用し、必要に応じてスクリプトがこれらの機能をオーバーライドするようにします。