GNU/Linux >> Linux の 問題 >  >> Linux

新しいソフトウェアをインストールする前に echo を使用する理由

通常は 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) を置き換えて、カスタム ソース ファイルに 解釈された値で。


Linux
  1. Bashで合法的なコマンドの前に変数を設定するのはなぜですか?

  2. Linuxエコーコマンド

  3. Linux ls コマンド - ファイルの一覧表示

  1. LinuxでSuコマンドを使用する方法

  2. showmountコマンドを使用してNFSサーバー上の共有を一覧表示する方法

  3. エコーコマンドでフォントを変更しますか?

  1. Linux での echo コマンドの例

  2. エコー:コマンドが見つかりません

  3. sudo:bundle コマンドが見つからないのはなぜですか?