Nowe posty

Autor Wątek: Pisanie w vi  (Przeczytany 4206 razy)

robertos18

  • Gość
Pisanie w vi
« dnia: 2014-11-15, 17:44:36 »
Witam , chciałybym napisać najprostszy skrypt w vi tylko potrzebuje małych rad chodzi o to :
wpisuje komende: vi plik.txt
nastepnie [esc] i , wpisuje skrypt
#!/bin/bash
echo "Hello world"
I jak go uruchomic , mógłby mi napisac co musze zrobic w kazdym kroku aby wyświetlic te hello world?

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Pisanie w vi
« Odpowiedź #1 dnia: 2014-11-15, 19:05:03 »
Na początek musisz wyjść z vi, co jest legendarną umiejętnością :)

[ESC]:wq
w od write
q od quit

Ale polecam na początek (albo w ogóle zamiast) jakiś prostszy edytor, np. nano.

Gdy masz już plik, musisz nadać mu uprawnienia do uruchamiania:
chmod a+x plik.txt
.txt to nie jest dobre roszerzenie dla skryptów: używa się .sh albo nawet żadnego rozszerzenia:
mv plik.txt plik.sh
Teraz pozostaje odpalić ten plik podając ścieżkę (!) do niego - albo absolutną, albo przynajmniej względną:
./plik.sh
Samo 'plik.sh' nie zadziała, bo jest to mechanizm bezpieczństwa, aby uniemożliwić przypadkowe uruchmienie jakiejś dziwnej komendy z lokalnego katalogu. Podając nazwę ze ścieżką pokazujesz powłoce, że wiesz co robisz.

Offline roobal

  • Users
  • Guru
  • *****
  • Wiadomości: 2056
    • Zobacz profil
Pisanie w vi
« Odpowiedź #2 dnia: 2014-11-16, 00:43:53 »
Cytuj
chmod a+x plik.txt
Nie dawałbym uprawnień wszystkim, jeśli nie są potrzebne. Wystarczy.
chmod +x plik.sh
Ze ścieżki bezwzględnej można uruchomić tak.
/ścieżka/do/skryptu/./plik.sh

robertos18

  • Gość
Pisanie w vi
« Odpowiedź #3 dnia: 2014-11-16, 01:39:40 »
Dziekuję bardzo za pomoc. Tylko nie wiem jeszcze za bardzo co wspiac jako scieżke dostepu nie wiem gdzie znajduje sie ten zapisany plik.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2769
  • 1709
    • Zobacz profil
Pisanie w vi
« Odpowiedź #4 dnia: 2014-11-16, 10:29:00 »
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

płona

  • Gość
Pisanie w vi
« Odpowiedź #5 dnia: 2014-11-16, 13:05:00 »
Cytat: robertos18
Dziekuję bardzo za pomoc. Tylko nie wiem jeszcze za bardzo co wspiac jako scieżke dostepu nie wiem gdzie znajduje sie ten zapisany plik.
Wpisz "pwd" zanim uruchomisz vi. Poda pełną ścieżkę do bieżącego katalogu

Offline roobal

  • Users
  • Guru
  • *****
  • Wiadomości: 2056
    • Zobacz profil
Pisanie w vi
« Odpowiedź #6 dnia: 2014-11-16, 13:42:17 »
Cytat: robertos18
Dziekuję bardzo za pomoc. Tylko nie wiem jeszcze za bardzo co wspiac jako scieżke dostepu nie wiem gdzie znajduje sie ten zapisany plik.
Jeśli jesteś w katalogu, w którym jest plik (katalog bieżący), to wystarczy sama nazwa pliu. Jeśli plik jest w innej lokalizacji, np. /home/user/pliki/skrypty, to robisz to na dwa sposoby.

1. Uruchomienie ze ścieżką bezwzględną.
/home/user/pliki/skrypty/./plik.sh
2. Przejście do katalogu poleceniem cd.
cd /home/user/pliki/skrypty/
./plik.sh
Łatwiej Ci będzie jak zapoznasz się na początek z podstawowymi poleceniemia powłoki.
http://www.gabo.hi.pl/linux/polecenia.htm
http://www.astrouw.edu.pl/~jskowron/pracownia/komendy/

robertos18

  • Gość
Pisanie w vi
« Odpowiedź #7 dnia: 2014-11-17, 15:56:46 »
-bash: cd: /users/stud/inf/robertos18./hello.sh: No such file or directory

Występuje taki problem. Nie rozumiem dlaczego.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2769
  • 1709
    • Zobacz profil
Pisanie w vi
« Odpowiedź #8 dnia: 2014-11-17, 16:25:31 »
"Nie ma takiego pliku lub sciezki."

google translator do pomocy z angielskim
https://translate.google.pl/#en/pl/

" /users/stud/inf/robertos18./hello.sh "
To wejdz pokolei do katalogow ( cd ... ) czy dany katalog i na koncu plik czy istnieje. ( ls )

Tylko jedna uwaga...
Jesli uzywasz "cd" od katalogu mozesz tak
 cd /home/gg/
Kiedy jestem gdzies w srodku w katalogach
 $ pwd
/home/gg
...
Np. katalog "Desktop" istnieje
$ ls
Desktop/                  uuuu.gba
Documents/
ale gdy wpiszesz z "/" w ten sposob
/Desktop/
bash: cd: /Desktop/: No such file or directory
Wywalilo blad, a jak wpiszesz tak
$ cd Desktop/
[gg@localhost Desktop]$ pwd
/home/gg/Desktop
jak widac udalo sie

- i jeszcze cos
" cd: /users/stud/inf/robertos18./hello.sh "
Nie przechodzi sie do pliku, mozna przechodzic tylko do katalogow,
czyli np.
/users/stud/inf/robertos18./

Przyklad
$ cd /home/gg/uuuu.gba
bash: cd: /home/gg/uuuu.gba: Not a directory
czyli wyrzucilo ze to nie jest sciezka zlozonych tylko z katalogow.

do przegladania plikow uzywa sie np. cat
 cat  /users/stud/inf/robertos18./hello.sh
mozesz tez uzyc vi lub dowolnie innego edytora tekstowego
 vi /users/stud/inf/robertos18./hello.sh
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

robertos18

  • Gość
Pisanie w vi
« Odpowiedź #9 dnia: 2014-11-17, 16:34:42 »
na vi mi to nie działa natomiast na vim działa bez problemu. Tylko zamiast #!/bin/bash wpisuje #!/bin/sh

Offline roobal

  • Users
  • Guru
  • *****
  • Wiadomości: 2056
    • Zobacz profil
Pisanie w vi
« Odpowiedź #10 dnia: 2014-11-17, 17:02:20 »
Cytat: robertos18
-bash: cd: /users/stud/inf/robertos18./hello.sh: No such file or directory

Występuje taki problem. Nie rozumiem dlaczego.
Nie rozumiesz, bo musisz nauczyć się odróżniać plik od katalogu. Poleceniem cd przechodzisz do katalogu, a Ty wskazałeś plik, dlatego pojawił się błąd. Vi czyta plik, więc podejsz ścieżkę łącznie z plikiem, czyli.

cd /users/stud/inf/robertos18/
./hello.sh
lub
/users/stud/inf/robertos18/./hello.sh
Zaś vi używasz tak
vi /users/stud/inf/robertos18/hello.sh
lub tak
cd /users/stud/inf/robertos18/
vi hello.sh
Inna sprawa,. Jak chcesz uruchomić skrypt ze ścieżką bezwględną, to po pierwsze nie angażujesz do tego już polecenia cd; po drugie, skrypt uruchamia się w taki sposób
/users/stud/inf/robertos18/./hello.sh
bo tak jak Ty to zrobiłeś
/users/stud/inf/robertos18./hello.sh
jest źle. Kropka musi być pomiędzy dwoma ukośnikami (slash).
Cytat: robertos18
na vi mi to nie działa natomiast na vim działa bez problemu. Tylko zamiast #!/bin/bash wpisuje #!/bin/sh
Widocznie nie masz vi zainstalowanego w systemie. Vim i vi to różne edytory, tak samo jak nano i pico. Ewentualnie kopiujesz błędną ścieżkę z postu wyżej. Polecenia najlepiej jest dopełniać tabulatorem, mniejsze szanse na pomyłkę.