Endlich! Terminal: schnell Ordner finden

Hilfe bei der Installation von Manjaro Linux!
Antworten
Benutzeravatar

Themen Author
m-bostaurus
Forum Gott
Forum Gott
Beiträge: 306
Registriert: Mittwoch 18. Mai 2016, 19:44
Wohnort: Nürnberg
CPU: AMD Ryzen 9 3950X / Ryzen 5 / i3 ca. 2005
GPU: nVidia GTX 1070Ti / nVidia
Kernel: 510
Desktop-Variante: stable (LXQt, Mate, KDE, XFCE)
GPU Treiber: nVidia - proprietär auf beiden Rechnern
Hat sich bedankt: 42 Mal
Danksagung erhalten: 11 Mal

Endlich! Terminal: schnell Ordner finden

#1

Beitrag von m-bostaurus »

Auf der Suche nach komfortablen Möglchkeiten des Arbeitens mit einem Terminal oder der KDE-Konsole bin ich auf ein Script gestoßen, mit dem ich meinen Rechner schnell nach einem bestimmten Ordner durchsuchen und in ihn wechseln kann. Wenn es mehrere gleichlautende Verzeichnisse gibt, erhalte ich einen Überblick und kann den gesuchten anwählen.
Die Quelle des Scripts ist https://demystifikation.wordpress.com/2 ... rsion-1-1/
Der Code ist:

Code: Alles auswählen

#!/bin/bash
#
# fcd.sh:
#
# Fast change directory. Should be sourced from ~/.bashrc file, since it is and
# needs to be a function.
#
#	Update Ver.1.1, 2021-03-03
#		Bugfix for missing results when fast changing to "bin", thanks to m_bostaurus.
#	Update Ver.1.0, 2021-02-07
#		changed from egrep to mapfile, see code. Handles blanks in paths now flawlessly.
#   Update Ver.0.9, 2013-08-21, comments, publication
#
#   Prototyp 2010
#
# This program depends on locate/updatedb, which aren't always installed/activated.
# If you use the shell on a regular basis, you should have them installed, though.
#
#	(c) GPLv3 (2010, 2021)
#
fcd ()
{
	suchdirname=$1
	# list=$(locate $1 | egrep "/$1$"); # Version 1
    # update 12.02.2021
    # mapfile -d '' list < <(locate -b -0 -r "$suchdirname$")
    # update 19.02.2021
    mapfile -d '' list < <(locate -b -0 -r "^$suchdirname$")
    # count=$(echo $list | wc -w );
    # update 19.02.2021
    count=${#list[@]}
    case $count in
        0)
            echo "unknown directory: "$1 && return
            # could search for partial matches Doc => Documentation
        ;
        1)
            if [[ -d "${list[0]}" ]]; then
                echo "1) match: $list";
                cd "$list";
            else
                echo "not a directory: $1";
            fi
        ;
        *)
            select directory in "${list[@]}" "/exit/";
            do
                if [[ "$directory" = "/exit/" ]]; then
                    break;
                fi;
                if [[ -d "$directory" ]]; then
                    echo "multi) $directory";
                    cd "$directory";
                    break;
                else
                    echo "not a directory: "$1;
                fi;
            done
        ;
    esac
}

Zur Einrichtung bin ich folgende Schritte gegangen:
  • a) Ich habe den Code in eine Datei namens fcd.sh in ~/.local/bin/ geschrieben und ausführbar gemacht.
  • b) In die Datei ~/.bashrc fügte ich die Zeile source /Speicherort/bin/fcd.sh ein. Die Änderung dieser Datei wird erst nach Ab- und Anmelden des Users wirksam.
  • c) Ich installierte m-locate mittels sudo pacman -S m-locate
  • d) Ich änderte die durch die Installation entstandene Datei /etc/updatedb.conf; sie enthält eine Zeile, die mit PRUNEPATH beginnt. In ihr wird festgelegt, wo nicht gesucht wird für die Erstellung der Datenbank. In der steht regulär z. Bsp. /media oder auch /mnt. Nach dem Löschen dieser Angabe, dem Speichern und einem nachfolgenden sudo updatedb werden Ordner an diesen Orten zuverlässig gefunden.
    Auf S. 47 in LinuxWelt 1/2021 fand ich übrigens einen Hinweis für diejenigen, die auch USB-Laufwerke scannen wollen. In der genannten Datei gibt es auch eine Zeile, beginnend mit PRUNEFS. In dieser muss man usbfs löschen. Danach werden auch USB-Laufwerke für die Erstellung der Datenbank gescannt.
  • e) Im Terminal gebe ich nach Aus- und Einloggen zum Beispiel ein: fcd Dokumente und erhalte eine Liste mit allen Ordnern meiens Rechners, die so heißen ... und verschollen geglaubte Verzeichnisse habe ich auch schon wiedergefunden ...
