In search this blog

Loading

piątek, 10 lutego 2012

GNU & Unix Commands


Shells in the Environment

Zmienne shell'a to to samo co zmienne środowiskowe. Wyświetlić ustawienia zmiennych można przy pomocy polecenia env (nie wszystkich zmiennych), żeby sprawdzić że shell jest przypisany do ciebie możesz edytować plik /etc/passwd

  1. gdm:x:42:42::/var/gdm:/sbin/nologin  
  2. sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin  
  3. nonus25:x:500:500:Augustyn Chmiel:/home/nonus25:/bin/bash  
  4. vboxadd:x:103:1::/var/run/vboxadd:/bin/false  

W moim przypadku widać to w linijce zaczynającej się od nonus25. Zmienne profilowe przetrzymywane są w pliku /etc/profile, oczywiście to wszystko w zależności jakiego systemu używamy, zmienne te mogą również odnosić się do plików w /etc/profile.d/ jak i również do /etc/profile.d/. Jeżeli szukamy zmiennych dokładnie tyczących się danego użytkownika to każde konto zawiera pliki w katalogu domowym danego użytkownika i są to .bashrc, .bash_profile i .profile. Aby wyświetlić zmienna odpowiadającą za komend prompt $PS1 należy wywołać ja bezpośrednio w linii komend.

  1. [nonus25@localhost ~]$ echo $PS1  
  2. [\u@\h \W]\$  
  3. [nonus25@localhost ~]$ echo $PS2  
  4. >  
  5. [nonus25@localhost ~]$ echo $PS4  
  6. +  

Następną zmienna którą trzeba tak edytować jest np. $PAGER odpowiada ona za ustawienie domyślnego edytora tekstu. Zmienne ta jest nie zawsze ustawiona, więc pokaże poniżej jak ustawić taką zmienna przy pomocy komend.

  1. [nonus25@localhost ~]$ echo $PAGER  
  2.   
  3. [nonus25@localhost ~]$ export PAGER=less  
  4. [nonus25@localhost ~]$ echo $PAGER  
  5. less  
  6. [nonus25@localhost ~]$ unset PAGER  
  7. [nonus25@localhost ~]$ echo $PAGER  
  8.    

Jeżeli używamy innego środowiska niż bash do ustawienia zmienne posłuży nam komenda set. W przykładzie widzimy nadanie wartości zmiennej a później odwołanie tego poprzez komendę unset.

Dots and the PATH

Zacznę od kropek,

  • . - aktualna ścieżka
  • .. - ścieżka poziom wyżej
  1. [nonus25@localhost ~]$ ls .  
  2. Desktop  
  3. [nonus25@localhost ~]$ ls ..  
  4. nonus25  
  5. [nonus25@localhost ~]$ ls ../..  
  6. bin   dev  home  lost+found  misc  net  proc  sbin     srv  tmp  var  
  7. boot  etc  lib   media       mnt   opt  root  selinux  sys  usr  

To tyle by mówić o kropkach w systemie Linux, następna do omówienia rzecz to zmienna PATH. Ta zmienna daje nam prawo do uruchomienia programów bez podawania ścieżki do nich o ile ścieżki te są wy listowane w tej zmiennej, ścieżki rozdziela się przy pomocy :, aby sprawdzić jakie ścieżki zawarte są w zmiennej należy wywołać komendę echo $PATH, znak dolara konieczny przed zmienna.

  1. [nonus25@localhost ~]$ echo $PATH   
  2. /usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/sbin  

History and Command Completion

