Forum CDRinfo.pl

Forum CDRinfo.pl (https://forum.cdrinfo.pl/)
-   Komputery - oprogramowanie i sprzęt (https://forum.cdrinfo.pl/f113/)
-   -   Linux (https://forum.cdrinfo.pl/f113/linux-91587/)

andy 20.01.2015 23:41

Zamiast numerków dajesz *.

Polecenie basename pobiera tylko nazwę pliku.
na końcu dodałem samo dd które ma być kompletnym poleceniem dd.

Cytat:

#!/bin/bash
for plik in /home/berion/*
do
plik = `basename $plik`
case "$plik" in
***8222;SCPH-12345\ R_1234567_BOOT_ROM.bin ***8222;) pełne polecenie dd;;
***8222;SCPH-12345 R_1234567_DVD_ROM.bin***8221;) pełne polecenie dd;;
***8222;SCPH-12345 R_1234567_NVM.bin***8221;) pełne polecenie dd;;
esac
done

Berion 20.01.2015 23:33

Niestety, ale jest postęp: :D
Kod:

przemek
SCPH-30003 R_2138110_BOOT_ROM.bin


@Andy
A czemu dorzuciłeś coś*takiego: " dd;;" ?

Po za tym nie mogę użyć tych nazw bo nie znam numerów kryjących się pod 12345 i 1234567.

andy 20.01.2015 23:30

Źle do tego podszedłeś.

Wszystko powinno się*dziać w pętli do wyczerpania plików:

Kod:

#!/bin/bash
for plik in /home/berion/*
do
        case "$plik" in
                "SCPH-12345\ R_1234567_BOOT_ROM.bin") dd;;
                "SCPH-12345 R_1234567_DVD_ROM.bin") dd;;
                "SCPH-12345 R_1234567_NVM.bin") dd;;
        esac
done


Bartez 20.01.2015 23:19

Mój kod miał 5 linii, a w Twoim jest błąd w 6 ;) Ale nieważne. Operacje na stringach w bashu wymagają pewnego rozszerzenia, może go u Ciebie nie ma. To co dałem w poprzednim poście powinno działać.

Berion 20.01.2015 23:10

Na pałę wkleiłem zawartość z twojego [code] [/ code]. Mówisz, że źle? ;)

Bartez 20.01.2015 23:08

Wklej zawartość pliku test.sh

Edit:

Dobra, nieważne. Spróbuj tak:

Kod:

bootrom="$(find ${HOME} *_BOOT_ROM.bin -maxdepth 0 -exec basename {} \;)"
Nie jestem pewien, co do przypisywania tego w nawiasach. Zaraz sprawdzę.

Berion 20.01.2015 23:02

Nie rozumiem tego skryptu za bardzo. Zwraca mi to:
Kod:

/home/przemek/test.sh: line 6: .: wymagany argument w postaci nazwy pliku
.: usage: . filename [arguments]
t.sh


No dobra, to opiszę jak najdokładniej co chcę zrobić i po kolei.

Więc chciałbym pociąć pliki za pomocą dd - i to mi się udaje. Pliki które będę ciął mają różne nazwy, a mogą być konkretnie takie, zawsze po trzy (w miejscach 12345 i 1234567 zawsze dowolne liczby, w niektórych nazwach dodatkowe znaki i spacja):

SCPH-12345 R_1234567_BOOT_ROM.bin
SCPH-12345 R_1234567_DVD_ROM.bin
SCPH-12345 R_1234567_NVM.bin

lub takie :

SCPH-12345_1234567_BOOT_ROM.bin
SCPH-12345_1234567_DVD_ROM.bin
SCPH-12345_1234567_NVM.bin

lub takie:

DESR-12345_1234567_BOOT_ROM.bin
DESR-12345_1234567_DVD_ROM.bin
DESR-12345_1234567_NVM.bin

lub takie:

DTL-H12345_BOOT_ROM.bin
DTL-H12345_DVD_ROM.bin
DTL-H12345_NVM.bin

Skrypt powinien sam się dowiedzieć jaką nazwę mają pliki i je przypisać do zmiennych: "bootrom", "dvdrom", "eeprom" tak aby nie wpisywać do dd ręcznie nazw lub aby nie ustalać nazw przed odpalaniem skryptu.

Na tę chwilę skrypt wygląda tak:

Kod:

#!/bin/bash

bootrom="$(find ${HOME} *_BOOT_ROM.bin -maxdepth 0)"
dvdrom="$(find ${HOME} *_DVD_ROM.bin -maxdepth 0)"
eeprom="$(find ${HOME} *_NVM.bin -maxdepth 0)"

dd if=$HOME/"$bootrom" of=$HOME/"$prefix".rom0 bs=2M
dd if=$HOME/"$dvdrom" of=$HOME/"$prefix".rom1 bs=256K count=1
dd if=$HOME/"$dvdrom" of=$HOME/"$prefix".rom2 bs=256K count=1
dd if=$HOME/"$dvdrom" of=$HOME/"$prefix".erom skip=512 count=3584
dd if=$HOME/"$eeprom"  of=$HOME/"$prefix".nvm bs=1K count=1
# dd if=$HOME/"$eeprom"  of=$HOME/"$prefix".mec bs=4 count=1 skip=chujwieile
echo -e "\n"
break

I to nie działa bo zmienne dostają oprócz nazwy pliku też ścieżkę i znak entera, czyli zamiast oczekiwanej np.
Kod:

SCPH-12345 R_1234567_BOOT_ROM.bin
dostaję:
Kod:

/home/przemek/
SCPH-12345 R_1234567_BOOT_ROM.bin





PS: brakuje też zmiennej prefix, ale to nie istotne, jak będę wiedział jak wydłubać te nazwy to sobie z tym poradzę.

andy 20.01.2015 22:59

A co ma dd z tymi plikami zrobić? Co chcesz osiągnąć.

Masz np pliki: *name1_name2.* (gdzie gwiazdka to dowolna wartość). Co chcesz z nimi zrobić?

Bartez 20.01.2015 22:46

Cytat:

Napisany przez Berion (Post 1311075)
@Andy
Co to dalej nie istotne. Zmienić nazwy i pociąć na kawałki, ale jak mówiłem to nie jest moim problemem.

Niech Ci będzie, że zmienna. ;p

Nie. Spójrz na skrypt w dd to będziesz wiedział. Tylko dwa wpisy można by użyć z mmv co jest bez sensu, skoro przez dd także a i tak go używam i tak i z tymi samymi plikami.


@Bartez
Niestety konkretnie. Muszę je rozpoznawać po samej końcówce bo początek może mieć spację może nie mieć, i może mieć różną długość. Stąd pomysł na wyszukiwanie tych plików przez find. Chciałbym wynik tego wyszukiwania przypisać do zmiennej ;] aby używać ją potem w dd. Niestety to co wymyśliłem przypisuje mi nie tylko nazwę pliku, ależ też ścieżkę do niego - i nawet bym się z tym pogodził ( bo nadal można by używać w dd) gdyby nie ten felerny enter.

Spróbuj tak:

Kod:

#!/bin/bash
.
 a=/root/t.sh
 zmienna=${a##*/}
 echo $zmienna

Wynikiem jest t.sh, czyli chyba to, czego szukasz.

Berion 20.01.2015 22:45

Ale to nie istotne co chcę z nimi zrobić. Robię to co chcę i to działa, więc nie ma sensu drążyć tego. ;) Po prostu szukam sposobu na automatyczne wyszukiwanie plików o określonym wzorze i wrzucanie tego pod zmienną - po to aby skrypt sam wrzucał te nazwy dla dd i użytkownik nie musiał nic wybierać, zmieniać nazw plików etc. To całe moje marzenie na dziś. :D

andy 20.01.2015 22:43

A co ma dd z tymi plikami zrobić? Co chcesz osiągnąć.

Masz np pliki: *name1_name2.* (gdzie gwiazdka to dowolna wartość) i chcesz z nimi zrobić?

Berion 20.01.2015 22:38

@Andy
Co to dalej nie istotne. Zmienić nazwy i pociąć na kawałki, ale jak mówiłem to nie jest moim problemem.

Niech Ci będzie, że zmienna. ;p

Nie. Spójrz na skrypt w dd to będziesz wiedział. Tylko dwa wpisy można by użyć z mmv co jest bez sensu, skoro przez dd także a i tak go używam i tak i z tymi samymi plikami.


@Bartez
Niestety konkretnie. Muszę je rozpoznawać po samej końcówce bo początek może mieć spację może nie mieć, i może mieć różną długość. Stąd pomysł na wyszukiwanie tych plików przez find. Chciałbym wynik tego wyszukiwania przypisać do zmiennej ;] aby używać ją potem w dd. Niestety to co wymyśliłem przypisuje mi nie tylko nazwę pliku, ależ też ścieżkę do niego - i nawet bym się z tym pogodził ( bo nadal można by używać w dd) gdyby nie ten felerny enter.

andy 20.01.2015 22:32

Czyli Berion chce skopiować pliki które mają*częściową stałą*nazwę*a tą drugą*zmienną*w inne miejsce pod inną nazwą? Skoro tak to mmv zrobi to bez kombinowania w bashu.

Bartez 20.01.2015 22:29

A ten plik, do którego chcesz skopiować to jakoś konkretnie ma się nazywać? W sensie, czy masz jakiś pattern na nazwy finalnych plików?

andy 20.01.2015 22:27

Cytat:

Andy dlaczego traktujesz mnie jak użytkownika Apple? ;)))
Zboczenie zawodowe ;) Kiedy traktujesz ludzi jak *****i, to trudniej się*rozczarować i łatwiej dojść do celu ;)

Ja się*nie pytałem co chcesz w skrypcie zrobić, tylko co chcesz zrobić.

Z tego co do tej pory napisałeś to chcesz coś*zrobić*z plikami które mają częściowo stałą nazwę i różnią się tylko kilkoma znakami? Pytanie moje jest co.
Czyli proszę raz jeszcze w dwóch-trzech zdaniach jak najprościej opisz co co chcesz osiągnąć.
Cytat:

Chciałbym, aby została odczytana pełna nazwa pliku, czyli np. "pijane 1234567_ albo trzezweX_zosia_krysia.bin" i tylko tą nazwę przypisać do stałej o nazwie np. "harem".
Do zmiennej jeżeli już! Skoro skrypt coś*do niej przypisuje to to nie jest stała tylko zmienna!


Wszystkie czasy w strefie CET. Aktualna godzina: 13:22.

Powered by vBulletin® Version 3.9.0 LTS
Copyright ©2000 - 2026, vBulletin Solutions Inc.