Poslao: 25 Sep 2008 21:18
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12520
- Gde živiš: Južni pol
|
1. Brisanje fajlova sa nevalidnim znakovima.
Recimo da u direktorijumu imamo fajl koji se zove '[lk' :
somebody@somewhere:~/test3# ls
[lk
Bilo koji pokusaj brisanja komandom rm nece dati rezultat:
somebody@somewhere:~/test3# rm [1k
rm: cannot remove `[1k': No such file or directory
somebody@somewhere:~/test3# rm "[1k"
rm: cannot remove `[1k': No such file or directory
somebody@somewhere:~/test3# rm '[1k'
rm: cannot remove `[1k': No such file or directory
somebody@somewhere:~/test3# rm '\[1k'
rm: cannot remove `\\[1k': No such file or directory
somebody@somewhere:~/test3# rm "\[1k"
Kako onda obrisati ovaj fajl? Koristeci komandu find.
a) Prvo pronadjemo inod koristeci komandu ls:
ls -i
Sto bi dalo rezultat poput:
somebody@somewhere:~/test3# ls -i
143648693 [lk
Zatim iskoristimo ovu informaciju da bismo je prosledili komandi find:
find ./ -maxdepth 1 -inum 143648693 -delete
2. Resetovanje prikaza emulatora terminala u slucaju "korupcije" prikaza
Da li vam se neki put desilo da vam se poremeti izlaz na terminalu?
Recimo... Zeleli ste da proverite sadrzaj fajla ~/binarni_fajl
cat ~/binarni_fajl
Dobili bi ste izlaz poput ovoga:
@ @ ! @@ @ ˜ '
Ø@ Ø ß 7 ÿÿÿ⎺ Ð@ Ð Â D þÿÿ⎺ ˜@ ˜ ⎻ S @ � ] ˜@ ˜ ø
± �@ � ␉ ¨@ ¨ ◆ └ !@ ! ¸Ã ⎽ Èä@ Èä ≤ àä@ àä ÃL � ¤1A ¤1 � ¸7A ¸7 T ™ P▒ P P▒ P § P▒ P ¬ (P▒ (P ° µ ØQ▒ ØQ º ðQ▒ ðQ À à ÀT▒ ÀT Ð É V▒ �V � Î �V ˆ Y ×
Posle toga svaka komanda bi bila prikazana kripticnim karakterima i ne biste bili u stanju da razaznate sta kucate, a sta je izlaz onog sto kucate.
Kako povratiti normalan prikaz bez ponovnog pokretanja emulatora terminala? Jednostavno:
reset
Danas sam radio neki test na kome je bilo prvo pitanje. Drugo pitanje je iz licnog iskustva. Mozda nekome bude koristilo.
Pozdrav,
Bocke.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 26 Sep 2008 12:10
|
offline
- pixxel
- Legendarni građanin
- Pridružio: 21 Jun 2005
- Poruke: 9091
- Gde živiš: Tu i tamo...
|
Svaka cast - obe informacije su jako bitne, posto se cesto desavaju obe situacije...
|
|
|
|
Poslao: 28 Sep 2008 14:05
|
offline
- Pridružio: 25 Maj 2005
- Poruke: 1482
- Gde živiš: Gracanica, Kosovo
|
Neznam koliko je "[" karakter dobar za primer, kao recimo "^", ili "-":
$ echo $SHELL
/bin/ksh
$ touch [1k
$ ls
[1k
$ rm [1k
$ ls
$
Za slucaj da se radi nabrzinu nije lose da se potvrdi brisanje fajla, bez obzira kako nevazan bio, jer se moze ispostaviti da ste obrisali neki fajl od vaznosti... Npr.:
find . -inum 12345 -ok rm '{}' \;
ili
find . -inum 12345 -exec rm -i '{}' \;
Opcija "-ok" koja je ugradjena u find(1) ili opcija "-i" kod rm(1) komande traze potvrdu pre brisanja.
Za nalazenja inoda fajla moze da se koristi i stat(1) komanda (drugo polje u izlazu komande, ili samo: stat fajl | awk '{ print $2 }').
|
|
|
|
Poslao: 02 Okt 2008 09:47
|
offline
- rejn
- Novi MyCity građanin
- Pridružio: 02 Okt 2008
- Poruke: 16
|
Brisanje radi i bez petljanja sa inode-ovima. (bar na mojoj masini i za zadati primer)
Ili je u pitanju "matora" verzija coreutils-a u prvom primeru, ili je nesto trece
luminus tt # touch "[1k"
luminus tt # ls
[1k
luminus tt # rm ./\[1k
luminus tt # ls
luminus tt #
luminus tt # echo $SHELL
/bin/bash
luminus tt #
A sto se tice korisnih mini komandi imam i ja jednu
$ screen
|
|
|
|
Poslao: 02 Okt 2008 10:23
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12520
- Gde živiš: Južni pol
|
Radi. Zato je Soxxx i rekao da je loš primer. Mada mislim da sam napravio malu omašku. Sada sam probao nešto.
rm '$^8%!lč'
Radiće. BASH ne interpretira znakove koji se nalaze između jednostrukih znakova navoda.
Ali svako pravilo ima izuzetak. Recimo '$8%!/\<>yl' neće moći da se obriše. Tada će gornji primer biti jedino rešenje.
|
|
|
|
|
Poslao: 02 Okt 2008 15:20
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12520
- Gde živiš: Južni pol
|
Hvala na ispravkama. Odgovor na testu i jeste bilo rešenje sa '\'. Moja literatura je bila stara.
|
|
|
|
Poslao: 21 Okt 2008 22:07
|
offline
- nulti.korisnik
- Legendarni građanin
- Pridružio: 20 Feb 2005
- Poruke: 4505
- Gde živiš: planeta Zemlja
|
Mene interesuje sledece:
Kako da u okviru echo komande izbacim ""?
Primer:
echo "Mala "patka" gumena"
Ovakav echo mi izbacuje
Mala patka gumena
Nasao sam jedan nacin ali on ima manu. Evo kako:
echo 'Mala "patka" gumena'
Medjutim ja u okviru ' i ' ne mogu da izvrsavam naredbe!
Primer:
echo " `date +"%a %b %e,%Y @ %l:%M%P"` "
Ovo gore radi!
echo ' `date +"%a %b %e,%Y @ %l:%M%P"` '
Ne radi!
Kako izvrsavati komande unutar ' i ' ?
hvala
|
|
|
|
Poslao: 21 Okt 2008 23:43
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12520
- Gde živiš: Južni pol
|
BASH ne tumači komande i promenjljive između jednostrukih znakova navoda. Tako da tako nešto nije moguće. Ali možeš uraditi nešto poput ovoga:
echo "mala \"patka\""
Odnosno:
echo \" `date +"%a %b %e,%Y @ %l:%M%P"` \"
Pomoglo?
|
|
|
|
Poslao: 22 Okt 2008 15:16
|
offline
- beli0135
- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
tip:
ubaciti u .bashrc sledece
#za PS
psgrep() {
if [ ! -z $1 ] ; then
echo "Grepping for processes matching $1..."
ps aux | grep $1 | grep -v grep
else
echo "!! Need name to grep for"
fi
}
function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }
prva funkcija daje "ps" od onih procesa koje zelimo da vidimo,
drugu funkciju ja volim jer me mrzi da kucam "mkdir" pa onda "cd" da udjem u isti
Lenjost je pozitivna osobina (u IT svetu)
|
|
|
|