Aby ułatwić życie administratorom w systemie są zapisywane komendy które wykonywaliśmy, aby je przejrzeć należy wyświetlić plik znajdujący się w HOME .bash_history lub też wyświetlić je za pomocą komendy history, różnica miedzy plikiem a komendą polega na tym, że komenda wyświetla aktualne polecenia wykonane w danej sesji, a do pliku zapisywane są komendy jakie wykonaliśmy podczas bieżącej sesji gdy się wylogowujemy z systemu. Maksymalną ilość przechowywanych komend możemy sprawdzić typując echo $HISTSIZE, przeważnie jest ustawiony na 1000 komend.

  1. [nonus25@localhost ~]$ echo $HISTSIZE  
  2. 1000  
  3. [nonus25@localhost ~]$ history   
  4.     1  pwd  
  5.     2  su  
  6.     3  pwd  
  7.     4  whoami  
  8.     5  clear  
  9.     6  sudo su  
  10.     7  su  
  11.     8  clear  
  12.     9  lspci  
  13.    10  dmesg   
  14.    11  lspci  
  15.    12  lsusb  

Teraz każda kżda komenda wyświetlona przy pomocy komendy history posiada numer. Więc jeśli chcemy odwołać się do jakieś komendy wystarczy, że podamy !3, lub też kilka pierwszych liter !w

  1. [nonus25@localhost ~]$ !3  
  2. pwd  
  3. /home/nonus25  
  4. [nonus25@localhost ~]$ !w  
  5. whoami  
  6. nonus25  

Uzupełnienie do komendy, ścieżek czy tez zmiennych środowiskowych uzyskamy przy kliknięciu TAB jeśli jest więcej niż jedna podpowiedz drugie wciśnięcie klawisza spowoduje wyświetlenie ich wszystkich.

Basic Shell Commands