Mein Dank geht an user unknown von https://demystifikation.wordpress.com :)
Dieser Hinweis wird von mir auf folgenden Foren veröffentlicht: https://forum.manjaro.org/ (englisch), https://www.manjaro-forum.de/ und https://de.manjaro.org/
PS: Ich tät die Datei gerne hochladen, finde aber kein Dateiformat, das unterstützt wird (weder txt noch sh).

Benutzer 334 gelöscht

Re: Endlich! Terminal: schnell Ordner finden

#2

Beitrag von Benutzer 334 gelöscht »

m-bostaurus hat geschrieben: ↑Mittwoch 3. März 2021, 11:05 PS: Ich tät die Datei gerne hochladen, finde aber kein Dateiformat, das unterstützt wird (weder txt noch sh).
Siehe Anhang ;)

MfG
Dateianhänge
fcd.zip
(914 Bytes) 82-mal heruntergeladen

maroco
Forum Kenner
Forum Kenner
Beiträge: 101
Registriert: Freitag 29. November 2019, 08:07
CPU: Dual Core Intel Core i5-7200U
GPU: Intel HD Graphics 620
Kernel: 5.15
Desktop-Variante: XFCE oder Openbox
GPU Treiber: i915
Hat sich bedankt: 5 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Re: Endlich! Terminal: schnell Ordner finden

#3

Beitrag von maroco »

@m-bostaurus
Danke für den Tipp. Das empfohlene Skript fcd.sh bietet eine nette Arbeitserleichterung.

Allerdings hast Du den Code offensichtlich falsch in die Codebox kopiert. In der case-Anweisung müssen die einzelnen Fallunterscheidungen jeweils mit zwei Semikolons (;;) statt mit einem abgeschlossen werden. Sonst funktioniert das Skript nicht.

Außerdem heißt das vorausgesetzte Paket nicht m-locate, sondern mlocate. Offenbar hast Du irgendwie den Paketnamen mit Deinem Benutzernamen durcheinander gebracht. :D
MediaTerm, mein MediathekView-Client für die Kommandozeile: https://mediaterm.martikel.bplaced.net/
Benutzeravatar

Themen Author
m-bostaurus
Forum Gott
Forum Gott
Beiträge: 306
Registriert: Mittwoch 18. Mai 2016, 19:44
Wohnort: Nürnberg
CPU: AMD Ryzen 9 3950X / Ryzen 5 / i3 ca. 2005
GPU: nVidia GTX 1070Ti / nVidia
Kernel: 510
Desktop-Variante: stable (LXQt, Mate, KDE, XFCE)
GPU Treiber: nVidia - proprietär auf beiden Rechnern
Hat sich bedankt: 42 Mal
Danksagung erhalten: 11 Mal

Re: Endlich! Terminal: schnell Ordner finden

#4

Beitrag von m-bostaurus »

@maroco
Danke für die Hinweise und den freundlichen Stupser m-bostaurus > m-locate ... ich musste laut lachen.
Was die Semikolons in der case-Abteilung angeht, werde ich gleich user unknown benachrichtigen. Der Code stammt von ihm; ich habe lediglich ein wenig getüftelt, wie das unter Manjaro läuft. Bei mir funktioniert alles; auf seiner Webseite gibt es allerdings Rückmeldung eines (Ubuntu-?) User, dessen home nicht ausgelesen wird, und vielleicht gibt es einen Zusammenhang.
Benutzeravatar

Themen Author
m-bostaurus
Forum Gott
Forum Gott
Beiträge: 306
Registriert: Mittwoch 18. Mai 2016, 19:44
Wohnort: Nürnberg
CPU: AMD Ryzen 9 3950X / Ryzen 5 / i3 ca. 2005
GPU: nVidia GTX 1070Ti / nVidia
Kernel: 510
Desktop-Variante: stable (LXQt, Mate, KDE, XFCE)
GPU Treiber: nVidia - proprietär auf beiden Rechnern
Hat sich bedankt: 42 Mal
Danksagung erhalten: 11 Mal

