web-dev-qa-db-ja.com

ターミナルとインストールされたパッケージ/コマンドを効果的にナビゲートする方法は?

私は最近、Ubuntu 16.04を使用してAndroidベースのコンピューター上のモジュール(COM)を変更し、勤務している会社の新しい製品のニーズに合わせて電気およびコンピューターエンジニアをしています。

当然、Android私が取り組んでいるレベルでの開発(HAL、カーネルなど...現時点ではそれほど多くの「アプリケーション」ではありません)は、私がいるプラットフォームでは適切ではないようです(Windows)に最も快適であるため、Android開発に関して非常に多くサポートされているプラ​​ットフォームであるUbuntuに移行するのが最も理にかなっています。

より関連性の高い部分になりました。

Ubuntuを「使用」するのに問題はなく(インストールと設定は簡単でした)、Terminalなどのコマンドラインインターフェイスに慣れているので、私はこれを使用して「マスター」することを好みます。

ただし、ターミナルを「マスター」する際の最大のハードルは、構文やさまざまなバイナリ/パッケージ自体ではなく、findingそれらのバイナリ/パッケージです!

私は人と情報を広範囲に使用してきましたが、これらのコマンドは、あなたが探しているコマンド/機能を事前に知っている場合にのみ役立ち、人と情報の両方の検索能力が優れていても、私はまだ感じています私が利用できるもののインデックスが不足しています。

私の質問を要約して明確に列挙するために:

  1. 動的で、現在インストールされているパッケージ/バイナリ/機能の現在のセットに適応する、ターミナルで呼び出すことができるすべての「リスト」はありますか?

  2. さまざまなインストール済みパッケージは正確にどこに保存されますか?/bin /を見ましたが、それは私が利用できるもののほんの一部に過ぎないようです。/bin /には多くのコアバイナリが含まれているようですが、infoやwhatisなどの他のコアバイナリは存在しないようです。同様に、aptから取得したインストール済みパッケージも、apt自体も存在しません。

  3. 追加クレジット Windows環境とは対照的にLinux環境ではどのようなプロセスが異なると考えられますか?たとえば、システムがバイナリを探す場所を指定するパス環境変数はどこにありますか? 「プログラムファイル」または「プログラムの追加と削除」に相当するものはありますか(インストールされているものを列挙するだけです!)? Windowsに精通した開発者向けのその他の「ヒント」はありますが、complete Linuxの見知らぬ人ですか?

これはStack Exchange Webサイトへの私の最初の投稿なので、ルールに違反したり、礼儀作法を受け入れた場合はご容赦ください。ガイドラインを読み、違反しているとは思わない!いずれにせよ、どんな助けも大歓迎です!

ありがとうございました。

7
B-Tone

動的で、現在インストールされているパッケージ/バイナリ/機能の現在のセットに適応する、ターミナルで呼び出すことができるすべての「リスト」はありますか?

はい!シェルとしてbashを使用している場合(これは標準のシェルであると想定します)、TABを2回押すと、実行できるコマンドの完全なリストが表示されます(注意してください)かなり長くなる可能性があります)。

編集:文字なしでタブを2回押すと、bashがUbuntuの設定ではなくデフォルト設定を使用する場合にのみ機能することを学びました。したがって、bash --norcTABを2回押すと動作するはずです。

別の代替手段は、bashに代わる素晴らしい機能であるzshまたはfishをインストールおよび構成することです。 (私は fish を好む。これは、入力時にNiceオートコンプリートを提供するからだ。)

さまざまなインストール済みパッケージは正確にどこに保存されますか?/bin /を見ましたが、それは私が利用できるもののほんの一部に過ぎないようです。/bin /には多くのコアバイナリが含まれているようですが、infoやwhatisなどの他のコアバイナリは存在しないようです。同様に、aptから取得したインストール済みパッケージも、apt自体も存在しません。

シェルがインストールされているプログラムを探している場所を確認できます。

$ echo $PATH
/home/niklas/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/niklas/.gopath/bin:/home/niklas/.gopath/bin

(これはあなたにとって少し違って見えるかもしれないことに注意してください。)

現在、ほとんどの実行可能ファイルは/usr/bin as [〜#〜] fhs [〜#〜]

特定のプログラムの場所を知りたい場合は、whichを使用します。

$ which apt
/usr/bin/apt

私はWindowsの素晴らしい経験を持っていないので、質問の最後の部分に答えることはできないと思いますが、

  • $PATHは、「システムがバイナリを探す場所を指定するパス環境変数」です。
  • ほとんどのプログラムは/usr。 (これは実行可能ファイル(/usr/bin)、ライブラリ(/usr/lib)、および共有ファイル(/usr/share)。ドキュメントは/usr/share/doc。)
2
YtvwlD

すべての関数をリストするには、compgen -A functionを使用できますが、それらの束はプログラムが内部で使用するオートコンプリート関数であり、ユーザーは決して使用しません。それらはすべてアンダースコアで始まるため、無視するには次のようにします。

compgen -A function | grep -v "^_"

関数の定義を表示するには、type $function_nameを使用します。 typeは、特定のバイナリ/スクリプトが保存されている場所、およびコマンドがバイナリ、スクリプト、エイリアス、関数などであるかどうかも示します。

また、便利です:type -aは、コマンドが異なる場所または異なる形式で存在するかどうかを示します。たとえば、type -a [を実行すると、次のようになります:

[ is a Shell builtin
[ is /usr/bin/[
2
wjandrea