Na pierwszy ogień idą takie komendy jak man, pwd, exec i uname.

  • pwd - podaje nam bieżącą ścieżkę w której pracujemy. Również wyświetla zmienną środowiskową PWD
    1. [nonus25@localhost ~]$ pwd  
    2. /home/nonus25  
    3. [nonus25@localhost ~]$ env | grep PWD  
    4. PWD=/home/nonus25  
    5. [nonus25@localhost ~]$ cd Desktop/  
    6. [nonus25@localhost Desktop]$ pwd  
    7. /home/nonus25/Desktop  
    8. [nonus25@localhost Desktop]$ env | grep PWD  
    9. PWD=/home/nonus25/Desktop  
    10. OLDPWD=/home/nonus25  
  • man - wyświetla nam strony z opisem programu/komendy, strony organizowane są w kilku rozdziałach przeważnie.
    • man -k termin - działa tak samo jak komenda apropos, czyli przeszukuje strony man w poszukiwaniu terminu.
      1. [nonus25@localhost ~]$ man -k email  
      2. PhishTag [Mail::SpamAssassin::Plugin::PhishTag] (3pm)  - SpamAssassin plugin for redirecting links in incoming emails  
      3. mailpost             (8)  - feed an email message into a news group  
      4. mailto.conf [mailto] (5)  - configuration file for cups email notifier  
      5. nautilus-sendto      (1)  - convenience application to send a file via email or instant messenger  
      6. news2mail            (8)  - a channel script to gateway news into email  
      7. spamassassin         (1)  - extensible email filter used to identify spam  
      8. spamassassin        (rpm) - Spam filter for email which can be invoked from mail delivery agents.  
      9. [nonus25@localhost ~]$ apropos email  
      10. PhishTag [Mail::SpamAssassin::Plugin::PhishTag] (3pm)  - SpamAssassin plugin for redirecting links in incoming emails  
      11. mailpost             (8)  - feed an email message into a news group  
      12. mailto.conf [mailto] (5)  - configuration file for cups email notifier  
      13. nautilus-sendto      (1)  - convenience application to send a file via email or instant messenger  
      14. news2mail            (8)  - a channel script to gateway news into email  
      15. spamassassin         (1)  - extensible email filter used to identify spam  
      16. spamassassin        (rpm) - Spam filter for email which can be invoked from mail delivery agents.  
      17. [nonus25@localhost ~]$  
    • man -f komenda - wyświetli wszystkie powiązane man strony.
      1. [nonus25@localhost ~]$ man -f man  
      2. man                  (1)  - format and display the on-line manual pages  
      3. man                  (1p)  - display system documentation  
      4. man                  (7)  - macros to format man pages  
      5. man                 (rpm) - A set of documentation tools: man, apropos and whatis.  
      6. man-pages           (rpm) - Man (manual) pages from the Linux Documentation Project.  
      7. man-pages-overrides (rpm) - Complementary and updated manual pages  
      8. man.config [man]     (5)  - configuration data for man  
    • man 5 komenda - czyta 5 stronę ze stron man.
      1. [nonus25@localhost ~]$ man 7 man  
      2. MAN(7)                     Linux Programmer’s Manual                    MAN(7)  
      3.   
      4. NAME  
      5.        man - macros to format man pages  
      6.   
      7. SYNOPSIS  
      8.        groff -Tascii -man file ...  
      9.   
      10.        groff -Tps -man file ...  
      11.   
      12.        man [section] title  
      13.   
      14. DESCRIPTION  
      15.        This manual page explains the groff tmac.an macro package (often called  
      16.        the man macro package) and  related  conventions  for  creating  manual  
      17.        (man)  pages.   This  macro  package  should be used by developers when  
      18.        writing or porting man pages for Linux.  It is fairly  compatible  with  
      19.        other  versions  of this macro package, so porting man pages should not  
      20.        be a major problem (exceptions include the  NET-2  BSD  release,  which  
      21.        uses a totally different macro package called mdoc; see mdoc(7)).  
      22.   
      23.        Note  that  NET-2  BSD  mdoc man pages can be used with groff simply by  
      24.        specifying the -mdoc option instead of  the  -man  option.   Using  the  
  • uname - podaje info o systemie
    • uname -a - podaje wszystkie informacje
      1. [nonus25@localhost ~]$ uname -a  
      2. Linux localhost.localdomain 2.6.18-274.17.1.el5.centos.plus #1 SMP Wed Jan 11 10:58:19 EST 2012 i686 i686 i386 GNU/Linux  
    • uname -s - nazwę kernel'a, -s, jest domyślnym przełącznikiem dla tej komendy
      1. [nonus25@localhost ~]$ uname -s  
      2. Linux  
      3. [nonus25@localhost ~]$ uname   
      4. Linux  
    • uname -n podaje nazwę hosta,
      1. [nonus25@localhost ~]$ uname -n  
      2. localhost.localdomain  
    • uname -r - podaje wersje jądra
      1. [nonus25@localhost ~]$ uname -r  
      2. 2.6.18-274.17.1.el5.centos.plus  
    • uname -v podaje datę instalacji jądra
      1. [nonus25@localhost ~]$ uname -v  
      2. #1 SMP Wed Jan 11 10:58:19 EST 2012  
    • uname -i lub uname -p - podaje architekturę platformy, podaje architekturę procesora
      1. [nonus25@localhost ~]$ uname -i  
      2. i386  
      3. [nonus25@localhost ~]$ uname -p  
      4. i686  
    • uname -o - podaje nazwę systemu operacyjnego,
      1. [nonus25@localhost ~]$ uname -o  
      2. GNU/Linux  
  • exec - zastępuje powłokę, co mam na myśli, chyba będzie najlepiej pokazać na przykładzie:
    1. [nonus25@localhost ~]$ touch nonus25_{1..5}.txt  
    2. [nonus25@localhost ~]$ ls .  
    3. Desktop        nonus25_2.txt  nonus25_4.txt  
    4. nonus25_1.txt  nonus25_3.txt  nonus25_5.txt  
    5. [nonus25@localhost ~]$ find . -name 'non*' -exec rm {} \;  
    6. [nonus25@localhost ~]$ ls .  
    7. Desktop  
    I małe wytłumaczenie co tu się stało, utworzyłem pięć plików nonus25_(1-5).txt, pokazałem zawartość bieżącej ścieżki, a następnie wyszukałem wszystkie pliki zaczynające się na nazwę non, i oddzielnie dla każdego znaleźnego pliku wtrąciłem komendę rm, która to usunęła te pliki, co pokazuje ostatnia wykonana komenda.