Re: Endlich! Terminal: schnell Ordner finden

#5

Beitrag von m-bostaurus »

@maroco
Du hast Recht, was die Semikolons angeht. User unknown von https://demystifikation.wordpress.com/ schreibt mir: "Die Case-Statements benötigen ein doppeltes Semikolon.
Allerdings sind die auch in meinem Code vorhanden. Wieso die beim Kopieren
zu Einem eingedampft wurden, darüber könnte ich nur spekulieren."
Ich weiß es auch nicht. Ich habe den Code von oben genannter Website in meine lokale und dann in diese Webseite hineinkopiert; lokal zwei Semikolons; online nur eines. Warum auch immer ...
Hier die hoffentlich dauerhaft richtigere Version:

Code: Alles auswählen

#!/bin/bash
#
# fcd.sh:
#
# Fast change directory. Should be sourced from ~/.bashrc file, since it is and
# needs to be a function.
#
#   Update Ver.1.1, 2021-03-03
#       Bugfix for missing results when fast changing to "bin", thanks to m_bostaurus.
#   Update Ver.1.0, 2021-02-07
#       changed from egrep to mapfile, see code. Handles blanks in paths now flawlessly.
#   Update Ver.0.9, 2013-08-21, comments, publication
#
#   Prototyp 2010
#
# This program depends on locate/updatedb, which aren't always installed/activated.
# If you use the shell on a regular basis, you should have them installed, though.
#
#   (c) GPLv3 (2010, 2021)
#
fcd ()
{
    suchdirname=$1
    # list=$(locate $1 | egrep "/$1$"); # Version 1
    # update 12.02.2021
    # mapfile -d '' list < <(locate -b -0 -r "$suchdirname$")
    # update 19.02.2021
    mapfile -d '' list < <(locate -b -0 -r "^$suchdirname$")
    # count=$(echo $list | wc -w );
    # update 19.02.2021
    count=${#list[@]}
    case $count in
        0)
            echo "unknown directory: "$1 && return
            # could search for partial matches Doc => Documentation
        ;;
        1)
            if [[ -d "${list[0]}" ]]; then
                echo "1) match: $list";
                cd "$list";
            else
                echo "not a directory: $1";
            fi
        ;;
        *)
            select directory in "${list[@]}" "/exit/";
            do
                if [[ "$directory" = "/exit/" ]]; then
                    break;
                fi;
                if [[ -d "$directory" ]]; then
                    echo "multi) $directory";
                    cd "$directory";
                    break;
                else
                    echo "not a directory: "$1;
                fi;
            done
        ;;
    esac
}
In der Vorschau sind auf jeden Fall die doppelten drin ...
Dateianhänge
fcd.zip
(934 Bytes) 80-mal heruntergeladen

maroco
Forum Kenner
Forum Kenner
Beiträge: 101
Registriert: Freitag 29. November 2019, 08:07
CPU: Dual Core Intel Core i5-7200U
GPU: Intel HD Graphics 620
Kernel: 5.15
Desktop-Variante: XFCE oder Openbox
GPU Treiber: i915
Hat sich bedankt: 5 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Re: Endlich! Terminal: schnell Ordner finden

#6

Beitrag von maroco »

Da ich seit einiger Zeit gerne mit der Fish- anstelle der Bash-Shell arbeite, habe ich fcd als Funktion für Fish geforkt:

Code: Alles auswählen

# This function for the fish shell was inspired by the bash script fcd
# For the original script cf. https://demystifikation.wordpress.com/2021/03/03/fcd-fast-cd-version-1-1/

function fcd

    set list (locate "$argv" | egrep "/\.?$argv\$")
    set dirlist
    for i in $list
        if test -d $i
            set dirlist $dirlist $i
        end
    end
    set matches (count $dirlist)

    switch $matches
        case 0
            echo "unknown directory: "$argv
        case 1
            echo "1) match: $dirlist"
            cd "$dirlist"
        case '*'
            set i 0
            for dir in $dirlist EXIT
                set i (math $i + 1)
                echo "$i) "$dir
            end
            read -P "#? " nr
            if test $dirlist[$nr]
              cd $dirlist[$nr]
            end
    end
end
Hinweise zur Einrichtung und Anwendung:

