Nie jesteś zalogowany na forum.

#1 2016-06-10 10:26:43

addos
Użytkownik
Data rejestracji: 2015-09-01
Liczba postów: 140

skrypt - tylko część poleceń działa (spod Krusadera)

Prosty skrypt, który porównuje 2 polecenia i wynik zapisuje do 3 pliku:

skrypt 1

#/bin/bash
tt=/tmp/testy_sort
diff <(ls -F1 "${tt}") <(LC_ALL=C ls -F1 "${tt}") > /tmp/wynik-1.txt

Pytanie: dlaczego skrypt działa mi poprawnie tylko bezpośrednio z konsoli, a odpalany z Krusadera już tylko połowicznie?
Już tłumaczę co znaczy połowicznie: jeżeli skrypt będzie wyglądał tak jak poniżej to zadziała wszystko poza linią diff

skrypt 2

#/bin/bash
tt=/tmp/testy_sort
mkdir -p ${tt}/{a,a-1,a-2,aa,aa-1,aa-2}
touch    ${tt}/{b,b-1,b-2,bb,bb-1,bb-2}
touch    ${tt}/{c,c-1,c-2,cc,cc-1,cc-2}.txt
diff -y -W 40 <(ls -F1 "${tt}") <(LC_ALL=C ls -F1 "${tt}") > /tmp/wynik-1.txt

Jeżeli dodam do tego kolejną linię kasująca na koniec pracy skryptu wszystko co przed chwilą stworzyłem to ta linia też się nie wykona:

skrypt 3

#/bin/bash
tt=/tmp/testy_sort
mkdir -p ${tt}/{a,a-1,a-2,aa,aa-1,aa-2}
touch    ${tt}/{b,b-1,b-2,bb,bb-1,bb-2}
touch    ${tt}/{c,c-1,c-2,cc,cc-1,cc-2}.txt
diff -y -W 40 <(ls -F1 "${tt}") <(LC_ALL=C ls -F1 "${tt}") > /tmp/wynik-1.txt
rm -r "${tt}" /tmp/wynik-1.txt

Ale jeżeli stworzę osobny skrypt:

skrypt 4

#/bin/bash
tt=/tmp/testy_sort
rm -r "${tt}" /tmp/wynik-{1,2}.txt

lub taki:

skrypt 5

#/bin/bash
tt=/tmp/testy_sort
diff <(ls -F1 "${tt}") <(LC_ALL=C ls -F1 "${tt}") > /tmp/wynik-2.txt

to obydwa wykonają się poprawnie z konsoli ale z poziomu Krusadera wygląda to tak:
- skrypt 4: kasuje pliki i katalogi - czyli wszystko działa OK
- skrypt 5: diff nie działa, tzn, brak pliku wynikowego

Czyli gdy skrypt tylko kasuje pliki i katalogi to spod Krusadera te polecenia wykonają się, natomiast diff nie działa.
Jeżeli jednak skrypt jest bardziej rozbudowany to tylko część poleceń zadziała, a reszta nie.

Czy ktoś może się domyślać o co tutaj może chodzić?
Zaznaczam, że wszystko z poziomu konsoli działa poprawnie.
Połowicznie poprawnie działa z poziomu Krusadera i ciekawi mnie co jest tego przyczyną.
Nie rozpatrujmy czy lepiej lub szybciej z konsoli czy z Krusadera.
Interesuje mnie PRZYCZYNA a nie co jest w danym przypadku lepsze do odpalania skryptów :)
Poza tym często moje skrypty podpinam pod jakąś kombinację klawiszy w KDE i nie chciałbym, żeby potem okazało się, że skrypty wykonują się tylko częściowo. Gdyby jakaś kopia wykonała się częściowo tylko dlatego, że nie została odpalona bezpośrednio z konsoli to by mnie chyba coś trafiło.
Dlatego proszę o wstrzymanie się od rozpatrywania zasadności testów spod Krusadera :)

Ostatnio edytowany przez addos (2016-06-11 15:42:55)


