エイリアスが指定された場合、コマンドは機能しません。

エイリアスが指定された場合、コマンドは機能しません。

使いやすくするためにコマンドを生成してエイリアスに変換してみましたが、最良の形式を指定する方法はわかりません。助けてください?

このコマンドの原理は簡単です。 1つのコマンドでdockerコンテナと別のエイリアスコマンドを使用して2つのプロセスを実行します。以下のコマンドを確認してください。

docker exec -it database_one bash -c "find ./data -type d -name '202*-*-*' -exec mongorestore --drop {} \;" && docker exec -it database_one mongo logindb --eval 'db.users.update({"username":"admin"},{$set:{"password":"test", "reset_password": false}});'

このコマンドはそれ自体は問題ありませんが、エイリアスを作成しようとすると、dockerやfindなどの他のコマンドへのさまざまな内部呼び出しに問題が発生します。私はこれを成功せずに達成するためにevalなどを使ってみました。

ベストアンサー1

@ilkkachuが言ったように、関数を作成して.zshrcまたは.bashrcファイルに追加すると、次のようになります。

docker_command () {
        docker exec -it database_one bash -c "find ./data -type d -name '202*-*-*' -exec mongorestore --drop {} \;" && docker exec -it database_one mongo logindb --eval 'db.users.update({"username":"admin"},{$set:{"password":"test", "reset_password": false}});'
}

その後、コマンドを実行しdocker_commandて機能を実行できます。

あるいは、シェルスクリプトを作成して$ HOME / .local / bin / docker_commandに保存してシェルから直接実行することもできますが、この場合はPATH変数にコマンドのディレクトリを置く必要があります。実行時にパス変数を確認してくださいecho $PATH

オプションのいずれかを完了した後でも「別名」これをrcファイルに追加できます。 alias d=docker_command これを行うとd

おすすめ記事