Code in einen Editor kopieren und als Datei ~/.config/fish/functions/fcd.fish speichern . – Alternativ kann man den Code auch einfach ins Terminal kopieren, anschließend die Funktion testen und bei Gefallen mit dem Befehl funcsave fcd als permanente Funktion einrichten (andernfalls ist sie nur für die aktuelle Sitzung verwendbar).

Der Aufruf im Fish-Terminal erfolgt wie im Original, also z. B. mit fcd Dokumente.

In zwei Punkten unterscheidet sich meine Fish-Funktion vom Vorbild:
  • Gefunden werden wirklich nur Verzeichnisse und keine sonstigen gleichnamigen Dateien.
  • Automatisch werden bei jeder Suche ggf. auch versteckte Verzeichnisse gefunden, die mit einem führende Punkt beginnen. Beispielsweise enthält die Trefferliste des Befehls fcd config auch das Verzeichnis ~/.config.
MediaTerm, mein MediathekView-Client für die Kommandozeile: https://mediaterm.martikel.bplaced.net/
Benutzeravatar

user unknown
Neues Foren Mitglied
Neues Foren Mitglied
Beiträge: 4
Registriert: Samstag 6. März 2021, 13:30
CPU: intel
GPU: intel
Kernel: 4.15.0-generic
Desktop-Variante: xfce
GPU Treiber: modesetting
Danksagung erhalten: 1 Mal

Re: Endlich! Terminal: schnell Ordner finden

#7

Beitrag von user unknown »

Hi, jetzt habe ich mich doch selbst angemeldet, um auf Bugreports zu reagieren, weil ich für zuletzt erkannte Probleme selbst verantwortlich bin.

Maroco schreibt:
Gefunden werden wirklich nur Verzeichnisse und keine sonstigen gleichnamigen Dateien.
Konnte ich, wenn auch nicht sofort, nachvollziehen.

Ordner haben bei mir fast nie einen Dot im Namen, Nicht-Ordner aber meistens.
Deswegen ist mir so ein Fall bislang nicht untergekommen.

Es hängt auch davon ab, ob mehr als ein Treffer gefunden wird. Bei nur einem Treffer wird gleich geprüft, ob es ein Ordner ist, und wenn nicht mit einer Fehlermeldung beendet.

Wenn mehrere, werden diese erst mal als Springziele angeboten und erst nach der Auswahl eines davon getestet.

Den Usern dieses Forums kann ich also heute die Weltpremiere von fcd V.1.2 präsentieren. Auf meinem Blog wird es noch ein paar Tage dauern - keine Ahnung, wann ich dafür Zeit habe.
Die Änderung beschränkt sich auf zwei Zeilen.
Mit locate/mapfile sammel ich die Daten jetzt erst mal in eine Variable urliste (statt liste), und diese filtere ich dann gleich auf Verzeichnisse.

Code: Alles auswählen

list=($(for f in "${urlist[@]}"; do test -d "$f" && echo "$f"; done))
Automatisch werden bei jeder Suche ggf. auch versteckte Verzeichnisse gefunden, die mit einem führende Punkt beginnen. Beispielsweise enthält die Trefferliste des Befehls fcd config auch das Verzeichnis ~/.config.
Für mich sind "config" und ".config" unterschiedliche Namen. Wenn man .config finden will, muss man auch danach suchen. Da macht mein Programm was es soll und ich sehe keinen Handlungsbedarf.

Hier jetzt also die noch editorwarme Version 1.2 von fcd, mit besserem Verzeichnisfilter und unverändertem Umgang mit dots in filenames:

Code: Alles auswählen

