Wie navigiere ich effektiv durch das Terminal und installierte Pakete / Befehle?

7

Ich bin ein Elektro- und Computeringenieur, der seit kurzem Ubuntu 16.04 verwendet, um einen Android-basierten Computer on Module (COM) an die Anforderungen eines neuen Produkts anzupassen, an dem ich für das Unternehmen arbeite, für das ich arbeite.

Natürlich scheint die Android-Entwicklung auf der Ebene, an der ich arbeite (HAL, Kernel usw., derzeit nicht so viele "Anwendungen"), auf der Plattform, mit der ich mich am wohlsten fühle (Windows), nicht angemessen zu sein Es war am sinnvollsten, auf Ubuntu umzusteigen, eine im Hinblick auf die Android-Entwicklung sehr unterstützte Plattform.

Nun zum relevanteren Teil.

Ich habe kein Problem damit, Ubuntu zu "verwenden" (Installation und Konfiguration waren ein Kinderspiel) und bin kein Unbekannter für Befehlszeilenschnittstellen wie das Terminal, das ich sehr lieber benutze und "beherrsche".

Meine größte Hürde beim "Mastering" des Terminals ist jedoch nicht die Syntax oder sogar die verschiedenen Binärdateien / Pakete selbst, sondern das Finden dieser Binärdateien / Pakete!

Ich habe man und info ausgiebig benutzt, aber diese Befehle helfen nur, wenn Sie den Befehl / die Funktion, nach der Sie suchen, im Voraus kennen, und obwohl die Suchfähigkeiten von man und info großartig sind, habe ich immer noch das Gefühl, dass ich ' Mir fehlt ein Index dessen, was mir zur Verfügung steht.

Um meine Fragen zusammenzufassen und klar aufzuzählen:

  1. Gibt es eine "Liste" von allem, was ich am Terminal aufrufen kann, das dynamisch ist und sich an die aktuell installierten Pakete / Binärdateien / Funktionen anpasst?

  2. Wo genau werden die verschiedenen installierten Pakete gespeichert? Ich habe in / bin / gesucht, aber das scheint nur ein Bruchteil dessen zu sein, was mir zur Verfügung steht. / bin / scheint viele Kernbinärdateien zu haben, aber andere scheinbar Kernbinärdateien wie info und whatis scheinen nicht vorhanden zu sein. Ebenso sind weder meine über apt erhaltenen installierten Pakete noch apt selbst vorhanden.

  3. Zusätzliches Guthaben Welche Denkprozesse sollten in einer Linux-Umgebung anders sein als in einer Windows-Umgebung? Wo ist / gibt es eine Pfadumgebungsvariable, die angibt, wo das System nach Binärdateien sucht? Gibt es eine Entsprechung zu einer "Programmdatei" oder einer "Software" (nur um aufzuzählen, was installiert ist!)? Irgendwelche anderen "Pro-Tipps" für einen versierten Windows-Typ / Entwickler, der Linux völlig fremd ist?

Dies ist mein erster Beitrag auf einer Stack Exchange-Website. Bitte verzeihen Sie mir, wenn ich gegen Regeln verstoßen oder Anstand akzeptiert habe. Ich lese die Richtlinien durch und glaube nicht, dass ich gegen eine von ihnen verstoße! In jedem Fall wäre jede Hilfe sehr dankbar!

Vielen Dank.

B-Ton
quelle

Antworten:

2

Gibt es eine "Liste" von allem, was ich am Terminal aufrufen kann, das dynamisch ist und sich an die aktuell installierten Pakete / Binärdateien / Funktionen anpasst?

Ja! Wenn Sie bashals Shell verwenden (was meiner Meinung nach die Standard-Shell ist), können Sie TABzweimal drücken , um eine vollständige Liste der Befehle zu erhalten, die Sie ausführen können (Vorsicht, es kann ziemlich lang sein).

Bearbeiten: Ich habe gelernt, dass das zweimalige Drücken der Tabulatortaste ohne Zeichen nur funktioniert, wenn bash seine Standardkonfiguration verwendet - nicht die von Ubuntu. Vielleicht möchten Sie also rennen bash --norc. Zweimaliges Drücken TABsollte dann funktionieren.