Info przy ew. problemach: Arch Linux x64, Plasma 5 (aktualna), CPU C2D E8400 (3GHz, 6MB cache), ASUS P5Q-PRO (BIOS, bez UEFI), RAM 8GB (DDR2, Dual), GPU GF 9600GT (PCI-E, 512MB), SSD 250GB MLC (GPT, discard, Grub 2, all ext4), HDD 1TB (7200, SATA, AHCI, NCQ, MBR, all ext4), monitor 1920x1080@60Hz DVI, audio: ASUS Xonar DX (PCI-E x1, 5.1 analog, ALSA bez PulseAudio), klaw. PS/2, mysz USB

Offline

#2 2017-11-04 21:09:22

piomiq
Użytkownik
Lokalizacja: Warszawa
Data rejestracji: 2017-11-03
Liczba postów: 5
WWW

Odp: skrypt - tylko część poleceń działa (spod Krusadera)

Zakładam, że skrypt oznaczyłeś jako do uruchomienia i po prostu klepnąłeś Enter w Krusader.
A powód?
Zgaduję, że Krusader nie ładuje środowiska dla shella. Ewentualnie uruchamia to prostą funkcją "start" z klasy QProcess, albo jej odpowiednikiem z KF, czyli nie uruchamia tego w konsoli, czyli na przykład tak:
QProcess process;
process.start("del /s *.txt");

A sprawdzałeś jak on (skrypt) się zachowuje gdy odpalisz z Dolphin, ew. z KRunner (Alt+F2)?


Jeśli już mowa o menadżerach plików to pozwolę sobie zareklamować się troszkę.
Rozwijam z kolegą (on się głównie zajmuje hostingiem) od jakiegoś czasu konkurencję dla wspomnianego menadżera plików. Póki co jest w tzw. wer. alpha, tj. nie wywala się - jest stabilny, ale też ma pewne błędy i nie ma zaimplmentowanego wszystkiego co potrzeba w tzw. wersji dla użytkownika, np. pełnego menu. Większość rzeczy trzeba wykonywać poprzez skróty klawiszowe (opisane w pliku README) i menu kontekstowe (RMB).
Jeśli masz ochotę to możesz sobie potestować. Zachęcam :).
Dostępny jest na razie w wersji źródłowej, tj. należy sklonować repozytorium i binarkę zbudować samemu.
Aplikację może też zainstalować (domyślnie w katalogu użytkownika) - patrz skrypt: rebuild.sh. Najprościej jest to zrobić poprzez wywołanie: ./rebuild.sh -mt -ins. Teraz aby można go było uruchamiać z dowolnej lokalizacji należy utworzyć np. katalog "bin" w katalogu domowym, dodać tę ścieżkę do eksportowanej zmiennej środowiskowej "PATH" a w katalogu "~/bin" zrobić linka symbolicznego pod nazwą np.w qtcmd wskazującego na skrypt "run.sh" znajdujący się w domyślnym katalogu instalacji: "~/install_test/bin".
Poniżej zamieszaczam URLe:
http://qtcmd.nes.pl - strona główna z nieco nieaktualnymi newsami :P
http://qtcmd.nes.pl/source-code.html - instrukcja jak ściągąć kod, też nieco nieaktualna, bo aplikacja jest rozwijana i działa w oparciu o Qt5, także qtcmd2 dot. Qt5
     git clone git://git.qtcmd.org/qtcmd2.git
http://pms.qtcmd.org/projects/qtcmd - tu można zgłaszać błędy i życzenia

Dlaczego o nim piszę. Mianowicie dlatego, że w qtcmd jest wspierana konsola w nieco przyjaźniejszy sposób niż w Krusader. Mam na myśli tryb pracy podobny do tego z mc, tj. skrót klawiszowy Ctrl+O pokazuje / chowa okno terminala.
Nie jestem pewien jak by zachował się Twój skrypt, ale podejrzewam, że podobnie jak w Krusader, ponieważ trybu uruchamiana skryptów w terminalu jeszcze nie zaimplementowałem :-/.

