Sari la conținut

rm (Unix)

De la Wikipedia, enciclopedia liberă

rm(în englezăremove) este una din comenzile de bazăUNIXcare este folosită pentru a șterge fișiere. Comanda înlătură numele fișierului din indexul sistemului, astfel încât fișierul nu mai poate fi găsit. Datele actuale din fișiere nu sunt șterse, însă spațiul respectiv este marcat ca fiind gol și va fi suprascris de fișiere noi.

Comanda operează și pe directoare. Dacă este folosită pe un link simbolic, numai linkul este șters.

rm [opțiuni] fișiere

de exemplu

% rm -i foo
remove foo? y

Printre opțiunile cele mai des folosite se numără:

-i,(interactiv), utilizatorul este întrebat înaintea ștergerii fiecărui fișier.
-f,(forțează), fișierele inexistente sunt ignorate, utilizatorul nu este întrebat.
-r,(recursive), șterge recursiv toate fișierele din toate subdirectoarele întâlnite.

rm este folosit adeseori prin intermediul aliasuluirm -icare forțează un prompt pentru fiecare fișier care urmează să fie șters. În cazul în care un utilizator încearcă să șteargă un număr mare de fișiere, se folosește opțiunea-fcare anulează opțiunea-i.


De obicei, comanda rm are nevoie de drepturi de scriere în directorul unde fișierul este șters. Comanda nu are nevoie de drepturi de scriere pentru fișierul în cauză. Astfel, este posibil să se șteargă fișiere read-only (versiuneaGNUîntreabă utilizatorul înainte de a șterge un astfel de fișier). Dacă fișierul de găsește într-un director custicky bitsetat, utilizatorul trebuie să fie posesorul (owner) fișierului respectiv.


Protecție pentru /

[modificare|modificare sursă]

Firma Sun Microsystems a introdus o protecție pentru ștergerea accidentală a directorului root (rm -fr /) înSolaris10 care a apărut în anul 2005.[1]La scurt timp după aceasta, o protecție similară a fost introdusă înFreeBSD.VersiuneaGNUrefuză și ea ștergerea dacă opțiunea--preserve-rooteste prezentă. Această opțiune este activată implicit.


Protecție pentru utilizatori

[modificare|modificare sursă]

Utilizatorii și administratorii de sistem se protejează deseori pentru ștergerea accidentală a datelor printr-un alias sau redefinind comanda în shell:

alias rm= "rm -i"
rm () { /bin/rm -i "$@"; }

Din păcate, tendința unui astfel de utilizator este să fie neatent în special când caracterewildcharsunt folosite în comenzi. Uneori, utilizatorii se plictisesc să tot apeseypentru confirmarea ștergerii, s-au văzut cazuri în care comanda este folosită în formayes | rm -files.Un compromis ar fi ca rm să ceară confirmare o singură dată, cu un script de genul

if [ -n "$PS1" ]; then
rm ()
{
ls -FCsd "$@"
echo 'remove[ny]? ' | tr -d '\012'; read
if [ "_$REPLY" = "_y" ]; then
/bin/rm -rf "$@"
else
echo '(cancelled)'
fi
}
fi

De remarcat că funcția propriu-zisă este activă numai când comanda este introdusă de la consolă. Când rm este chemat dintr-un script, funcția nu este accesată.

O astfel de funcție shell mai poarte și numele dewrapper.Pentru rm există o serie largă de funcții wrapper definite de utilizatori, cum ar fisafe-rm.


Funcții de sistem

[modificare|modificare sursă]

Funcția de sistem echivalentă se numeșteunlink:

#include <unistd.h>

int unlink(const char *pathname);

undepathnameeste numele fișierului care trebuie șters.



Legături externe

[modificare|modificare sursă]


vdmPrograme înlinia de comandăpentruUnix(mai multe)
Management de fișiere: cat|cd|chmod|chown|chgrp|cksum|cmp|cp|du|df|file|fsck|ln|ls|lsof|mkdir|mount|mv|pwd|rm|rmdir|split|touch
Management de procese: at|chroot|cron|exit|kill|killall|nice|pgrep|pidof|pkill|ps|pstree|sleep|time|top|wait
Management utilizator/mediu: env|finger|id|mesg|passwd|su|sudo|uname|uptime|w|wall|who|whoami|write
Procesare text: awk|comm|cut|ed|ex|fmt|head|iconv|join|less|more|paste|sed|sort|tac|tail|tr|uniq|wc|xargs
ProgramareShell: basename|echo|expr|false|printf|test|true|unset Imprimare:
lp
Communicații:
inetd|netstat|ping|rlogin|traceroute
Căutare:
find|grep|strings
Diverse:
banner|bc|cal|dd|man|size|yes