Last active
March 8, 2019 18:00
-
-
Save KarolinaCzo/4792e99c275da85c937ed43a1e97abd9 to your computer and use it in GitHub Desktop.
Make a script to run SynfigStudio from the console on Linux Fedora
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1) Stwórz katalog o nazwie 'bin' w katalogu domowym | |
2) Teraz, jeżeli skrypt był zapisany wczesniej w pliku z jakimkolwiek rozszerzeniem (w tym wypadku .txt) | |
trzeba go przepisać na plik bez rozszerzenia. | |
Jeżeli wcześniej wejdziemy do folderu, w którym znajduje się skrypt to wystarczy podac jego nazwę bezpośrednio. | |
mv <nazwa-skryptu> ~/bin/<nowa-nazwa-skryptu> | |
Jeśli natomiast nie jesteśmy w folderze z tym plikiem, to nalezy podac do niego ścieżkę bezwzględną. | |
mv <ścieżka-do-skryptu> ~/bin/<nowa-nazwa-skryptu> | |
3) Powloka będzie szukała programów do uruchomienia w konkretnych miejscach | |
echo $PATH | |
przykładowy output: | |
/usr/local/bin:/usr/bin:/bin:/home/<nazwa-użytkownika>/bin:/usr/local/sbin:/usr/sbin | |
Tu pojawia się bin parokrotnie. Ściezki sa oddzielone dwukropkami. Wszystko co pomiedzy dowolnymi dwoma :dwukropkami: to oddzielna sciezka. | |
PATH z cat ~/.zshrc to: PATH=$HOME/bin:/usr/local/bin:$PATH | |
$HOME to inna nazwa na ~ | |
A na koncu jest doklejony $PATH, poniewaz DOKLEJAMY sciezki na poczatku $PATH. Na przykład: | |
chce dokleic /home/janek/bin => to wpisze PATH=/home/janek/bin:$PATH | |
Swoją drogą to jest tylko dla powłoki zsh. Różne powłoki czytają różne pliki inicjalizacyjne i inaczej wywołuje sie je w terminalu - po innej nazwie. | |
4) Teraz trzeba sprawdzić jakie sa uprawnienia do pliku. Będąc w folderze z plikiem, w konsoli należy wpisać: | |
ls -l <nazwa-pliku> | |
pzykładowy output: | |
-rw-rw-r--. 1 <nazwa-użytkownika> 139 03-06 21:14 <nazwa-pliku-ze-skryptem> | |
Skupiamy się na '-rw-rw-r--'. Pierwsza kreska nas nie interesuje w tej chwili. | |
Potem sa trzy x, trzy grupy kresek: 'rwxrwxrwx'. | |
r == read | |
w == write | |
x == execute | |
I po kolei sa uprawnienia dla: user, group, others. | |
Widać, że 'x' jest wygaszony dla wszystkich, a musimy go włączyć dla 'usera' - czyli w pierwszym. | |
Można to zrobić programem 'chmod', a konkretniej: | |
chmod u+x <nazwa-pliku-ze-skryptem> | |
Wytłumaczenie: u+x: [u]serowi [+] dodaj uprawnienie do [x] wykonywania. | |
5) Ponieważ wcześniej skrypt zapisany był w pliku .txt na Windowsie, windows dodał swoje niedrukowalne | |
znaki, które zostały nawet po przepisaniu pliku na plik bez rozszerzenia. Trzeba bło je usunąć. | |
Najpierw sprawdzić, czy takie znaki autentycznie są komendą: | |
cat -v <nazwa-pliku-ze-skryptem> | |
I tak, skrypt zawierał m.in. znaki '^M'. | |
Trzeba było je usunąć wywołując komendę: | |
sed -i 's/\r//' <nazwa-pliku-ze-skryptem> | |
I potem jeszcze raz: | |
cat -v <nazwa-pliku-ze-skryptem> | |
Żeby upewnić się, czy te niedrukowalne znaki zostały usunięte. | |
6) Oczywiście popełniłam błąd zakładając, że plik AppRun, którym otwiera się SynfigStudio ma rozszerzenie. | |
Okazało się, że nie ma żadnego rozszerzenia. Upewnic się czy plik ma i jakie ma dokładnie rozszerzenie | |
można wykorzystać komendę: | |
ls ~/<ścieżka-do-folderu-z-plikiem>/ | |
8) Wywołanie pliku przez konsolę => wystarczy w konsoli wpisac nazwę pliku ze skryptem i wcisnąć 'enter' | |
________________ | |
Wywoływany skrypt: | |
#/usr/bin/env bash | |
~/<ścieżka-do-folderu-z-plikiem>/AppRun >/dev/null 2>&1 </dev/null & | |
disown -h | |
Opis: | |
>/dev/null przekierowuje standardowe wyjscie do /dev/null | |
2>&1 przekierowuje standardowy strumien bledow TAM GDZIE OBECNIE WSKAZUJE PIERWSZY DESKRYPTOR | |
czyli standardowe wyjscie, czyli to co przed chwila przekierowalismy, czyli juz w tej chwili /dev/null | |
</dev/null przekierowuje na wejscie /dev/null, zamiast obecnego terminala. | |
A "&" na koncu puszcza ten program w tle powloki (in the background) | |
Na koniec disown -h odlacza program od obecnej powloki i terminala, w zwiazku z czym program zostanie | |
sierota i zostanie "adoptowany" przez proces init, dzieki czemu powloka wylaczenie powloki i terminala | |
nie zamknie juz programu i dziala sobie juz sam. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment