Changing Directories/pl

From SHellium Wiki
Jump to: navigation, search
Geographylogo.png In other languages: English | Afrikaans | Albanian | Arabic | Brazilian | Bulgarian | Catalan | Chinese | Croatian | Czech | Danish | Dutch | Esperanto | Estonian | Filipino | Finnish | Flemish | French | German | Greek | Hebrew | Hindi | Hungarian | Indonesian | Italian | Japanese | Latvian | Lithuanian | Macedonian | Malay | Malayalam | Norwegian (Bokmål) | Norwegian (Nynorsk) | Persian | Polish | Portuguese | Romanian | Russian | Serbian | Slovak | Slovenian | Spanish | Swedish | Turkish | Ukrainian | Urdu

Zawsze sprawdzaj status chdir. Unikniesz w ten sposób wywoływania poleceń w złym katalogu. Ewentualnie używaj pełnych ścieżek.

#!/bin/sh
cd $nosuchdir || exit 1
rsync gdzieindziej:/foo .

Bez przełącznika || exit 1 polecenie rsync może wrzucić pliki do złego katalogu lub przenieść je na złą partycję.

  • Przekierowanie.

Może mieć miejsce (prawie) wszędzie.

$ echo a b >c
$ echo >c a b
$ >c echo a b

Umieszczenie nazwy pliku na początku pozwala na łatwiejszą edycję zapytania (argumentów wyszukiwania).

$ </var/log/messages grep foo
$ </var/log/messages grep bar
$ </var/log/messages grep user1
  • Przekierowanie strumienia danych (pipe'owanie).

Autor często używa xargs(1)do konwertowania wyjścia (dane z pliku lub innego programu) aby użyć go jako argumentu dla innego programu. Przykład.

$ cvs up | perl -ne 'print if s/M //' | xargs cvs ci

Zależnie od edytora, można użyć powyższej koncepcji do otwarcia niektórych plików w celu edycji, na przykład skonfliktowane pliki w CVSie:

$ cvs up | perl -ne 'print if s/C //' | xargs vi
ex/vi: standardowe wejście i wyjście programu Vi musi być terminalem

$ cvs up | perl -ne 'print if s/C //' | xargs emacs
emacs: nie można użyć TTY na wejściu

$ cvs up | perl -ne 'print if s/C //' | xargs bbedit


  • Uporczywe pliki

Radzenie sobie z plikami, które mają dziwne znaki w nazwie często bywa uporczywe (nie można wpisać poprawnej nazwy). Można użyć graficznego menedżera plików, ale autor uważa to za mało wygodne rozwiązanie. Ciężko uporać się w nim z dużą liczbą plików i zazwyczaj nie jest zainstalowany w systemie operacyjnym serwera.

Aby łatwo usunąć krzaczki z nazw plików, istnieje kilka opcji.

  • Uściślij ścieżkę.

Pliki rozpoczynające się od kreski (jak np. -rf) uruchomią opcję programu (zadziałają jak przełącznik), ponieważ shell jest bardzo głupi. Można tego uniknąć wyłączając przełączniki lub używając prefiksu w postaci ścieżki do katalogu, w którym ten plik się znajduje.

$ ls
-rf
$ rm -rf
$ ls
-rf
$ rm *
$ ls
-rf
$ rm -- -rf
$ ls
$ touch ./-rf
$ ls
-rf
$ rm ./-rf
$ ls
$  


  • Znajdź inode i usuń go.

Każdy plik w systemie Unix ma swój, przypisany do niego, ponumerowany inode. Znająć numer i-węzła (node znaczy węzeł) pliku możemy go wyszukać i usunąć.

$ ls -i *
615383 foo
$ find . -inum 615383 -exec rm {} \;
Personal tools
Namespaces

Variants
Actions
Navigation
Indexes
SHellium Sites
Toolbox