Eine andere Alternative wäre das Installieren und Konfigurieren zshoder ein fishguter Ersatz für Bash und mehr Funktionalität. (Ich bevorzuge Fisch, weil er beim Tippen eine gute automatische Vervollständigung bietet.)

Wo genau werden die verschiedenen installierten Pakete gespeichert? Ich habe in / bin / gesucht, aber das scheint nur ein Bruchteil dessen zu sein, was mir zur Verfügung steht. / bin / scheint viele Kernbinärdateien zu haben, aber andere scheinbar Kernbinärdateien wie info und whatis scheinen nicht vorhanden zu sein. Ebenso sind weder meine über apt erhaltenen installierten Pakete noch apt selbst vorhanden.

Sie können sehen, wo Ihre Shell nach installierten Programmen sucht:

$ 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

(Beachten Sie, dass dies für Sie möglicherweise etwas anders aussieht.)

Heutzutage befinden sich die meisten ausführbaren Dateien /usr/bingemäß FHS .

Wenn Sie wissen möchten, wo sich ein bestimmtes Programm befindet, verwenden Sie which:

$ which apt
/usr/bin/apt

Da ich keine großen Erfahrungen mit Windows habe, glaube ich nicht, dass ich den letzten Teil der Frage beantworten kann, aber:

  • $PATH ist die "Pfadumgebungsvariable, die angibt, wo das System nach Binärdateien sucht".
  • Die meisten Programme sind auf installiert /usr. (Dies ist in ausführbare Dateien ( /usr/bin), Bibliotheken ( /usr/lib) und freigegebene Dateien ( /usr/share) unterteilt. Die Dokumentation befindet sich in /usr/share/doc.)
YtvwlD
quelle
Wow Danke! Es ist unglaublich, dass mir so lange etwas so Einfaches (Tab Tab) entgangen ist! Ihr Beitrag war sehr hilfreich. Wie kann ich auch eine Liste aller Umgebungsvariablen erhalten?
B-Ton
Ich habe vielleicht zu früh gesprochen: Tab Tab scheint nichts zu tun? Gibt es eine Einstellung, die sich ändern muss oder so?
B-Ton
Das solltest du nicht müssen. Es kann jedoch einige Zeit dauern, bis etwas passiert, da die Auflistung lang sein wird (es sind 5389 Befehle für mich).
YtvwlD
Interessanterweise funktioniert das zweimalige Drücken der Tabulatortaste nur, wenn bereits ein Zeichen vorhanden ist. Wenn ich 'a' eingebe und zweimal die Tabulatortaste drücke, werden mir alle möglichen Kombinationen angezeigt, die mit 'a' beginnen. Dies hilft, ist aber nicht ganz das, was Sie beschrieben haben, indem Sie ALLE verfügbaren Vervollständigungen erhalten können. Irgendein Rat?
B-Ton
1
In jedem Fall hat mich Ihr Beitrag zum Befehl bash "compgen" geführt, der eine vollständige Liste der Befehle generiert. DAS ist so ziemlich das, wonach ich gesucht habe, also danke!
B-Ton
2

Um alle Funktionen aufzulisten, können Sie sie verwenden compgen -A function, aber einige davon sind Funktionen zur automatischen Vervollständigung, die Programme intern verwenden und die ein Benutzer niemals verwenden würde. Sie alle beginnen mit einem Unterstrich. Um sie zu ignorieren, gehen Sie wie folgt vor:

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

Verwenden Sie, um die Definition der Funktion anzuzeigen type $function_name. typeSie können auch feststellen, wo eine bestimmte Binärdatei / ein bestimmtes Skript gespeichert ist und ob der Befehl eine Binärdatei, ein Skript, ein Alias, eine Funktion usw. ist.

Ebenfalls nützlich: type -aZeigt an, ob ein Befehl an verschiedenen Stellen oder in verschiedenen Formen vorhanden ist. Führen type -a [Sie zum Beispiel Folgendes aus, und Sie erhalten Folgendes:

[ is a shell builtin
[ is /usr/bin/[
wjandrea
quelle
Ahh, diese Typfunktion ist ziemlich süß. Vielen Dank!
B-Ton