Linuxでの小さな波線は何をしますか?


25

私はそれが使用されている2つのインスタンスがあり、それぞれが何をしているのだろうと思っています:

  1. service=~

  2. mv ~/Desktop/Service$version.tgz $service

小さな波線~は何をしますか?

次に、その後、何をcd $serviceしますか?


3
これはタグに値する[
波打つ

3
Tildeはシェル固有であり、Linux固有ではありません。
デビッドアランフィンチ

@Cawas:聞いてください。
デイブシェロマン

@デイブありがとう!しかし、クリスはそれを嫌っているようです。まあ、人生は...に行く
cregox

これは本当にこれが尋ねられたのは初めてですか?私はこれが複製として閉じられることを期待していました。
エリックB

回答:


45

波打つものは「チルダ」と呼ばれます。

ホームディレクトリに展開されます。

試してみる

echo ~
echo $HOME

両方のステートメントは、ホームディレクトリを単独で1行に配置します。

詳細については、bash Tilde Expansionを参照してください。


8
上記の比較は有効ではありますが、誤解を招く可能性があります。チルダは、スクリプトおよびコマンドラインでのシェルの解釈中にのみ機能します。ただし、環境変数$ HOMEは、環境変数が機能する場所であればどこでも機能します。
メイ

36

「波状」はチルダと呼ばれます。Linuxでは通常 、ホームディレクトリを参照するために使用されます/home/username。また、$HOME環境変数に保存されます。を~ホームディレクトリの場所に展開するのは、ファイルシステムやOS自体ではなく、シェル(zshやbashなど)またはファイルマネージャー(Nautilusなど)の仕事です。

これを使用して、別のユーザーのホームディレクトリを参照することもできます。たとえば、他のユーザーのユーザー名がの場合、でbobホームディレクトリを参照できます。~bobこれはに展開され/home/bob/ます。

最初の例では、変数service~に設定しているため、ホームディレクトリに対応しています。これは同等ですservice=/home/usernameservice=$HOME

2番目の例では、ファイル~/Desktop/Service$version.tgz(または/home/username/Desktop/Service$version.tgz)をにコピーします/home/username。このコマンドは次と同等です:

mv ~/Desktop/Service$version.tgz ~

または

mv ~/Desktop/Service$version.tgz $HOME

または

mv ~/Desktop/Service$version.tgz /home/username/

3番目は、現在の作業ディレクトリ($PWD)をに変更し/home/username/ます。これは次と同等です:

cd /home/username/

または

cd $HOME

3
留意すべきもう1つの点があります。Tilde拡張はシェルまたはファイルマネージャーの仕事であり、Linuxファイルシステム自体の機能ではありません。したがって、構成ファイルでは機能しないことが多く、「〜」の前後に引用符を追加すると、シェルでの展開が停止します。
グランベル

3
[自分のユーザー名]またはその〜ボブが拡大へ/ホーム/ボブ〜がに/ホーム/拡大することを想定すべきではないので、ホームディレクトリは、必ずしもでは/ home嘘をつかないことにもに留意しなければならない
darkliquid

@Grumbelの提案に感謝します。@darkliquidの提案を追加してくれてありがとう@PriceChild!
ワッファー

10

#1と#2の両方で:〜はホームディレクトリです。したがって、qwertyの場合は、ディレクトリ/ home / qwertyになります。それls ~を見てみてください。

#1:変数サービスがホームディレクトリとして定義されているように見えます。

これは、#2がtgzファイルをデスクトップサブディレクトリからホームディレクトリに移動した後、#3がホームディレクトリに移動することを意味します。


5

コマンドは以下を実行しているようです。

  1. serviceという変数をホームフォルダーの場所に割り当てます。次に例を示します。

    /home/user
    
  2. ファイルをデスクトップからホームディレクトリのトップレベルに移動します。次に例を示します。

    /home/user/Desktop/Service$version.tgz $service
    
  3. 次に、スクリプトはディレクトリをホームディレクトリの最上位に変更します。

そのため、スクリプトは、ファイルを/home/userフォルダに移動するだけでデスクトップをクリーンアップするだけです。


1

ここで〜userは[user]のホームディレクトリにも展開されるので、これは自分ホームディレクトリへの単なるショートカットではありません。

例えば:

[guy@abox anotherdir]$ cd ~ 
[guy@abox ~]$ pwd
/home/guy
[guy@abox ~]$ cd ~john
[guy@abox john]$ pwd
/home/john
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.