#!/bin/bash
#
# fcd.sh:
#
# Fast change directory. Should be sourced from ~/.bashrc file, since it is and
# needs to be a function.
#
#	Update Ver.1.2, 2021-03-06
#		Bugfix for finding results which aren't directories. Thanks to m_bostaurus as
#		publisher/messenger and Maroco, who found the issue.
#	Update Ver.1.1, 2021-03-03
#		Bugfix for missing results when fast changing to "bin", thanks to m_bostaurus.
#	Update Ver.1.0, 2021-02-07
#		changed from egrep to mapfile, see code. Handles blanks in paths now flawlessly.
#   Update Ver.0.9, 2013-08-21, comments, publication
#
#   Prototyp 2010
#
# This program depends on locate/updatedb, which aren't always installed/activated.
# If you use the shell on a regular basis, you should have them installed, though.
#
#	(c) GPLv3 (2010, 2021)
#
fcd ()
{
	suchdirname=$1
	# list=$(locate $1 | egrep "/$1$"); # Version 1
	# update 12.02.2021
	# mapfile -d '' list < <(locate -b -0 -r "$suchdirname$")
	# update 19.02.2021
	mapfile -d '' urlist < <(locate -b -0 -r "^$suchdirname$")
	# filter non-directories:
	list=($(for f in "${urlist[@]}"; do test -d "$f" && echo "$f"; done))
	# count=$(echo $list | wc -w );
	# update 19.02.2021
	count=${#list[@]}
	case $count in
        0)
            echo "unknown directory: "$1 && return
            # could search for partial matches Doc => Documentation
        ;;
        1)
            if [[ -d "${list[0]}" ]]; then
                echo "1) match: $list"
                cd "$list"
            else
                echo "not a directory: $1"
            fi
        ;;
        *)
            select directory in "${list[@]}" "/exit/"
            do
                if [[ "$directory" = "/exit/" ]]; then
                    break
                fi
                if [[ -d "$directory" ]]; then
                    echo "multi) $directory"
                    cd "$directory"
                    break
                else
                    echo "not a directory: "$1
                fi
            done
        ;;
    esac
}
Vielen Dank für die Unterstützung.

Wer mit anderem Namen/Alias in der Danksagung des Kommentars auftauchen will, einfach Bescheid sagen.

Neue Bugreports und Featurerequests werden mit gemischten Gefühlen entgegengenommen. :)
Benutzeravatar

Themen Author
m-bostaurus
Forum Gott
Forum Gott
Beiträge: 306
Registriert: Mittwoch 18. Mai 2016, 19:44
Wohnort: Nürnberg
CPU: AMD Ryzen 9 3950X / Ryzen 5 / i3 ca. 2005
GPU: nVidia GTX 1070Ti / nVidia
Kernel: 510
Desktop-Variante: stable (LXQt, Mate, KDE, XFCE)
GPU Treiber: nVidia - proprietär auf beiden Rechnern
Hat sich bedankt: 42 Mal
Danksagung erhalten: 11 Mal

Re: Endlich! Terminal: schnell Ordner finden

#8

Beitrag von m-bostaurus »

Spannende Sache ...
Wenn ich (den Ausdruck zwischen den Anführungszeichen) "config" suche, werden Ordner gefunden, die genauso heißen.
Wenn ich ".config" suche, wird beispielsweise ~/.config/ gefunden, und auch Ordner, die "kconfig" oder "mconfig" heißen, als ob der Punkt vor dem Ordnernamen wie ein Stellvertreter für ein beliebiges Zeichen verstanden wird.

maroco
Forum Kenner
Forum Kenner
Beiträge: 101
Registriert: Freitag 29. November 2019, 08:07
CPU: Dual Core Intel Core i5-7200U
GPU: Intel HD Graphics 620
Kernel: 5.15
Desktop-Variante: XFCE oder Openbox
GPU Treiber: i915
Hat sich bedankt: 5 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Re: Endlich! Terminal: schnell Ordner finden

#9

Beitrag von maroco »

user unknown hat geschrieben: ↑Samstag 6. März 2021, 14:13 Neue Bugreports [...] werden mit gemischten Gefühlen entgegengenommen. :)
Auch nicht wenn die Lösung mitgeliefert wird? ;)

Die neue "Developer Edition" 1.2 reißt leider Pfade/Verzeichnisse auseinander, die Leerzeichen enthalten.

Das muss an der Zeile 33

Code: Alles auswählen

list=($(for f in "${urlist[@]}"; do test -d "$f" && echo "$f"; done))
liegen, auch wenn ich den Grund nicht wirklich verstehe, da doch alles so schön gequotet ist.
Der Bug lässt sich aber beheben, wenn die Variable list stattdessen mit folgendem Befehl erzeugt wird:

Code: Alles auswählen

for f in "${urlist[@]}"; do test -d "$f" && list+=( "$f" ); done
user unknown hat geschrieben: ↑Samstag 6. März 2021, 14:13 Für mich sind "config" und ".config" unterschiedliche Namen. Wenn man .config finden will, muss man auch danach suchen.
Vielleicht Geschmackssache ... Ich muss allerdings zugeben, dass ich inzwischen in meinem Fork für Fish wohl auch auf die automatische Einbeziehung der versteckten Verzeichnisse verzichten will – zugunsten der in Deinem Skript ermöglichten (und bei mir noch fehlenden) Suche mit regulären Ausdrücken.

