Portál AbcLinuxu, 12. května 2025 08:53

Dotaz: Bash, hledám řádek

29.3.2015 18:51 Petr
Bash, hledám řádek
Přečteno: 241×
Odpovědět | Admin
Ahoj, mám soubor historie.txt kam si zapisuji všechny soubory které si otevřu pomocí skriptu (echo $1 >> historie.txt). Jak v pomocí bashe najdu posledně otevřený soubor z daného adresáře?

./blabla ~/Pictures/kittens/lol.jpg
./blabla ~/Music/lol/Katrin.jpg
./blabla ~/Pictures/kittens/ #by mi mel otevrit lol.jpg
#ALE ./blabla ~/Pictures/ #neudela nic

#############################################################
Obsah historie.txt:
~/Pictures/kittens/lol.jpg
~/Music/lol/Katrin.jpg


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.3.2015 20:03 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Bash, hledám řádek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podle ukázky poznáváte adresář podle koncového lomítka (pokud ne, tak snad to postačí pro inspiraci), pak např. takto:
#!/bin/bash

if test "${1:$((${#1}-1))}" = "/"; then
   declare -A last
   while read line; do
      dname=${line%/*}/
      fname=${line##*/}
      last[${dname}]=${fname}
   done < historie.txt

   if test -n "${last[${1}]}"; then
      myfile=$1/${last[${1}]}
   else
      #neudela nic
      exit 0
   fi
else
   myfile=${1}
fi
echo ${myfile}
Jestli je účelné čistě v bashi je jiná otázka. :)

A pak ještě pozor. V té ukázce si ukládáte adresáře s tildou, ale pokud budete volat ./blabla ~/Pictures/kittens/, tak ve ${1} už to bude expandované. A pokud to zavoláte ./blabla '~/Pictures/kittens/', tak si tu tildu budete muset nahrazovat sám.
http://prirucka.ujc.cas.cz/?ref=785&id=790.
29.3.2015 20:14 Petr
Rozbalit Rozbalit vše Re: Bash, hledám řádek
Děkuji za odpověď, ale našel jsem elegantnější způsob pomocí příkazu realpath

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.