通常は echo
の機能 コマンドは、コンソールに文字列 (テキストの一部) を表示することです。しかし今回は >
echo
の後に文字が追加されます コマンド、その出力をテキスト ファイルにリダイレクトする /etc/apt/sources.list.d/ros-latest.list
.
基本的に、このコマンド全体でテキストの一部がテキスト ファイルに書き込まれます。さて、ここからがトリッキーな部分です:
ファイルに書き込まれる文字列は、コンピューターごとに異なる場合があります。 $(lsb_release -sc)
の部分 echo
のときに解決されます (別のものに変更されます) コマンドが実行されます。
/etc/apt/sources.list.d/ros-latest.list
を開くことができます コマンドの前後でテキスト エディタを使用して変更を確認します。 (このコマンドの前にファイルが存在しない可能性があります。)
パッケージ管理とソフトウェア リポジトリ
Debian ベースの Linux ディストリビューションは、オペレーティング システムを最新の状態に保ち、新しいソフトウェア パッケージを簡単に取得してインストールするために、リポジトリ (アプリケーション インストール パッケージとアップグレード パッケージのデータベース) に依存しています。これらのリポジトリの場所は /etc/apt/sources.list
に保存されています 、ただし、通常は特定のアプリケーションに固有の追加のソースを /etc/apt/sources.list.d
に保存できます ディレクトリ。
パッケージインデックス更新コマンド apt-get update
の場合 が実行されると、オペレーティング システムはこれらのパッケージ リポジトリで利用可能なパッケージをチェックし、利用可能なソフトウェアをオペレーティング システムで利用可能なものとして登録します。これは、従来の apt-get install <package>
を使用してインストールできます。 指図。
これらのソフトウェア ソースの例:
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty main restricted
これらのソースが Linux ディストリビューションの特定のバージョンを参照することが重要です。例は信頼できるです これは、Ubuntu 14.04 のコードネームです。 lsb_release -a
を使用して、OS (debian ベース) の完全な詳細を照会できます。 または lsb_release -sc
つまり、短い とコードネーム .
あなたの質問では、部分 $(lsb_release -sc)
解釈され、オペレーティング システムからの結果が出力されます カスタム ソース ファイル ros-latest.list に コマンドが実行時に作成するもの。
コマンド言語インタープリター
sh
コマンドは bourne シェルです。これはいくつかのシェルの 1 つですが、古い標準と見なされており、一般的に存在することが確実なシェルです。 bash
もよく見られます 多くのシェルスクリプトで。その宣言は、異なるシェルが異なる構文を使用するため、使用するシェルを指定しています。
-c
に関しては フラグ、man bash
を引用 :
-c オプションが存在する場合、コマンドは文字列から読み取られます。文字列の後に引数がある場合、それらは $0 から始まる位置パラメータに割り当てられます。
''
内のすべて は文字列として読み取られるため、さまざまな引用符をエスケープする方法を理解したり、シェルが何かを間違って解釈することを心配したりする必要はありません。
tl;dr
コマンドは deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main
を出力します $(lsb_release -sc)
を置き換えて、カスタム ソース ファイルに 解釈された値で。