Wildcards - Globs - and Search Commands

Więc tak, komenda ls aa* poda nam wszystkie nazwy znajdujące się w katalogu i zaczynające się na aa włączając w to także nazwę aa, zaś wzorzec ls aa? wy listuje nam wszystkie nazwy zawierające 3 znaki. Następnym wzorcem jaki możemy użyć są klamry, np. przy tworzeniu jakiejś ilości plików touch doc{0..9}{0..9}.txt polecenie to będzie również działać z literami, {a..z}, {A..Z}. Możemy również używać nawiasów kwadratowych które określają jakiś zakres np. jeśli chcemy wyszukać ileś plików zawierających liczby od 1 do 3 w nazwie zbudujemy takie zapytanie, ls doc[1-3]?.txt lub ls doc[1-3][1-3].txt, również możemy użyć wykrzyknika który powoduje negacje danego wzorca np. ls doc[!1-3][1-3].txt wy listuje wszystkie pliki oprócz tych plików które w nazwie będą zawierały pierwszą liczbę od 1 do 3. Następnymi komendami które pomagają wyszukiwaniu czegoś są locate, komenda ta przeszukuje bazę danych lokalnych plików, baza danych jest uaktualniana poprzez skrypt /etc/corn.daily, baza ta zawiera informację o wszystkich zainstalowanych pakietach i bazuje ona na slocate lub mlocate. Inną komendą pomagającą w przeszukiwaniu jest komenda find i umożliwia ona przeszukiwanie w czasie rzeczywistym, np. find . -name '*.png' wyszuka wszystkie obrazki w bieżącej ścieżce.


File and Directory Commands

