Przejdź do głównej zawartości

Posty

Wyświetlam posty z etykietą BASH

Java - jak uruchomić JVM w innym języku

Ostatnio musiałem uruchomić JVM w innym języku niż domyślny język systemowy. Aby to osiągnąć należy do linii poleceń dodać dodatkowy parametr: -Duser.language=XX Tak więc cała linia polecenia powinna wyglądać np. następująco: java -jar -Duser.language=en jChess.jar Artykuł udostępniany na licencji CC-BY-SA-3.0

Linux - dzielenie filmu na części (ffmpeg)

 Ostatnio natknąłem się na ciekawy problem. Mianowicie plik wideo, który "ważył" około 5GB chciałem przegrać na pendrive celem uruchomienia w telewizorze. Oczywiście telewizor z niewiadomych przyczyn nie wspierał linuxowych systemów plików, więc dało się skopiować jedynie pierwsze 4GB filmu z uwagi na ograniczenie maksymalnego rozmiaru pliku. Z uwagi na to, iż pliki wideo mają odpowiednie nagłówki itp podzielenie tegoż filmu poleceniem split było niemożliwe: split -b 2048m nagranie.avi Na systemach GNU/Linux wszystko zazwyczaj można zrobić w prosty sposób z poziomu konsoli. Z pomocą przyszedł mi ffmpeg. Poniżej przykład podziału pliku video o długości 02 godziny 49 minut i 00 sekund: fmpeg -i nagranie.avi -vcodec copy -acodec copy -ss 00:00:00 -t 01:30:00 nagranie_p1.avi;  ffmpeg -i nagranie.avi -vcodec copy -acodec copy -ss 01:30:00 -t 02:49:00 nagranie_p2.avi  W ten sposób otrzymamy 2 pliki video (mniej więcej równe) o nazwie nagranie_p1.avi oraz nagranie_p2....

Zdalne wykonanie komendy w BASH z przypisaniem do lokalnej zmiennej

Jeśli lubisz czasem tak jak ja tworzyć kod w BASHu to możliwe, że natkniesz się na problem wykonania zdalnej komendy (na przykład na serwerze) i pobrania wyniku tej komendy do lokalnej zmiennej. Mam tu na myśli na przykład skrypt, który sprawdza czy na serwerze w danym katalogu pojawił się jakiś pliczek - z tym zastrzeżeniem, że skrypt ma się wykonywać nie po stronie serwera a hosta, który się do niego łączy. Kwestie tego jak się logować przez SSH - czy przez zaszycie hasła w skrypcie czy przez wymianę kluczy pozostawiam Tobie i konkretnej implementacji jednak zdecydowanie lepszym pomysłem wydaje się wymiana kluczy. W każdym razie zaszywanie hasła w skrypcie wiąże się z pewnym ryzykiem. Przejdźmy zatem do meritum. W celu pobrania wyniku zdalnej komendy do lokalnej zmiennej należy użyć podobnej konstrukcji: wynik=$(ssh login@host polecenie_zdalne) W podobny sposób można użyć telnetu - jednak w przypadku tego protokołu o bezpieczeństwie możemy pomarzyć. Konkretny przykład: wynik...

Rekurencyjne zliczanie linii kodu w dużych projektach

Celem zliczenia linii kodu z wszystkich plików znajdujących się w jednym katalogu możemy użyć prostej komendy: wc -l *.java Powyższe polecenie policzy linie kodu znajdujące się w pliczkach z rozszerzeniem java. Co jednak jeśli chcemy policzyć linie z całego projektu, który podzielony jest na bardzo wiele katalogów? Polecam użyć połączenia komend "wc" oraz "find" w taki oto sposób: wc -l `find . -name \*.java -print` Wywołując to polecenie w katalogu głównym naszego projektu powinniśmy uzyskać informacje o całkowitej liczbie linii kodu zawartych w plikach *.java z całego projektu (łącznie z podkatalogami). Artykuł udostępniany na licencji CC-BY-SA-3.0

Jak połączyć podzielony plik. GNU/Linux

Jeśli ktoś dostarczył Wam jakiś plik podzielony w częściach, które nie zostały utworzony przy pomocy jakiegoś archiwizera (co pozwalałoby w łatwy sposób rozwiązać problem) polecam użyć następujących poleceń. Jak wiadomo w Linuxie wszystko co wyrzucamy na standardowe wyjście/wyjście błędów możemy przekierować przy pomocy operatorów '>' oraz '>>'. Pierwszy z nich zawsze kasuje bieżącą zawartość pliku (jeśli takowa istnieje) i ustawia wskaźnik na początek pliku. Drugi operator ustawia wskaźnik na końcu pliku i tam właśnie dopisuje zawartość, którą przekierowujemy. Teraz to już łatwo się domyślić, że do rozwiązania problemu wystarczy sekwencja poleceń w stylu: cat nazwapliku.part001 >> scalonyplik; cat nazwapliku.part002 >> scalonyplik; ....... cat nazwapliku.partN >> scalonyplik; Po takiej operacji plik 'scalonyplik' powinien zawierać zawartość ze wszystkich part'ów. Powodzenia :-) Artykuł udostępniany na licencji CC-BY-SA-3.0

Edycja wielku plików pod linux z danym ciągiem znaków

Jeśli musisz w jednym pliku zastąpić wszystkie wystąpienia danego ciągu znaków, to z pomocą przychodzą już porządne edytory tekstu, które pozwalają bez problemu na taką operację. Co jednak jeśli posiadasz wiele plików (powiedzmy 100), do tego rozmieszczonych w różnych podkatalogach, gdzie musisz zastąpić wszystkie wystąpienia danego ciągu znaków, bo np. popełniłeś ten sam błąd, o którym sprawę zdałeś sobie dopiero teraz? Pomocny w takim momencie będzie BASH, Grep oraz jakiś język skryptowy (np. perl)... no to do dzieła: $ grep -rl STARY_STRING . | xargs perl -pi~ -e 's/STARY_STRING/NOWY_STRING/' grepem najpierw wyszukujemy rekurencyjnie (w podkatalogach) wszystkich plików, w których występuje dany ciąg znaków (wtedy linijka w perlu ma mniej do roboty), następnie podanym kodem zamieniamy wszystkie wystąpienia na nowy ciąg znaków, np: $ grep -rl '%22' . | xargs perl -pi~ -e 's/'%22'/''/' Jeśli chcesz przekopiować podany wyżej kod, to usuń znak zach...