Auf jeden Fall ein herzliches Dankeschön für Deine tolle Arbeit! Ich wundere mich, dass noch niemand vor Dir auf die Idee gekommen ist und dass fcd nicht überhaupt längst ein bash-Builtin ist. :)
MediaTerm, mein MediathekView-Client für die Kommandozeile: https://mediaterm.martikel.bplaced.net/
Benutzeravatar

gosia
Forum Held
Forum Held
Beiträge: 2232
Registriert: Dienstag 24. Mai 2016, 13:33
CPU: Intel i5-3210M
GPU: Intel HD 4000
Kernel: 4.19
Desktop-Variante: Openbox
GPU Treiber: i915
Hat sich bedankt: 20 Mal
Danksagung erhalten: 495 Mal

Re: Endlich! Terminal: schnell Ordner finden

#10

Beitrag von gosia »

Hallo m-bostaurus,
m-bostaurus hat geschrieben: ↑Samstag 6. März 2021, 14:47 als ob der Punkt vor dem Ordnernamen wie ein Stellvertreter für ein beliebiges Zeichen verstanden wird.
nicht nur "als ob" ;) Der Punkt wird als Stellvertreter für ein beliebiges Zeichen genommen, da die Option -r ein RegExp erwartet:

Code: Alles auswählen

man locate
-r Search for a basic regexp
wenn Du also tatsächlich nur nach ".config" suchen möchtest, müsstest Du den Punkt mit einem Backslash "escapen"

Code: Alles auswählen

fcd "\.config"
könnte also helfen.

@maroco
maroco hat geschrieben: ↑Samstag 6. März 2021, 18:47 Die neue "Developer Edition" 1.2 reißt leider Pfade/Verzeichnisse auseinander, die Leerzeichen enthalten.
Wer Verzeichnisse mit Leerzeichen hat, gehört sowieso dreimal im Entengang um den Block gejagt ;)
Aber gut, Du hast natürlich Recht, ein Skript sollte auch mit dem grössten denkbaren Schwachsinn zurecht kommen.

viele Grüße gosia

maroco
Forum Kenner
Forum Kenner
Beiträge: 101
Registriert: Freitag 29. November 2019, 08:07
CPU: Dual Core Intel Core i5-7200U
GPU: Intel HD Graphics 620
Kernel: 5.15
Desktop-Variante: XFCE oder Openbox
GPU Treiber: i915
Hat sich bedankt: 5 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Re: Endlich! Terminal: schnell Ordner finden

#11

Beitrag von maroco »

gosia hat geschrieben: ↑Samstag 6. März 2021, 20:25 Wer Verzeichnisse mit Leerzeichen hat, gehört sowieso dreimal im Entengang um den Block gejagt ;)
Zu meiner Verteidigung darf ich immerhin vorbringen, dass diese Verzeichnisse nicht von mir angelegt wurden, sondern von diversen, durchaus renommierten Programmen. Und wer auf die Idee verfällt, die Verzeichnisse umzubennen, läuft Gefahr, dass die zugehörigen Programme dann nicht mehr ganz einwandfrei funktionieren. :D

Ein Beispiel: Firefox legt seine gesammelten Absturzberichte in "~/.mozilla/firefox/Crash Reports" ab. Und wer jetzt vielleicht aus Abscheu den Browser wechselt und Falkon eine Chance gibt, bekommt Verzeichnisnamen wie "~/.config/falkon/profiles/default/Local Storage" untergejubelt. Und vom Programm "CEWE Fotobuch" sei sowieso dringendst abgeraten. Dessen Entwickler lieben Verzeichnisnamen mit Leerzeichen. ;D

Jeder kann sich übrigens mit fcd sehr einfach diese zahnlückenbehafteten Verzeichnisse auf seinem eigenen Rechner anzeigen lassen, nämlich per:

Code: Alles auswählen

fcd ".* .*"
Aber natürlich funktioniert dies nur mit einer fcd-Version, die mit Leerzeichen klarkommt. ;)
MediaTerm, mein MediathekView-Client für die Kommandozeile: https://mediaterm.martikel.bplaced.net/
Benutzeravatar

