Home  Home info
Groups > shell
Posts in descending order:
note script - maszynopis sesji 2007-04-06 22:46:02  
  $ script -a out.txt
Script started, file is out.txt

[Od tej pory caa sesja w konsoli jest zapisywana do pliku out.txt. Moe by przydatne ;)]

$ [Ctrl+D]
$ Script done, file is out.txt
 
note Tworzenie listy plików do przegl?dania przez qiv/feh 2006-12-19 23:23:15  
  Jako parametr przyjmuje nazw pliku graficznego w aktualnym katalogu. Tworzy list wszystkich plikw w tym katalogu i przekazuje j do przegldarki obrazkw,
np. qiv lub feh.

Ja zapisaem sobie ten skrypcik jako feh-from w /usr/local/bin/ i podpiem w mc, jako domyln akcj przy otwieraniu pliku z grafik.


#!/bin/sh

img=$1

files=`ls -p -1 -I '..' -I '.' | grep -v /`
l=`echo "$files" | wc -l`
n=`echo "$files" | grep -o -n --regexp="^$img$" | awk -F: '{print $1}'`

n1=`expr $n - 1`
n2=`expr $l - $n1`

str2=`echo "$files" | head -n $n1`
str1=`echo "$files" | tail -n $n2`

files="$str1
$str2"

feh $files

 
note pomiar czasu wykonania 2006-04-16 11:01:49  
  Przykadowo chcemy sprawdzi jaki program szybciej zwrci rozdzielczo obrazka JPEG. Wystarczy w tym celu uy polecenia time:

$ time jpeginfo image.jpg
img_9006.jpg 2272 x 1704 24bit Exif N 693030

real 0m0.003s
user 0m0.000s
sys 0m0.000s


$ time identify -ping image.jpg
img_9006.jpg JPEG 2272x1704 DirectClass 677kb

real 0m0.030s
user 0m0.010s
sys 0m0.020s


Jak wida szybszy jest program jpeginfo.
 
note Kopia stdout do pliku 2005-09-23 15:18:30  
  Pytanie: Jak przekierowa stdout dodatkowo do pliku (wywietla normalnie i przekierowa rwnie do pliku)
Odpowied: tee

przykad:
$ ls | tee plik

zostanie wylistowana zawarto katalogu i przekierowana do pliku plik

z manula tee: tee - czyta ze standardowego wejcia i przesya kopi na standardowe wyjcie oraz do pliku
 
note Operacje arytmetyczne w bash 2005-09-23 15:18:10  
  Do oblicze wykorzystujemy konsolowy kalkulator dc

Mnoenie 10.76 * 20.1
$ echo -e "6\nk\n10.76\n20.1\n*\np" | dc

Dzielenie 10.76 / 20.1
$ echo -e "6\nk\n10.76\n20.1\n/\np" | dc

Dodawanie 10.76 + 20.1
$ echo -e "6\nk\n10.76\n20.1\n+\np" | dc

Odejmowanie 10.76 - 20.1
$ echo -e "6\nk\n10.76\n20.1\n-\np" | dc

6 w powyszych przykadach oznacza precyzje oblicze.
 
note Bugi w twoim skrypcie ? 2005-06-02 23:03:46  
  Jeli piszesz skrypt powoki i chciaby wiedzie co si w nim dzieje dodaj na pocztku:
set -vx
Ten sam efekt daje rwnie wywoanie skryptu takie jak poniej:
$ sh -x skrypt
 
note pogaw?dka z innymi userami ? 2005-05-09 13:06:40  
  eby mc odbiera wiadomoci, naley na to zezwoli innym uytkownikom:
$ mesg y
(eby zabroni pisania innym uytkownikom na twj terminal: mesq n)

eby zacz pogawdk:
$ write
 
note Bash - przegl?danie historii 2004-10-21 00:35:20  
  Wystarczy kobinacja klawiszy Ctrl + R, po czym mona rozpocz wpisywanie czci wczeniej wykonanego polecenia bash'a - zostanie one automatycznie uzupeniane na podstawie poprzednich wywoa.
 
note Pipes 2004-09-12 01:15:56  
  Pipes let you use (very simple, I insist) the output of a program as the input of another one.
 
note Przekierowania 2004-09-12 01:15:25  
  1-stdout 2-stderr
-----------------------------------------------------------------
stdout 2 file: ls -l > ls-l.txt
stderr 2 file: grep da * 2> grep-errors.txt
stdout 2 stderr: grep da * 1>&2
stderr 2 stdout: grep * 2>&1
stderr and stdout 2 file: rm -f $(find / -name core) &> /dev/null
 
note powtórzenie ostatniego polecenia 0000-00-00 00:00:00  
  $ !![Enter]
 
note powtórzenie ostatniego polecenia zaczynaj?cego si? od litery [litera] 0000-00-00 00:00:00  
  $ ![litera][Enter]
 
note skrypty 0000-00-00 00:00:00  
  Skrypt z argumentami: $# //odpowiada calkowitej liczbie parametrow $0..9 //parametry odpowiednio 1-szy,2-gi... $0 //nazwa skryptu $? //oznacza wynik poprzedniej operacji np. skrypt net_mount smbmount $0 /mnt/siec $ net_mount /192.168.0.7/filmy //zamontuje filmy w /mnt/siec
 
note Warunki 0000-00-00 00:00:00  
  Skrypt warunkowy if-then-else-fi np. if test $1 -gt 0 then echo "$1 liczba jest dodatnia" fi sprawdza, czy pierwszy argument jest greater (>) od 0 if expr [$? -eq 0] //jesli $? = 0 if test $? -eq 0 //rownoznaczne
 
note p?tla FOR 0000-00-00 00:00:00  
  petla FOR: for { nazwa zmiennej } in { lista } do wykonywane jest raz dla kadego elementu na licie doprzane s wszystkie wyraenia pomidzy do a done) done np. for i in 1 2 3 4 5 do echo "Welcome $i times" done
 
note p?tla WHILE 0000-00-00 00:00:00  
  petla WHILE: while [ warunek ] do polecenie1 polecenie2 polecenie3 ... ... done np. n=$1 // inicjalizacja zmiennych KONIECZNA i=1 // while [ $i -le 10 ] do echo "$n * $i = `expr $i \* $n`" i=`expr $i + 1` done
 
note Czytanie z klawiatury 0000-00-00 00:00:00  
  Czytanie z klawiatury READ: read zmienna1, zmienna2,...zmiennaN np. # #Skrypt przeczyta twoje imi wprowadzone z klawiatury # echo "Podaj swoje imi:" read fname echo "Hello $fname, zostamy przyjaciolmi!"
 
note Rownoczesne uruchamianie dwoch polecen 0000-00-00 00:00:00  
  polecenie1;polecenie2
 
note shebang / bang 0000-00-00 00:00:00  
  # jedyny wyjatek kiedy # nie oznacza komentarza, to skrypty shell'a rozpoczynajace sie od: #!/bin/sh To tzw. "bang" lub "shebang". Okresla sciezke do shell'a w ktorym dany skrypt powinien byc uruchamiany (You can run a shell script under a different shell than the one you're currently using.)