Erklären Sie, wie diese Befehle mit Pipe und Bindestrich funktionieren?

Erklären Sie, wie diese Befehle mit Pipe und Bindestrich funktionieren?

Wie (und warum) funktionieren diese Befehle mit einem Pipe-Zeichen und einem Bindestrich genau?

pacman -Qqdt | sudo pacman -Rns -

Antwort1

Ein einzelner Strich ( -) ohne Option,bedeutet normalerweise "von der Standardeingabe lesen". Dies ist eine sehr gängige Konvention, die von vielen Programmen verwendet wird. Die Pipe , |ist eine Möglichkeit, die Standardausgabe eines Programms mit der Standardeingabe eines anderen zu verbinden. Da pacmanstandardmäßig nicht von der Standardeingabe liest, verwenden Sie die , wenn Sie dies möchten -.

Die angezeigten Befehle bewirken also (siehe man pacman):

  • pacman -Qqdt:

    -Q, --query
           Query the package database. This operation allows you to view installed
           packages and their files, as well as meta-information about individual
           packages (dependencies, conflicts, install date, build date, size). This can
           be run against the local package database or can be used on individual
           package files. In the first case, if no package names are provided in the
           command line, all installed packages will be queried. Additionally, various
           filters can be applied on the package list. See Query Options below.
    
    -q, --quiet
       Show less information for certain query operations. This is useful when
       pacman’s output is processed in a script. Search will only show package
       names and not version, group, and description information; owns will only
       show package names instead of "file is owned by pkg" messages; group will
       only show package names and omit group names; list will only show files and
       omit package names; check will only show pairs of package names and missing
       files; a bare query will only show package names rather than names and
       versions.
    
    -d, --deps
       Restrict or filter output to packages installed as dependencies. This option
       can be combined with -t for listing real orphans - packages that were
       installed as dependencies but are no longer required by any installed
       package.
    
    -t, --unrequired
       Restrict or filter output to print only packages neither required nor
       optionally required by any currently installed package. Specify this option
       twice to include packages which are optionally, but not directly, required
       by another package.
    

    Zusammengenommen bedeuten diese Optionen„Fragen Sie die Datenbank nach Paketen ab, die als Abhängigkeiten anderer Pakete installiert sind, zeigen Sie nur die Paketnamen an und beschränken Sie die Ausgabe auf die Pakete, die von keinem aktuell installierten Paket benötigt werden.“. Mit anderen Worten: Zeigen Sie die Pakete an, die installiert wurden, weil sie für etwas anderes benötigt wurden, die aber nicht mehr benötigt werden, weil das andere entfernt wurde.

  • sudo pacman -Rns -:

    -R, --remove
       Remove package(s) from the system. Groups can also be specified to be
       removed, in which case every package in that group will be removed. Files
       belonging to the specified package will be deleted, and the database will be
       updated. Most configuration files will be saved with a .pacsave extension
       unless the --nosave option is used. See Remove Options below.
    
    -n, --nosave
       Instructs pacman to ignore file backup designations. Normally, when a file
       is removed from the system, the database is checked to see if the file
       should be renamed with a .pacsave extension.
    
    -s, --recursive
       Remove each target specified including all of their dependencies, provided
       that (A) they are not required by other packages; and (B) they were not
       explicitly installed by the user. This operation is recursive and analogous
       to a backwards --sync operation, and it helps keep a clean system without
       orphans. If you want to omit condition (B), pass this option twice.
    

    Und das -(Hervorhebung von mir):

    Beim Aufrufen von Pacman muss eine Operation mit allen möglichen Optionen und Zielen angegeben werden, auf die die Operation angewendet werden soll. Ein Ziel ist normalerweise ein Paketname, ein Dateiname, eine URL oder eine Suchzeichenfolge. Ziele können als Befehlszeilenargumente angegeben werden. Wenn stdin außerdem nicht von einem Terminal stammt und ein einzelner Bindestrich (-) als Argument übergeben wird, werden Ziele von stdin gelesen.

    Daher pacman -Rns -werden Paketnamen aus der Standardeingabe gelesen und alle diese und ihre Abhängigkeiten entfernt, ohne Sicherungen aufzubewahren.

Der gesamte Befehl findet daher nicht mehr benötigte Pakete auf Ihrem System und entfernt sie. Dies ist eine nützliche Möglichkeit, Ihr System von nicht mehr benötigten Paketen zu bereinigen.

verwandte Informationen