bash

Z Wikibooks, biblioteki wolnych podręczników.
(Przekierowano z BASH)
Skocz do: nawigacji, wyszukiwania


Spis treści

Sposoby pracy [edytuj]

Ręczne wpisywanie poleceń [edytuj]

W konsoli wpisujemy :

which bash

otrzymujemy odpowiedź gdzie jest program obsługujący wiersz poleceń naszej powłoki :

/bin/bash

Sprawdzamy wersję BASH'a :

 /bin/bash --version
 GNU bash, version 4.2.8(1)-release (x86_64-pc-linux-gnu)
 Copyright (C) 2011 Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

 This is free software; you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.

Skrypty [edytuj]

Polecenia możemy

  • zapisać do pliku tekstowego zwanego skryptem , np. g
  • plik powinien rozpoczynać się od magicznych znaków [1]) :
#!/bin/bash
  • nadać mu atrybut wykonywalności :
chmod +x g
  • uruchomić plik znajdujący się w aktualnym katalogu :
./g


Tworzenie animowanego gifa [edytuj]

Przykładowy skrypt uruchamiający komendy z biblioteki ImageMagic tworzące z plików pgm animowany gif :


#!/bin/bash
 
# script file for BASH 
# which bash
# save this file as g
# chmod +x g
# ./g
 
i=0
# for all pgm files in this directory
for file in *.pgm ; do
  # b is name of file without extension
  b=$(basename $file .pgm)
  # change file name to integers and count files
  ((i= i+1))
  # convert from pgm to gif and add text ( level ) using ImageMagic
  convert $file -pointsize 50 -annotate +10+100 $b ${i}.gif
  echo $file
done
 
echo convert all gif files to one animated gif_file
convert -delay 50   -loop 1 %d.gif[1-$i] aa${i}.gif
# convert -delay 50 -loop 0 %d.gif[1-$i] b${i}.mpg # it needs ffmpeg
# ffmpeg2theora %d.gif --framerate 12 --videoquality 9  -o output129.ogv
 
 
echo b${i} OK
# end

Zmiana nazwy plików [edytuj]

Możemy wykorzystać komendy :

lub skrypt :


#!/bin/bash
 
# script file for BASH
# which bash
# save this file as r
# chmod +x r
# ./r
# for all pgm files in this directory
# for all pgm files in this directory
for file in *.pgm ; do
  # remove first 3 chars from old file name
  newfile=${file:3}
  # change name of file
  mv $file $newfile
  echo $newfile
done
 
echo OK
# end

Kopiowanie plików [edytuj]

Chcemy skopiować : [2][3]

  • tylko pliki z rozszerzeniem c
  • z katalogu ~/c
  • do katalogu ~/temp
  • tak aby zachować podkatalogi

Możemy użyć :

find  ~/c -maxdepth 7 -name "*.c" -exec cp {} -R ~/temp \;

ale w katalogu docelowym nie ma podkatalogów

Inna opcja :

cp -R ~/c  ~/temp

Kopiuje z podkatalogami ale wszystkie pliki.

Działające polecenia :

  • z użyciem find i tar
(cd ~/c ; find  -maxdepth 7 -name "*.c" |tar -T - -c) |tar -C ~/temp -x 
  • z użyciem rsync :
rsync -a --include='*.c' --include='*/' --exclude='*' ~/c/ ~/temp/

Skróty klawiaturowe [edytuj]

Polecenia BASH'a Skrót klawiszowy Opis polecenia
SIGTSTP Ctrl-Z zatrzymuje ( kończy) proces
SIGINT Ctrl-C zawiesza proces ( pauza)

Zmienne środowiskowe [edytuj]

Opis w wikipedii [4]

PATH [edytuj]

Wyświetlamy wartość zmiennej PATH:

echo $PATH

Zmieniamy czasowo wartość zmiennej PATH :

PATH="$HOME/.cabal/bin:$PATH"

W celu stałej zmiany wartości zmiennej PATH dla danego użytkownika należy powyższą instrukcję dodać do swojego pliku

~/.profile 

lub

~/.bash_profile 

lub

~/.bash_login 

Edycja pliku jest możliwa po otwarciu go w trybie administratora.



Położenie pliku w zależności od klasy użytkowników [5]
Klasa użytkowników plik
aktualny $HOME/.bash_profile
wszyscy oprócz su /etc/profile
su (root) /root/.bash_profile

System [edytuj]

Informacje o procesorze :

cat /proc/cpuinfo


Zobacz również [edytuj]

Przypisy [edytuj]

  1. Shebang w wikipedii
  2. Archiwum grupy pl.comp.os.linux.programowanie : Bash : kopiowanie wybranych plików z podkatalogami
  3. [http://ubuntu.pl/forum/viewtopic.php?f=170&t=160739%7Cpoprawne wywołanie rsync w bash w forum ubuntu.pl
  4. Zmienna środowiskowa w wikipedii
  5. [Troubleshooters.Com and T.C Linux Library Present : Adding a Directory to the Path by Steve Litt]