{"id":12582,"date":"2023-12-22T00:39:17","date_gmt":"2023-12-21T23:39:17","guid":{"rendered":"https:\/\/linux-bibel.at\/?p=12582"},"modified":"2023-12-23T20:39:05","modified_gmt":"2023-12-23T19:39:05","slug":"einzeiler-mit-fzf-dateien-suchen-und","status":"publish","type":"post","link":"https:\/\/linux-bibel.at\/index.php\/2023\/12\/22\/einzeiler-mit-fzf-dateien-suchen-und\/","title":{"rendered":"Fzf \u2013 die Ergebnisse mit Anklicken \u00f6ffnen"},"content":{"rendered":"<p><span class=\"\"><span style=\"font-size: 18pt;\">Einf\u00fchrung<\/span><\/span><\/p>\n<p><span class=\"\">Fzf ist ein Befehlszeilen-Tool. Damit sucht man nach Dateien und Verzeichnissen.<\/span><\/p>\n<p>Man installiert fzf unter Debian mit:<br \/>\n<code>sudo apt install fzf<\/code><\/p>\n<p>\u00dcblicherweise gibt man <em>fzf<\/em> in der Befehlszeile ein und dr\u00fcckt <em>Enter <\/em>(mit Vorteil, nachdem man mit <em>cd<\/em> beispielsweise ins Home-Verzeichnis gewechselt hat). Dadurch wird eine Liste von Dateien inkl. ihren Pfaden aufgebaut. Zuunterst ist immer Platz f\u00fcr einen Sucheintrag.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-12583 aligncenter\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/fzf-300x185.png\" alt=\"\" width=\"764\" height=\"471\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/fzf-300x185.png 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/fzf-150x92.png 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/fzf-768x472.png 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/fzf.png 839w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><\/p>\n<p>Schreibt man dort irgendwas rein, wird die Liste ersetzt durch eine andere mit Pfaden, in deren jedem die Buchstaben oder anderen Zeichen des Eintrags sichtbar werden, aber nicht unbedingt zusammenh\u00e4ngend, nur in der gleichen Reihenfolge. Im folgenden Beispiel lautet der Eintrag am Anfang <em>sc<\/em>. Schreibt man weiter, wird die Liste immer wieder aktualisiert.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-12584 aligncenter\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/fzf-Suche-beginnen-300x185.png\" alt=\"\" width=\"774\" height=\"477\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/fzf-Suche-beginnen-300x185.png 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/fzf-Suche-beginnen-150x92.png 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/fzf-Suche-beginnen-768x472.png 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/fzf-Suche-beginnen.png 839w\" sizes=\"auto, (max-width: 774px) 100vw, 774px\" \/><\/p>\n<p><span class=\"\"><span style=\"font-size: 18pt;\">Einzeiler<\/span><\/span><\/p>\n<p><span class=\"\">Fzf kann auch in sogenannten Einzeilern verwendet werden. Einzeiler sind kurze Befehlszeilen, die \u00fcblicherweise aus einer einzigen Zeile bestehen und verschiedene Befehle kombinieren, um komplexe Aufgaben auszuf\u00fchren. Fzf kann beispielsweise mit anderen Befehlen wie etwa <em>find<\/em>, <em>grep<\/em> und <em>ls<\/em> kombiniert werden, um die Suche und Navigation in Dateisystemen zu erleichtern.<\/span><\/p>\n<p>Besonders interessant ist aber folgende Kombination:<br \/>\n<code>fzf | xargs -I {} xdg-open {}<\/code><\/p>\n<p>Dadurch l\u00e4uft alles wie bei der einfachen Eingabe von <em>fzf<\/em>, aber man kann eines der Ergebnisse anklicken oder zu ihm mit den Pfeiltasten &#8222;hinwandern&#8220; und <em>Enter<\/em> dr\u00fccken. Darauf wird die Datei mit dem zu ihr passenden Standardprogramm ge\u00f6ffnet. Die Endung der gefundenen Datei kann pdf, txt, html usw. lauten, das spielt keine Rolle.<\/p>\n<p>Man kann <em>fzf<\/em> auch mit <em>ls -l<\/em> kombinieren:<br \/>\n<code>fzf | xargs ls -l<\/code><br \/>\nDadurch wird die angeklickte Datei nicht ge\u00f6ffnet, sondern man erh\u00e4lt ein Ergebnis wie dieses, d.h., zu einer Datei erh\u00e4lt man Informationen wie Berechtigungen usw., alles was <em>ls -l<\/em> so liefert:<br \/>\n-rw-r&#8211;r&#8211; 1 user user 95360 23. M\u00e4r 2023 dmesg.txt<\/p>\n<p>Ein anderer Einzeiler:<br \/>\n<code>fzf | xargs cat<\/code><br \/>\nSo kann man diejenigen angeklickten Dateien direkt im Terminal ansehen, die man auch sonst mit <em>cat<\/em> ansehen k\u00f6nnte.<\/p>\n<p>Weitere Kombinationen sind m\u00f6glich, eben auch z.B. mit <em>find<\/em> oder <em>grep<\/em>. Will man <em>fzf<\/em> auch in Skripten einsetzen, so findet man auf dieser Website ganz viele Beispiele:<br \/>\n<a href=\"https:\/\/github.com\/junegunn\/fzf\/wiki\/examples\">https:\/\/github.com\/junegunn\/fzf\/wiki\/examples<\/a><\/p>\n<p><span style=\"font-size: 18pt;\">Ein Alias f\u00fcr jeden Einzeiler<\/span><\/p>\n<p>F\u00fcr jeden Einzeiler kann man ein Alias anlegen:<\/p>\n<p><span class=\"\">1. Man \u00f6ffnet die Datei ~\/.bashrc mit einem Editor, etwa so:<br \/>\n<code>mousepad ~\/.bashrc<\/code><br \/>\n2. <\/span><span class=\"\">Unter dem Absatz &#8222;Alias definitions&#8220; kann man die gew\u00fcnschten Kurznamen und die zugeh\u00f6rigen Befehle eintragen. Zum Beispiel:<br \/>\n<code>alias fo='fzf | xargs -I {} xdg-open {}'<\/code><br \/>\n3. Man speichert die Datei und schliesst sie.<br \/>\n<\/span><span class=\"\">4. Um die \u00c4nderungen zu \u00fcbernehmen, f\u00fchrt man den Befehl <\/span><span class=\"\"><code>source ~\/.bashrc<\/code><\/span><span class=\"\"> aus.<br \/>\n<\/span><span class=\"\">5. Ab jetzt gen\u00fcgt es, f\u00fcr den Einzeiler nur noch seinen Kurznamen <em>fo<\/em> ins Terminal zu schreiben (und dann mit <em>Enter<\/em> weiterzufahren).<br \/>\n<\/span><\/p>\n<div class=\"pld-like-dislike-wrap pld-custom\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Gef\u00e4llt mir\" data-post-id=\"12582\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                            <img src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/Daumen-Hoch.png\" alt=\"Gef\u00e4llt mir\" \/>\r\n            <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">3    <\/span>\r\n<\/div><div class=\"pld-dislike-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-dislike-trigger pld-like-dislike-trigger  \" title=\"Gef\u00e4llt mir nicht\" data-post-id=\"12582\" data-trigger-type=\"dislike\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                            <img src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/Daumen-Runter.png\" alt=\"Gef\u00e4llt mir nicht\" \/>\r\n            <\/a>\r\n    <span class=\"pld-dislike-count-wrap pld-count-wrap\"><\/span>\r\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Einf\u00fchrung Fzf ist ein Befehlszeilen-Tool. Damit sucht man nach Dateien und Verzeichnissen. Man installiert fzf unter Debian mit: sudo apt install fzf \u00dcblicherweise gibt man fzf in der Befehlszeile ein und dr\u00fcckt Enter (mit Vorteil, nachdem man mit cd beispielsweise ins Home-Verzeichnis gewechselt hat). Dadurch wird eine Liste von Dateien inkl. ihren Pfaden aufgebaut. Zuunterst [&hellip;]<\/p>\n","protected":false},"author":18,"featured_media":12584,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[766,749,4],"tags":[],"class_list":["post-12582","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-einzeiler","category-suche","category-terminal"],"_links":{"self":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/12582","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/comments?post=12582"}],"version-history":[{"count":25,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/12582\/revisions"}],"predecessor-version":[{"id":12808,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/12582\/revisions\/12808"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media\/12584"}],"wp:attachment":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media?parent=12582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/categories?post=12582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/tags?post=12582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}