Gdy zaimplementuje menu i poprawię parę drobnych błędów to ogłoszę to tu i na paru innych portalach związanych z aplikacjami dla Linuksa, np.:
https://www.opendesktop.org  (tu jest już dostępn qtcmd, ale w archaicznej wer. chyba jeszcze dla Qt3)
http://www.qtcentre.org/threads/4878-Qt-Apps-org

Ostatnio edytowany przez piomiq (2017-11-04 21:11:12)


Intel® Core™ i7-6700 @ 3.40GHz (SkyLake) + 16GB ram + ASUS Xonar DX
Działa na nim: Linux 4.13.11-1-ARCH, Plasma 5.11.2 + KF-5.39 + Qt-5.9.2

Offline

#3 2017-11-04 23:29:37

addos
Użytkownik
Data rejestracji: 2015-09-01
Liczba postów: 140

Odp: skrypt - tylko część poleceń działa (spod Krusadera)

Zaciekawiłeś mnie :)
Gdy znajdę wolną chwilę to sprawdzę sobie.


Info przy ew. problemach: Arch Linux x64, Plasma 5 (aktualna), CPU C2D E8400 (3GHz, 6MB cache), ASUS P5Q-PRO (BIOS, bez UEFI), RAM 8GB (DDR2, Dual), GPU GF 9600GT (PCI-E, 512MB), SSD 250GB MLC (GPT, discard, Grub 2, all ext4), HDD 1TB (7200, SATA, AHCI, NCQ, MBR, all ext4), monitor 1920x1080@60Hz DVI, audio: ASUS Xonar DX (PCI-E x1, 5.1 analog, ALSA bez PulseAudio), klaw. PS/2, mysz USB

Offline

#4 2017-11-05 06:49:25

pavbaranov
Administrator
Lokalizacja: Kraków
Data rejestracji: 2015-08-22
Liczba postów: 1,460
WWW

Odp: skrypt - tylko część poleceń działa (spod Krusadera)

piomiq napisał/a:

Aplikację może też zainstalować (...)

W taki sposób: https://pastebin.com/jcfjvGk7 :)
Buduje się - działa.

PS: Piotrze - zerknij na ten PKGBUILD, bo być może jakiś opis inny itp.


Hardware: AMD: A8-7410 APU with Radeon R5
Software (podaję wyłącznie odrębności): kernel linux-pb (pds+uksm+AMD Jaguar/deadline-mq/bfq), amdgpu (dla CIK), Plasma 5.13, Qt5.11, patche z POLAUR

Offline

#5 2017-11-05 08:47:31

marcin82
Moderator
Lokalizacja: Sosnowiec
Data rejestracji: 2015-08-20
Liczba postów: 146

Odp: skrypt - tylko część poleceń działa (spod Krusadera)

piomiq

Proszę nie odpowiadać w starych wątkach. Rozumiem, że w kilku przypadkach dany użytkownik - autor wątku jest aktywny na forum i być może odpisze, ale na przyszłośc proszę tego unikać.


marcin82

Offline

#6 2017-11-05 09:13:46

addos
Użytkownik
Data rejestracji: 2015-09-01
Liczba postów: 140

Odp: skrypt - tylko część poleceń działa (spod Krusadera)

Forum jako platforma do wzajemnej pomocy nie powinna być w ten sposób ograniczana. Nawet gdy autor wątku nie odpowie, to zawsze ktoś inny z podobnym problemem może w odległej przyszłości skorzystać :)


Info przy ew. problemach: Arch Linux x64, Plasma 5 (aktualna), CPU C2D E8400 (3GHz, 6MB cache), ASUS P5Q-PRO (BIOS, bez UEFI), RAM 8GB (DDR2, Dual), GPU GF 9600GT (PCI-E, 512MB), SSD 250GB MLC (GPT, discard, Grub 2, all ext4), HDD 1TB (7200, SATA, AHCI, NCQ, MBR, all ext4), monitor 1920x1080@60Hz DVI, audio: ASUS Xonar DX (PCI-E x1, 5.1 analog, ALSA bez PulseAudio), klaw. PS/2, mysz USB

Offline

Stopka

Napędzają nas PacmanVPS i MegiTeam

Forum oparte na FluxBB