Bash:
PSC_7 Komunikacja międzyprocesowa
Usuwanie rekursywne
find . -name plik -exec rm {} \; -print
find . -type f -name plik -print | xargs rm
Uwagi: W przypadku rozwiązania nr 1 przy każdym pliku wywoływany będzie osobny rm, używając xargs unikamy tej wady, dzięki czemu przy dużej ilości plików skrypt wykona się szybciej i mniej obciąży zasoby komputera.
find . -type f -name plik -print | sed 's/^/"/' | sed 's/$/"/' | xargs rm
Uwagi: xargs czyta ze standardowego wejścia listę argumentów rozdzielonych spacjami lub znakami nowej linii. Argumenty zawierające spacje czy znaki nowej linii mogą być chronione poprzez ujęcie ich w cudzysłów podwójny, pojedynczy lub w backslashe. Powyższa komenda zawiera zabezpieczenie przed problemem spacji czy znaku nowej linii ("entera") w nazwie pliku.
Top
wget
- -b background
- -q quiet
-
-nc no clobber (nie przebijać - nie pobierać tego samego)
- -c continue
- -k --convert-links
- -K --backup-converted
-
-m --mirror
-
-p pobiera całą stronę z wymaganymi plikami
wget -r -l 2 http://I-ośrodek/1.html
bez obrazka w 3.html //druga podstrona
wget -r -l 2 -p http://I-ośrodek/1.html
z obrazkiem
wget -r -l 1 -p http://I-ośrodek/1.html
jedna podstrona
wget -p http://I-ośrodek/1.html
pojedyncza strona
wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
tylko gif'y z katalogu
Top
wget time
wget url &
WGETPID=$!
sleep (number of seconds to record for)
kill $WGETPID
-
LENGTH=(length of program in minutes)
wget url &
WGETPID=$!
sleep $((LENGTH*60))
kill $WGETPID
-
cron:
start
nohup wget url &
echo $! > /tmp/recording-pid
stop
if ps -ef | grep `cat /tmp/recording-pid` | grep wget | grep -v grep
then
kill `cat /tmp/recording-pid`
rm -f /tmp/recording-pid
fi
-
at:
script as '/export/home/user/record':
$ echo /export/home/user/record | at 05:00
Top
ssh
-
ssh - Tunelowanie
ssh klimek@localhost -L 8080:localhost:3128
- -L (port lokalny):(zdalny host):(zdalny port)
- -R (zdalny port):(lokalny host):(lokalny port)
-
SSH - logowanie za pomocą kluczy
ssh-keygen -t rsa //dsa, rsa1
scp ~/.ssh/id-rsa.pub user@remote:~/
ssh user@remote
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
prawa 600, bo pyta o hasło, gdy się chce zalogować sam do siebie
-
Kopiowanie z tar
tar czf - ./* | ssh klimek@localhost 'cd /tmp; tar xzf -';
- tar czf - ./* - stworzy z ./* na stdout (-)
- ssh klimek@localhost 'cd /tmp; tar xzf -' - loguje się i rozpakowuje
-
X11 forwarding
do uruchamiania aplikacji X na lokalnym jako zdalny
ssh -X user@remote
ssh -X user@remote 'psi' //'program'
- -Y - bezpieczniejsze
- -C - kompresja, przy już skompresowanych, spowalnia
- -D - proxy
Top
unzip
for f in *.zip; do unzip -d "${f%*.zip}" "$f"; done
- ${f%*.zip} - nazwy bez .zip
Top
zenity
-
notify-send klimek "sto lat"
-
txt=`/usr/games/fortune`
zenity --info --text="$txt"
-
ls | zenity --list --column "Pokaż zawartość katalogu"
-
#!/bin/sh
if zenity --question --text="Please press a button."; then
zenity --info --text="You pressed Yes\!"
else
zenity --error --text="You pressed No\!"
fi
-
n=1; while [ $n -le 3 ]; do zenity --info --text=$[RANDOM]; n=$[n+1]; done
-
i=`zenity --scale --title "Suwak" --text "Poprzesuwaj troszkę..." --min-value=1 --max-value=10 --value=5`
zenity --info --text=$i
-
36
zenity --warning;
n=1;
while [ $n -le 36 ];
do echo $n;
n=$[n+1];
done | zenity --text-info
-
#!/bin/sh
if zenity --question --text="Please press a button."; then
zenity --info --text="You pressed Yes\!"
continue
n=1;
while [ $n -le 36 ];
do echo $n;
n=$[n+1];
done | zenity --text-info
else
zenity --error --text="You pressed No\!"
fi
-
#!/bin/sh
fn(){
n=1;
while [ $n -le 36 ];
do echo $n;
n=$[n+1];
done | zenity --text-info
exit 0
}
if zenity --question --text="Please press a button."; then
zenity --info --text="You pressed Yes\!"
fn
else
zenity --error --text="You pressed No\!"
fi
Top
|