ファイル間にリンクを作成できるlnコマンドについてはすでに説明しました。ただし、これらのリンクを解決できるツールもあります。
このチュートリアルでは、リアルパスの基本について説明します。 およびreadlink 解決されたシンボリックリンクを出力に表示するという意味で類似している(同じではない場合)コマンド。ただし、その前に、ここでのすべての例がUbuntu18.04LTSとDebian10でテストされていることを言及する価値があります。
Linuxのrealpathおよびreadlinkコマンド
冒頭ですでに述べたように、realpathコマンドとreadlinkコマンドはどちらも、出力にシンボリックリンクの解決されたパスを表示します。
構文は次のとおりです。
realpath [OPTION]... FILE...
readlink [OPTION]... FILE...
そして、それぞれのマニュアルページの内容は次のとおりです。
Print the resolved absolute file name
print resolved symbolic links or canonical file names
以下は、これらのツールがどのように機能するかについてより良いアイデアを与えるはずのQ&Aスタイルの例です。
Q1。 realpathとreadlinkを使用してパスを解決するにはどうすればよいですか?
シンプルで、ファイルまたはパスを入力として指定するだけです。次の例は、シンボリックリンクを解決するこれらのコマンドの両方を示しています。
そして、パスの操作方法は次のとおりです。
したがって、2つのケースで両方のコマンドがシンボリックリンクを正常に解決したことがわかります。
Q2。ディレクトリを基準にして解決されたパスを出力するにはどうすればよいですか?
realpathコマンドを使用すると、これを簡単に行うことができます。たとえば、これがあなたがやろうとしていることだとしましょう:
realpath /var/local/Downloadslink
ただし、追加の要件は、このコマンドの出力を/ home/himanshuディレクトリに関連させることです。次に、実行する必要のあるコマンドは次のとおりです。
realpath /var/local/Downloadslink --relative-to=/home/himanshu
出力は次のとおりです:
Downloads
したがって、「-relative-to」オプションを使用すると、/ home/himanshuディレクトリを基準にして出力できることがわかります。
Q3。パス内の..を取り除く方法は?
シンボリックリンクの拡張/解決が目的ではない場合もありますが、パス内の..を取り除くことは目的です。 realpathコマンドを使用すると、これを実行できます。
-sコマンドラインオプションを使用するだけです。次に例を示します:
realpath -s ../../var/local/Downloadslink
このコマンドの出力は次のとおりです。
/var/local/Downloadslink
Q4。区切り文字を変更するにはどうすればよいですか?
デフォルトでは、改行が区切り文字として使用されます。ただし、どちらのコマンドも、代わりにNULを区切り文字として使用する方法を提供します。
どちらの場合も使用する必要があるオプションは-zです。
realpath -z [FILE/PATH]
readlink -z [FILE/PATH]
ここで説明したのは、これらのコマンドが提供するほんの一握りのオプション/機能です。これらの練習が終わったら、readlinkとrealpathのmanページ(こことここ)にアクセスして、これらのツールの詳細を確認してください。