私はUbuntu / Linuxの世界に初めて入門したので、私にはあまりにも過酷なことをしないでください。
私はWindowsでWSL2とbashシェルでUbuntuを使用しています。場合によっては、WindowsからUbuntuに、またはその逆にファイルをコピーしたい場合があります。これを行う方法についていくつかのチュートリアルをオンラインで見つけましたが、最も簡単な方法はに行くことです/mnt/c/Users/<your_user>
。
~
私のWindowsユーザーのホームディレクトリを表すチルダなどの変数を作成したいと思います。私は~~
それが予約されていないことがわかったので、二重チルダの使用を検討しました。
/bin
その名前で実行可能ファイルを作成しましたが、これが必要なパスに~~
なります。echo
しかし、これは使用するのが面倒です。
このような特殊キャラクターを作る方法はありますか~
?そうでなければ、より良い方法はありますか?
私が望む最終結果は、次のことができることです。
cp ~~/Desktop/somefile.txt ~/somefile.txt
答え1
あなたの場合は、シェル変数を代わりに使用できます。たとえば$WH
、まだ非常に短いです。
~$ export WH=/mnt/c/Users/your_user
これにより、変数がWH
Windowsホームディレクトリに設定され、環境変数としてエクスポートされます。その後、その変数を次のように使用できます。
~$ cp $WH/Desktop/somefile.txt ~/somefile.txt
この設定を永続的にするには、この変数仕様をファイルに追加するだけです.bashrc
。
ノートWindowsホームディレクトリパスにスペースが含まれている場合は、変数の定義以降の使用時にパスを引用する必要があります。
export WH="/mnt/c/Users/your user"
.bashrc
あなたとの間
~$ cp "$WH"/Desktop/somefile.txt ~/somefile.txt
コンソールで使用する場合。
答え2
WSLでは、私の解決策は私のホームディレクトリに私のWindowsプロファイルへのシンボリックリンクを作成することです。私は個人的に以下を使用します。
ln -s /mnt/c/Users/<username> ~/winhome
しかし、短縮することはできます。下にbash
、少なくとも~~
現れるシンボリックリンク名としても使用できますが、場合によっては間違って解釈されることがあります。このパスを試したい場合:
ln -s /mnt/c/Users/<username> ~/~~
その後、アクセスすると次のようになります。
cp ~/myfile ~/~~/Documents/
答え3
質問にタグが付けられていることはわかっていますが、 を使用すると、bash
次zsh
のようにできます。
hash -d w='/mnt/c/Users/<your_user>'
このようにして~w
その道路に広がります。これは「静的に名前が付けられたディレクトリ」。これは、変数拡張の使用に関するAdminBeeの提案と似ていますが、1つの違いは、タブ補完が拡張に対して機能することです~w/
。また、そのディレクトリの下にあり、プロンプトが現在のディレクトリを表示するように設定されている場合は、指定された名前で短いバージョンが表示されます。拡張子のフルパスではなくディレクトリです。
~
はこの機能に無効な文字なので~~
使用できません。
答え4
また、ほとんどのシェル(少なくともBash、Fish、Zsh、さらにはDash)で動作する@JoLの回答アプローチでは、w
Windowsユーザープロファイルを指すホームディレクトリに名前を付けて新しいユーザーを作成するだけです。それから~w/
ショートカットになりました。また、ユーザー名と連携してショートカットが~
生成されるようです~~
。詳しくは下記をご覧ください。
ユーザーレベルのセキュリティ概念がないため、この目的のためにWSLでユーザーを作成することには実際には欠点はありません(つまり、wsl -u root
パスワードなしでWSLインスタンスのすべてへのフルアクセス権がすでに付与されています)。
シンプル...
sudo useradd --home-dir /mnt/c/Users/<username> w
...WSLで動作します。ただし、「ベストプラクティス」は次のようになります。
sudo useradd --no-user-group --non-unique -u 1000 -g 1000 --shell /sbin/nologin -f0 -e0 --home-dir /mnt/c/Users/<username> w
w
これにより、デフォルトのWSLユーザーと同じユーザーIDとグループID(1000:1000)を持つユーザーが作成されます(これは、不要なuid / gidでシステムを汚染しないようにするための個人的な好みです)。このユーザーには、nologinシェル、期限切れのパスワード、およびロックされたアカウントがあります。その場合、WSLにはとにかくこの追加の「セキュリティ」は実際には必要ありません。
JoLの答えと同様に、これは次のことを可能にします。
cp ~/myfile ~w/Documents/
一部の極端なケースでは、問題が発生する可能性があります。オプションをuseradd
使用すると、ユーザー名を--badname
強制的に許可できます。~
sudo useradd --badname --home-dir /mnt/c/Users/<username> "~" # or ...
sudo useradd --badname --no-user-group --non-unique -u 1000 -g 1000 --shell /sbin/nologin -f0 -e0 --home-dir /mnt/c/Users/<username> "~"
お客様の初期リクエストの結果は次のとおりです。
cp ~/myfile ~~/Documents