Na początek komendy touch i ls

  • touch filename - tworzy nowy plik o podanej nazwie,
    1. [nonus25@localhost ~]$ touch nonus25_{1..5}.txt  
    2. [nonus25@localhost ~]$ ls .  
    3. Desktop        nonus25_2.txt  nonus25_4.txt  
    4. nonus25_1.txt  nonus25_3.txt  nonus25_5.txt  
  • ls - wy listuje pliki w bieżącej ścieżce,
    1. [nonus25@localhost ~]$ ls  
    2. Desktop        nonus25_2.txt  nonus25_4.txt  
    3. nonus25_1.txt  nonus25_3.txt  nonus25_5.txt  
    • ls -a wy listuje również pliki ukryte, zaczynające się od kropki,
      1. [nonus25@localhost ~]$ ls -a  
      2. .              .gnome             nonus25_4.txt  
      3. ..             .gnome2            nonus25_5.txt  
      4. .bash_history  .gnome2_private    .recently-used.xbel  
      5. .bash_logout   .gstreamer-0.10    .redhat  
      6. .bash_profile  .gtkrc-1.2-gnome2  .themes  
      7. .bashrc        .ICEauthority      .thumbnails  
      8. .config        .icons             .Trash  
      9. Desktop        .metacity          .vboxclient-clipboard.pid  
      10. .dmrc          .mozilla           .vboxclient-display.pid  
      11. .eggcups       .nautilus          .vboxclient-seamless.pid  
      12. .esd_auth      nonus25_1.txt      .xsession-errors  
      13. .gconf         nonus25_2.txt  
      14. .gconfd        nonus25_3.txt  
    • ls -i - czyta numery i-węzłów plików
      1. [nonus25@localhost ~]$ ls -i  
      2. 1083873 Desktop        1085007 nonus25_2.txt  1085009 nonus25_4.txt  
      3. 1084998 nonus25_1.txt  1085008 nonus25_3.txt  1085010 nonus25_5.txt  
    • ls -t - wyświetla listę plików bazującą na czasie modyfikacji
      1. [nonus25@localhost ~]$ ls -t  
      2. nonus25_1.txt  nonus25_3.txt  nonus25_5.txt  
      3. nonus25_2.txt  nonus25_4.txt  Desktop  
    • ls -r - odwraca kolejność wyszukiwania plików
      1. [nonus25@localhost ~]$ ls -r  
      2. nonus25_5.txt  nonus25_3.txt  nonus25_1.txt  
      3. nonus25_4.txt  nonus25_2.txt  Desktop  
    • ls -l - wyświetla listę w długim formacie, format zawiera: typ, uprawnienia, rozmiar, datę ostatniej modyfikacji i nazwę pliku.
      1. [nonus25@localhost ~]$ ls -l  
      2. total 28  
      3. drwxr-xr-x 2 nonus25 nonus25 4096 Feb  5 04:16 Desktop  
      4. -rw-rw-r-- 1 nonus25 nonus25    0 Feb  8 06:42 nonus25_1.txt  
      5. -rw-rw-r-- 1 nonus25 nonus25    0 Feb  8 06:42 nonus25_2.txt  
      6. -rw-rw-r-- 1 nonus25 nonus25    0 Feb  8 06:42 nonus25_3.txt  
      7. -rw-rw-r-- 1 nonus25 nonus25    0 Feb  8 06:42 nonus25_4.txt  
      8. -rw-rw-r-- 1 nonus25 nonus25    0 Feb  8 06:42 nonus25_5.txt  
    • ls -F - dodaje symbole plików
      1. [nonus25@localhost ~]$ ls -F /etc/  
      2. audisp/                jvm-commmon/     rc.d/  
      3. audit/                 jwhois.conf      rc.local@  
      4. autofs_ldap_auth.conf  kdump.conf       rc.news*  
      5. auto.master            krb5.conf        rc.sysinit@  
      6. auto.misc              ldap.conf        readahead.d/  
      7. auto.net*              ld.so.cache      reader.conf  
      8. auto.smb*              ld.so.conf       reader.conf.d/  
      9. avahi/                 ld.so.conf.d/    redhat-lsb/  
      10. bashrc                 lftp.conf        redhat-release  
      11. blkid/                 libaudit.conf    request-key.conf  
      12. bluetooth/             libuser.conf     resolv.conf  
      13. bonobo-activation/     libvirt/         resolv.conf.predhclient  
      14. capi.conf              localtime        rmt@  
      15. cdrecord.conf          login.defs       rndc.key@  
      widzimy tu dodane symbole więc:
      • * do plików wykonywalnych
      • / do folderów
      • @ do symbolicznych linków
      • = do gniazd (sockets)
      • | do strumieni (pipes)
  • file * - listuje pliki z krótkim opisem
    1. [nonus25@localhost ~]$ file *  
    2. Desktop:       directory  
    3. link.txt:      empty  
    4. non.bin:       empty  
    5. non.deb:       empty  
    6. nonus25_1.txt: ASCII text  
    7. nonus25_2.txt: empty  
    8. nonus25_3.txt: empty  
    9. nonus25_4.txt: empty  
    10. nonus25_5.txt: empty  

