1

ユーザーにファイル パスの入力を求めるシェル スクリプトを作成しています。

read -e -p "Enter the path to the file: " FILEPATH

次に、このファイル パスを使用して操作を実行します。つまり、フォルダーを圧縮します。

(cd "$FILEPATH"; tar -cvz *) > /tmp/torrent.tar.gz;

プロンプトで、エイリアス (ホーム ディレクトリ) を使用すると、関数が間違ったパスを圧縮する~ため、シェル スクリプトはこれを理解していないようです。tarこのエイリアスを許可できる方法はありますか?

また、タブ補完はプロンプトで大文字と小文字を区別するようです。どうすればそれを変更できるのだろうか?

4

2 に答える 2

1

eval を使用した例:

read -e -p "Enter the path to the file: " FILEPATH
eval FILEPATH=$FILEPATH
cd $FILEPATH
echo $PWD

あなたの場合、次のようになります。

read -e -p "Enter the path to the file: " FILEPATH
eval FILEPATH=$FILEPATH
(cd "$FILEPATH"; tar -cvz *) > /tmp/torrent.tar.gz;

スペースを処理するには、sed を使用できます。

read -e -p "Enter the path to the file: " FILEPATH
FILEPATH=$(echo $FILEPATH | sed 's/ /\\ /')
eval FILEPATH=$FILEPATH
cd "$FILEPATH"
echo $PWD
于 2012-12-18T02:31:16.843 に答える
0

次のように自分で置換を適用できます。

filepath=${filepath/\~/$HOME}

シェルにそれをさせる方法があるかどうかはわかりません。

他の質問への回答は次のとおりです: https://superuser.com/questions/90196/case-insensitive-tab-completion-in-bash

于 2012-12-18T01:52:28.880 に答える