Linux では、絶対パスは常にルート ディレクトリ "/" から始まるファイル パスを指し、相対パスは現在の作業ディレクトリから始まるファイル パスを指します。絶対パスはルート パス "/" を基準とした相対パスです。ファイルが移動しない限り、絶対パスは一定ですが、相対パスは現在のディレクトリを基準としています。プログラムが実行されると、現在の場所のディレクトリが変更される可能性があります。 , そのため、ファイルへの相対パスは固定されていません。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
Linux における相対パスとは
パスは Linux の最も基本的な概念の 1 つであり、すべての Linux ユーザーが知っておく必要があります。
Linux では、パスはファイルとディレクトリの参照方法を指します。これは、Linux ディレクトリ構造内のファイルまたはディレクトリの場所を示し、名前の後にスラッシュが続くもので構成されます。ファイルのパスを理解するだけで、ファイルが保存されている場所がわかります。たとえば、/home/cat
は、cat ファイルが保存されている場所を表します。ファイルが保存されている正確な場所を Linux システムに伝える限り、Linux システムはファイルを見つけることができます。
システム ユーザーは、ファイルまたはディレクトリにアクセスする場合、またはコマンドまたはスクリプトでファイルまたはディレクトリの場所を指定する必要がある場合にパスを使用します。
cat /home/abhishek/scripts/my_script.sh
パスがスラッシュ「/」で始まる場合、最初のスラッシュはルートを表し、パス内の残りのスラッシュは単なる区切り文字であることに注意してください。初心者は、ルート スラッシュと区切りスラッシュを混同することがよくあります。
上の図では、最初のパスはルート パス (/) で始まり、2 番目のパスは / で始まりません。これらの記述方法は両方とも正しく、1 つ目は絶対パス、2 つ目は相対パスです。
絶対パスと相対パスとは何ですか?
ファイルの保存場所を指定するには 2 つの方法があります。1 つは絶対パスを使用する方法です。および相対パス。
Linux システム内のすべてのファイル (ディレクトリ) は、図 1 に示すように、ルート ディレクトリ "/" から始まる逆ツリー構造に編成されていることがわかっています。
図 1 Linux システムのファイル構成構造図
絶対パス
絶対パスはルート ディレクトリ / から始まる必要があります。例:
/home/abhishek/scripts/my_scripts.sh
絶対パスを使用して bin ファイルの場所を示します。パスは /usr/bin として記述する必要があります。テスト コードは次のとおりです:
[root@localhost ~]# bin bash: bin: command not found <-- 没有找到 [root@localhost ~]# /usr/bin bash: /usr/bin: is a directory <-- 是一个文件
つまり、Linux システムにファイル名だけを渡すと、指定されたファイルは見つかりませんが、bin ファイルの絶対パスを Linux システムに渡すと、正常に見つけることができます。
相対パス
絶対パスとは異なり、相対パスはルート ディレクトリ / から始まりませんが、現在の作業ディレクトリから始まります。ファイルの保存場所を示すために相対パスを使用する場合、多くの場合、前述の 2 つの特別なディレクトリ、つまり現在のディレクトリ (. で表される) と親ディレクトリ (.. で表される) が使用されます。
たとえば、Linux システムに root としてログインすると、現在の作業ディレクトリはデフォルトで /root になります。現在の作業ディレクトリをルート サブディレクトリのデスクトップに調整する必要がある場合は、もちろん、
[root@localhost ~]# pwd <-- 显示当前所在的工作路径 /root [root@localhost ~]# cd /root/Desktop [root@localhost Desktop]# pwd /root/Desktop
ご覧のとおり、絶対パスを使用することで、現在の作業パスを正常に変更できました。ただし、それ以外では、相対パスを使用する方が簡単です。現在は /root にあり、Desktop は現在のディレクトリにあるため、次のようになります。
[root@localhost ~]# pwd <-- 显示当前所在的工作路径 /root [root@localhost ~]# cd ./Desktop [root@localhost Desktop]# pwd /root/Desktop
このコードでは、./Desktop は /root を基準とした Destop ファイルの相対パスを表します。
別の例を挙げると、Linux システムに root としてログインし、現在の作業ディレクトリを /root から /usr ディレクトリに変換する場合、2 つの方法があります:
#使用绝对路径 [root@localhost ~]# pwd <-- 显示当前所在的工作路径 /root [root@localhost ~]# cd /usr [root@localhost ~]# pwd /usr #使用相对路径 [root@localhost ~]# pwd <-- 显示当前所在的工作路径 /root [root@localhost ~]# cd ../usr <-- 相对 root,usr 位于其父目录 /,因此这里要用到 .. [root@localhost ~]# pwd /usr
要するに, 絶対的 パスはルート パス / を基準とした相対パスです。ファイルが移動しない限り、絶対パスは一定ですが、相対パスは現在のディレクトリを基準としています。プログラムが実行されると、現在のディレクトリは変更される可能性があります。 , そのため、ファイルの相対パスは固定されていません。
絶対パスと相対パスの違い
Linux のディレクトリ構造はルート ( /) を実行し、ブランチを生成します。
下図に示すように、現在 abhishek ディレクトリにいて、my_scripts.sh ファイルにアクセスしたいとします。 2 つのパスが示されています。
ls を使用するとします。 コマンドmy_script.sh のファイル情報を表示するには、絶対パスを使用します:
ls -l /home/abhishek/scripts/my_script.sh
然后,相对路径:
ls -l scripts/my_script.sh
那么,以上两种方式,除了文件路径不一样以外,其他的完全一样:
注:在Linux中,文件名区分大小写。可以有大写、小写、数字、点、中划线、下划线以及除了斜杠(/)之外的大多数字符。斜杠(/)作为保留字符,用于根目录和用于分割路径中的目录。
使用带有 . 和 .. 目录的相对路径
有两种特殊的相对路径:
如下图,我们要从 abhishek 目录中,到 prakash 目录中去。
切换目录,使用 cd 命令。如果使用绝对路径,可以这样:
cd /home/prakash
使用相对路径的话 ,需要用到特殊的相对路径 .. :
cd ../prakash
为什么要使用 .. 呢?因为相对路径要从当前目录开始,我们需要告诉 cd 命令向上一级,将我们带到 /home 目录,然后从那里在进入到 prakash 目录。
绝对路径始终以 / 开始,并且与当前位置无关;相对路径取决于当前的位置。
绝对路径和相对路径,应该使用哪个呢?
老实说,这个问题没有直截了当的答案。这要视情况而定。
如果你当前所在的目录层次结构比较深,并且需要向上或者向下一级移动,那么使用相对路径会更简单。
假设你位于
/home/username/programming/project/interface/src/header 目录中,并且需要访问 /home/username/programming/project/interface/bin 目录中的某些内容。使用相对路径可以避免键入所有冗长的目录名,只需在此处使用.././bin即可。
但是,如果你要从 /home/username/programming/project/interface/src/header目录访问 /usr/bin 目录中的某些内容,那么使用 ../../../../../../usr/bin 会比较麻烦,这个时候使用绝对路径更方便。
另一种情况,是在脚本或者程序中使用路径。如果位置是确定的,那么就使用绝对路径;如果项目中有多个文件夹,并且需要在其中之间切换,那么此处需要使用相对路径,因为你不确定最终用户会将程序放在什么地方。
推荐学习:Linux视频教程
以上がLinux の絶対パスと相対パスとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。