user unknown
Neues Foren Mitglied
Neues Foren Mitglied
Beiträge: 4
Registriert: Samstag 6. März 2021, 13:30
CPU: intel
GPU: intel
Kernel: 4.15.0-generic
Desktop-Variante: xfce
GPU Treiber: modesetting
Danksagung erhalten: 1 Mal

Re: Endlich! Terminal: schnell Ordner finden

#12

Beitrag von user unknown »

m-bostaurus hat geschrieben: ↑Samstag 6. März 2021, 14:47 Spannende Sache ...
Wenn ich (den Ausdruck zwischen den Anführungszeichen) "config" suche, werden Ordner gefunden, die genauso heißen.
Wenn ich ".config" suche, wird beispielsweise ~/.config/ gefunden, und auch Ordner, die "kconfig" oder "mconfig" heißen, als ob der Punkt vor dem Ordnernamen wie ein Stellvertreter für ein beliebiges Zeichen verstanden wird.
Als ich das Skript ursprünglich schrieb wollte ich es wohl so flexibel wie möglich machen, habe die Option mit regulären Ausdrücken aber schon ganz verdrängt und nie genutzt gehabt.

Jetzt bringt dieser idiotische Punkt :) das Issue wieder auf die Tagesordnung. Ich schätze ich lasse es so mit dem Punkt drin, aber erwähne es in der Dokumentation und weise drauf hin, dass man es bei sich lokal leicht deaktivieren kann, wenn es stört.
Benutzeravatar

user unknown
Neues Foren Mitglied
Neues Foren Mitglied
Beiträge: 4
Registriert: Samstag 6. März 2021, 13:30
CPU: intel
GPU: intel
Kernel: 4.15.0-generic
Desktop-Variante: xfce
GPU Treiber: modesetting
Danksagung erhalten: 1 Mal

Re: Endlich! Terminal: schnell Ordner finden

#13

Beitrag von user unknown »

maroco hat geschrieben: ↑Samstag 6. März 2021, 18:47
user unknown hat geschrieben: ↑Samstag 6. März 2021, 14:13 Neue Bugreports [...] werden mit gemischten Gefühlen entgegengenommen. :)
Auch nicht wenn die Lösung mitgeliefert wird? ;)
Auch wenn die Lösung mitgeliefert wird ist es Arbeit. :)

Aber danke. Seit 2013 nutze ich das Skript und konnte mich nie recht durchringen, es zu veröffentlichen, weil mir das Problem mit den Leerstellen bekannt war. Dann habe ich vor paar Wochen das Problem endlich beseitigt und es dann auch veröffentlicht, und jetzt mir gleich wieder eingetreten!
Die neue "Developer Edition" 1.2 reißt leider Pfade/Verzeichnisse auseinander, die Leerzeichen enthalten.

Das muss an der Zeile 33

Code: Alles auswählen

list=($(for f in "${urlist[@]}"; do test -d "$f" && echo "$f"; done))
liegen, auch wenn ich den Grund nicht wirklich verstehe, da doch alles so schön gequotet ist.
Der Bug lässt sich aber beheben, wenn die Variable list stattdessen mit folgendem Befehl erzeugt wird:

Code: Alles auswählen

for f in "${urlist[@]}"; do test -d "$f" && list+=( "$f" ); done
Ja, danke, ein schöner Bugreport mit Fix inclusive.
Ist mit kosmetischen Änderungen so gekauft.
Außerdem habe ich ein paar Variablen, die ihr häßliches Gesicht nach dem Sourcen zeigen, jetzt mit "local" in ihrer Sichtbarkeit beschnitten, ich möchte sagen sie sind jetzt in Quarantäne.
user unknown hat geschrieben: ↑Samstag 6. März 2021, 14:13 Für mich sind "config" und ".config" unterschiedliche Namen. Wenn man .config finden will, muss man auch danach suchen.
Vielleicht Geschmackssache ... Ich muss allerdings zugeben, dass ich inzwischen in meinem Fork für Fish wohl auch auf die automatische Einbeziehung der versteckten Verzeichnisse verzichten will – zugunsten der in Deinem Skript ermöglichten (und bei mir noch fehlenden) Suche mit regulären Ausdrücken.

Auf jeden Fall ein herzliches Dankeschön für Deine tolle Arbeit! Ich wundere mich, dass noch niemand vor Dir auf die Idee gekommen ist und dass fcd nicht überhaupt längst ein bash-Builtin ist. :)
Ein Freund hat mich darauf aufmerksam gemacht, dass es mit fzf/autojump etwas vergleichbares gäbe - ich bin da aber nicht ganz durchgestiegen. Es wäre wohl auch overkill, merkte er selbst an.

