ディレクトリを変更してエントリを一覧表示するエイリアスを作成することはできません。

ディレクトリを変更してエントリを一覧表示するエイリアスを作成することはできません。

私は存在することを知っていますこのトピックに関する以前の質問。しかし、モデレーターはその投稿から私の質問を削除したので、ここでも同じ質問をします。

私の.bashrc私は試みる:

alias cl='$HOME/.cFolder.sh'

その内容は.cFolder.sh次のとおりです。

#!/bin/bash

cFolder() {
    cd $1 && pwd && ls;
}

cFolder $1

新しいエイリアスを実行すると、次の結果が表示されます。

 紅玉 $ cl ドキュメント/myScripts/
/home/jonathan/Documentos/myScripts

arranque-fallido.log firstInstall.sh makeAllPacks.sh ORIGINAL-installPegaso.sh RestoreBackup.sh startInitialConfig.sh
USB インストールの構成.sh データベースの修理.sh makeInstallationPack.sh README.md データの復元.sh testZenity.sh
downloadDebs.sh installAppPack.sh myScripts-Functions.sh RecoverySystem.sh setNetwork.sh updateWeb.sh
 紅玉 

ファイルのリストが正しいです。ただし、実際のフォルダは変更されません。 .cFolder.shスクリプトは独自のスペースで実行されます。

オプション:

alias cl='cFolder() { cd $1 && pwd && ls; }'

私には効果がありません。この問題をどのように解決できますか?

ベストアンサー1

最初の試みは、ディレクトリを変更するシェルスクリプトを実行するためのエイリアスを作成することです。ほんの数箇所で説明したように、サブシェルで現在のシェルのディレクトリを変更することはできません。だからこれはうまくいきません。

2番目の試みは、関数を定義するエイリアスを作成することです。実行されないので、これはほとんど確かにあなたが望むものではありません。

作成したエイリアスを削除して.bashrc

cFolder() { cd "$1" || return; pwd; ls; }

次にシェルを起動すると、という新しい「コマンド」が作成されますcFolder。エイリアスは必要ありません。別のスクリプトは必要ありません。

おすすめ記事