Teraz przejdę do poleceń takich jak cp, mv, rm

  • cp file1 file2 - kopiuje zawartość pliku 1 i nadpisuje zawartość pliku 2
    1. [nonus25@localhost ~]$ cp nonus25_1.txt nonus25_5.txt   
    2. [nonus25@localhost ~]$ file *  
    3. Desktop:       directory  
    4. link.txt:      ASCII text  
    5. non.bin:       empty  
    6. non.deb:       empty  
    7. nonus25_1.txt: ASCII text  
    8. nonus25_2.txt: empty  
    9. nonus25_3.txt: empty  
    10. nonus25_4.txt: empty  
    11. nonus25_5.txt: ASCII text  
    • cp -r - kopiuje rekurencyjnie
    • cp -a - kopiuje rekurencyjnie z zachowaniem linków, własności, dat
  • mv - podobne do polecenia cp z tym że usuwa oryginalny plik
    1. [nonus25@localhost ~]$ ls -l  
    2. total 56  
    3. drwxr-xr-x 2 nonus25 nonus25 4096 Feb  5 04:16 Desktop  
    4. -rw-rw-r-- 2 nonus25 nonus25   23 Feb  8 07:46 link.txt  
    5. -rw-rw-r-- 1 nonus25 nonus25    0 Feb  8 07:12 non.bin  
    6. -rw-rw-r-- 1 nonus25 nonus25   23 Feb  8 07:45 nonus25_1.txt  
    7. -rw-rw-r-- 1 nonus25 nonus25   23 Feb  8 07:48 nonus25_2.txt  
    8. -rw-rw-r-- 1 nonus25 nonus25   23 Feb  8 07:45 nonus25_3.txt  
    9. -rw-rw-r-- 1 nonus25 nonus25    0 Feb  8 07:12 nonus25_4.txt  
    10. -rw-rw-r-- 2 nonus25 nonus25   23 Feb  8 07:46 nonus25_5.txt  
  • rm usuwa dane pliki
    1. [nonus25@localhost ~]$ ls -l  
    2. total 52  
    3. drwxr-xr-x 2 nonus25 nonus25 4096 Feb  5 04:16 Desktop  
    4. -rw-rw-r-- 2 nonus25 nonus25   23 Feb  8 07:46 link.txt  
    5. -rw-rw-r-- 1 nonus25 nonus25   23 Feb  8 07:45 nonus25_1.txt  
    6. -rw-rw-r-- 1 nonus25 nonus25   23 Feb  8 07:48 nonus25_2.txt  
    7. -rw-rw-r-- 1 nonus25 nonus25   23 Feb  8 07:45 nonus25_3.txt  
    8. -rw-rw-r-- 1 nonus25 nonus25    0 Feb  8 07:12 nonus25_4.txt  
    9. -rw-rw-r-- 2 nonus25 nonus25   23 Feb  8 07:46 nonus25_5.txt  
    • rm -r - usuwa pliki i katalogi rekurencyjnie
    • rm -rf - usuwa pliki rekurencyjnie i siłowo
    • rm -rf /path/to/file - ostrożnie z tym poleceniem

Komendy odpowiedzialne za zarządzanie katalogami mkdir, rmdir

  • mkdir dir tworzy nowy katalog
    1. [nonus25@localhost ~]$ mkdir dir1  
    2. [nonus25@localhost ~]$ ls -l  
    3. total 24  
    4. drwxr-xr-x 2 nonus25 nonus25 4096 Feb  5 04:16 Desktop  
    5. drwxrwxr-x 2 nonus25 nonus25 4096 Feb  8 08:18 dir1  
    6. -rw-rw-r-- 1 nonus25 nonus25   23 Feb  8 07:46 link.txt  
    • mkdir -p path/to/dir - tworzy całą strukturę katalogów
  • rmdir dir - usuwa katalog jeśli katalog jest pusty
    1. [nonus25@localhost ~]$ rmdir dir1/  
    2. [nonus25@localhost ~]$ ls -l  
    3. total 16  
    4. drwxr-xr-x 2 nonus25 nonus25 4096 Feb  5 04:16 Desktop  
    5. -rw-rw-r-- 1 nonus25 nonus25   23 Feb  8 07:46 link.txt  
    • rmdir -p path/to/dir - usuwa cała strukturę katalogów jeśli katalogi są puste.

Archives and Compression

