2 Punkte von GN⁺ 2024-06-24 | 2 Kommentare | Auf WhatsApp teilen

So vermeiden Sie Konflikte bei benutzerdefinierten Befehlen

Problem

  • Möglichkeit von Namenskonflikten zwischen benutzerdefinierten Shell-Skripten und Systembefehlen
  • Besonders auf Systemen mit vielen verfügbaren Befehlen wie Debian steigt die Wahrscheinlichkeit von Konflikten

Lösung

  • Benutzerdefinierten Befehlen ein Komma (,) voranstellen, um sie von Systembefehlen zu unterscheiden
  • Das Komma hat in Dateinamen keine besondere Bedeutung und kann daher sicher verwendet werden

Vorteile

  • Die Verwendung des Kommas verhindert Befehlskonflikte
  • Über die Tab-Vervollständigung lässt sich die Liste benutzerdefinierter Befehle leicht anzeigen

Beispiel

$ ,«tab»
,complete-scp    ,go-thpgp      ,range
,complete-ssh    ,gr            ,svn-store-password
,coreoff         ,hss           ,umount
,coreon          ,mount-thpgp   ,find
,mount-twt

Meinung von GN⁺

  • Diese Methode kann Konflikte zwischen benutzerdefinierten Befehlen und Systembefehlen wirksam verhindern.
  • Die Verwendung eines Kommas ist eine einfache, aber wirkungsvolle Lösung, die auch Einsteiger leicht anwenden können.
  • Diese Technik ist besonders auf Systemen mit vielen Befehlen nützlich.
  • Als Alternative kann man auch in Betracht ziehen, Befehlen ein bestimmtes Präfix voranzustellen.
  • Mit dieser Methode lässt sich die Befehlsverwaltung strukturierter und effizienter gestalten.

2 Kommentare

 
GN⁺ 2024-06-24
Hacker-News-Kommentare
  • Der Name "comma_nds" ist witzig. Gute Idee, ich werde das wohl ausprobieren.
  • Anfangs dachte ich, das wäre eher nichts, aber besonders der Teil, bei dem per Tab eine Liste der Tools angezeigt wird, gefällt mir. In letzter Zeit hatte ich kaum Namespace-Konflikte.
  • Shell-Skript-Namen waren kurz und knapp, sodass sie mit Systembefehlen kollidieren konnten. Wenn man das Verzeichnis bin an den Anfang von $PATH setzt, lässt sich das Problem lösen.
  • Auch in Vim wird die Taste , häufig verwendet. Aus ähnlichen Gründen wird sie oft genutzt.
  • Ich habe das Problem nicht ganz verstanden, aber die Idee, die eigenen Befehle automatisch zu vervollständigen, ist gut.
  • Ich verwende kurze benutzerdefinierte Befehle. Es macht mir nichts aus, wenn sie mit Systembefehlen kollidieren. Im Kollisionsfall richte ich einen Alias mit einem anderen Namen ein.
  • Unter Windows kann man Python-Skripte leicht ausführen, unter Linux ist das schwieriger. Linux hat kein Konzept für zugeordnete Programme, was unpraktisch ist.
  • Um Kollisionen zu vermeiden, kann man lange Namen für ausführbare Dateien verwenden und kurze Aliasse setzen. Der Nachteil ist, dass die Tab-Vervollständigung unpraktisch wird.
  • Auch in der Text-Expander-/Textersetzungs-Community ist die Technik, mit einem Komma zu beginnen, verbreitet.
  • In ~/.local/bin hatte ich viele ausführbare Dateien, an die ich mich nicht erinnern konnte. Skriptnamen, die mit einem Komma beginnen, hätten beim Erinnern geholfen.
 
kayws426 2024-06-24

Wie wäre es mit der Verwendung von '_'?