使用できる簡単なスクリプトがあります。第七感覚(これは孤独なオオカミのゲームブックリーダー/プレイヤーです):
#!/bin/bash
GAME_PATH=$(dirname "$(readlink -f "$0")")
SEVENTH_SENSE_PATH=$(echo ~)"/.wine/drive_c/users/"$(whoami)"/Documents"
mkdir -p $SEVENTH_SENSE_PATH
ln -s -f "$GAME_PATH/Lone Wolf/books" "$SEVENTH_SENSE_PATH/Seventh Sense"
cd "$GAME_PATH/Lone Wolf"
wine Lone\ Wolf.exe
Windowsプログラムは、ワインディレクトリ内の予想される場所にフォルダ内のディレクトリを移動するのと同じくらい簡単ですが、これは問題ではありません。
ln
最初はこれが機能します(books
ユーザーとしてwineというフォルダへのシンボリックリンクを作成します)。問題は、2番目にシンボリックリンクが指すフォルダ(つまり、正確には元のフォルダ)内にシンボリックリンクを2回作成することです。 。Seventh Sense
Documents
books
Seventh Sense
books
何の害もありませんが、私が気づかなかった明らかなバグのようです。
(books
はフォルダです(Lone Wolf
スクリプトと同じフォルダにあります))。
ベストアンサー1
ln
cp
と同様に、mv
ターゲットが既存のディレクトリ(ディレクトリへのシンボリックリンクを含む)かどうかによって異なります。そうでない場合は、ソースを宛先名にコピー/移動/リンクします。ターゲットが既存のディレクトリの場合、ソースはソースと同じベース名を持つターゲットディレクトリの下のファイルにコピー/移動/リンクされます。
GNU ln(Linuxで利用可能)は、ターゲットがディレクトリへのシンボリックリンクである-n
場合、このオプションを使用してターゲットの下に書き込むのではなく、ターゲットを上書きします。
ln -snf "$GAME_PATH/Lone Wolf/books" "$SEVENTH_SENSE_PATH/Seventh Sense"
または、ターゲットがディレクトリであるかどうかをテストし、ディレクトリがある場合は再生成しないことがあります。
[ -d "$SEVENTH_SENSE_PATH/Seventh Sense"/. ] ||
ln -s "$GAME_PATH/Lone Wolf/books" "$SEVENTH_SENSE_PATH/Seventh Sense"
または、ターゲットを最初に削除してから無条件に作成することもできます。
rm -f "$SEVENTH_SENSE_PATH/Seventh Sense"
ln -s "$GAME_PATH/Lone Wolf/books" "$SEVENTH_SENSE_PATH/Seventh Sense"