Jednym z głównych narzędzi archiwizujących pod Linux'em jest tar. Program ten tworzy jak i rozpakowuje

  • tar czf backupmail.tar.gz .evolution/
    • c - tworzy nowe archiwum
    • z - kompresuje algorytmem gzip
    • f - używa nazwy która następuje
  • tar cf backupmail.tar .evolution/ - tworzy nie skompresowane archiwum tar
    • c - tworzy nowe archiwum
    • f - używa nazwy która następuje
  • gzip backupmail.tar - utworzone wcześniej nie skompresowane archiwum możemy skompresować w ten sposób, efektem tego będzie dodanie nowego rozszerzenia do pliku .gz. Plik ten będziemy mogli rozpakować przy pomocy gunzip lub gzip -d.
  • bzip2 backupmail.tar - utworzone wcześniej nie skompresowane archiwum możemy skompresować też w inny sposób, efektem tego będzie dodanie nowego rozszerzenia do pliku .bz2. Plik ten będziemy mogli rozpakować przy pomocy bunzip2 lub bzip2 -d. Także tar j kompresuje pliki do bzip2
  • cpio w dosłownym znaczeniu kopia wejścia, program również odpowiada za tworzenie archiwów.
    • find / -name *.doc | cpio -o > docfiles - więc skrypt zaczyna szukać wszystkich plików z rozszerzeniem .doc zaczynając od root'a, następnie przekazuje każdy znaleziony plik do drugiej komendy gdzie tworzone jest archiwum.
    • cpio -i < docfiles rozpakowanie archiwum utworzonego powyżej.
    • odnosi się także do archiwów utworzonych za pomocą rpm2cpio
  • dd if=/dev/hda1 of=/dev/hdb1 backup możemy również utworzyć korzystając z narzędzia dd, w pierwszej części komendy podajemy wejście partycji if=, zaś w drugiej części podajemy partycje wyjścia of=
  • dd if=/dev/hda of=/mbr.bk bs=512 count=1 - poleceniem tym jesteśmy w stanie zrobić backup naszego MBR
  • dd if=/mbr.bk of=/dev/hda bs=512 count=1 - poleceniem tym przywracamy wcześniej utworzoną kopie zapasową.

Basic Data Redirection

Aby przekierować strumień w Linux'ie używamy komend >, 1>, 2>, <, itp.. Np. ls . > filename przekieruje nam strumień do pliku o nazwie filename, komenda > i 1> wykonują te samo polecenie, czyli przekierują strumień do pliku. Następna komenda to komenda która spowoduje dopisanie jakiś informacji, danych do pliku ls . >> filename. Zaś jeśli chcemy przekierować strumień błędów używamy polecenia ls nodirectory 2> errorfile, gdzie za każdym razem tworzymy nowy plik lub jak to woli nadpisujemy dane zawarte w tym że pliku. Aby dopisać dane o błędach do pliku nalęży użyć podobnej składni jak powyżej czyli ls nodirectory 2>> errorfile. To były polecenia aby przekierować output naszych strumieni, a żeby przekierować input należy użyć polecenia database < data.


Tees - Pipes - Redirection

Czasami zachodzi potrzeba przekazania wyjścia na wejście innej komendy w tym celu posługujemy się poleceniem |, lub ||. Oczywiście najlepiej to widać na przykładzie rpm -qa | grep system, komenda rpm -qa zwraca nam informacje na temat zainstalowanych pakietów w systemie, teraz druga komenda filtruje czy na wejściu pokazał się taki wzorzec jakiego poszukiwaliśmy, jeśli tak jest on wyświetlany na wyjściu. Innym przypadkiem może być np. jeśli chcemy przekierować dane i umieścić je zarazem w pliku, możemy tego dokonać za pomocą komendy tee, a oto przykład ls . | tee filename, polecenie to wyświetli nam plik i zapisze dane do pliku. Następną komendą używaną przy przekierowaniach jest komenda xargs, a tu przykład jej użycia ls *.png | xargs rm. Gdzie komenda xargs pobiera całą listę plików a następnie przekazuje ją do komendy rm, która to usuwa wszystkie te pliki.


stat4u stat4u

Brak komentarzy:

Prześlij komentarz

Powered By Blogger