Ich wunderte mich auch. Oft programmiert man ja ein Script für sich selbst, nutzt es dann 2 Wochen und kommt wieder davon ab, weil es sich im Alltag als nicht so genial wie gedacht erweist. Nicht flexibel genug oder zu kompliziert zu benutzen oder man braucht es so selten, dass man die Syntax wieder vergessen hat.
Hier ging es mir so, dass ich es mehr und mehr benutzt habe. Zuletzt, nach Behebung des Whitespaceproblems - das tritt ja auch auf, wenn der Ordner, den man sucht, gar kein Blank enthält, aber ein gleichnamiger Ordner in einem anderen Unterordner existiert, dass ein Leerzeichen hat - noch häufiger, wohl weil es damit stabiler und sauberer wirkte und auf dem Bildschirm auch ist.
Benutzeravatar

user unknown
Neues Foren Mitglied
Neues Foren Mitglied
Beiträge: 4
Registriert: Samstag 6. März 2021, 13:30
CPU: intel
GPU: intel
Kernel: 4.15.0-generic
Desktop-Variante: xfce
GPU Treiber: modesetting
Danksagung erhalten: 1 Mal

Re: Endlich! Terminal: schnell Ordner finden

#14

Beitrag von user unknown »

gosia hat geschrieben: ↑Samstag 6. März 2021, 20:25 Wer Verzeichnisse mit Leerzeichen hat, gehört sowieso dreimal im Entengang um den Block gejagt ;)
Aber gut, Du hast natürlich Recht, ein Skript sollte auch mit dem grössten denkbaren Schwachsinn zurecht kommen.

viele Grüße gosia
Dem 1. Satz stimme ich von Herzen zu, aber wenn man anderen ein Script anbietet muss es mit der Welt zurecht kommen, wie sie ist.
Von Hand habe ich 1 (in Worten: ein) Verzeichnis erzeugt mit Leerzeichen im Pfad, und zwar um Programme zu testen, ob sie damit zurechtkommen.
Früher gab es unter Linux m.W. gar keine Leerzeichen in Dateien des Systems, jetzt greift es langsam überall um sich. Das macht das Skripten aufwendiger und erhöht die Hürde für das Arbeiten mit der Shell, bremst und stört.
Benutzeravatar

gosia
Forum Held
Forum Held
Beiträge: 2232
Registriert: Dienstag 24. Mai 2016, 13:33
CPU: Intel i5-3210M
GPU: Intel HD 4000
Kernel: 4.19
Desktop-Variante: Openbox
GPU Treiber: i915
Hat sich bedankt: 20 Mal
Danksagung erhalten: 495 Mal

Re: Endlich! Terminal: schnell Ordner finden

#15

Beitrag von gosia »

Hallo user unknown,
user unknown hat geschrieben: ↑Samstag 6. März 2021, 23:19 wenn man anderen ein Script anbietet muss es mit der Welt zurecht kommen, wie sie ist.
deshalb auch mein zweiter Satz mit "ein Skript sollte auch mit dem grössten denkbaren Schwachsinn zurecht kommen".
Aber nimm meine etwas flapsige Bemerkung nicht als Kritik an deinem tollen Skript, das verdient mein volles Lob. Ich weiss selbst wie schwierig es ist, an alle Eventualitäten zu denken und stolpere in meinen kleinen privaten Skripten oft genug darüber.
user unknown hat geschrieben: ↑Samstag 6. März 2021, 23:19 jetzt greift es langsam überall um sich.
wie so manche Unart, da kämpft man wohl vergeblich dagegen an.

@maroco
maroco hat geschrieben: ↑Samstag 6. März 2021, 21:56 Zu meiner Verteidigung
um Himmelswillen, Du musst dich nicht verteidigen. Ich meinte damit natürlich nur diese User, die sowas bewusst und selbst machen, a la "meine Bilder" und sich wahrscheinlich der Problematik gar nicht bewusst sind. Aber bei Entwicklern von grossen Projekten wie Firefox ist es eigentlich mehrfach verwerflich, die könnten ohne Probleme ihre Verzeichnisse auch Crash_Reports nennen, funktioniert sogar unter Windows ;)

viele Grüße gosia
Antworten

Zurück zu „Manjaro Linux Installation und Programme“