rm (Unix)
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.
Sintaxă
[modificare|modificare sursă]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.
Permisiuni
[modificare|modificare sursă]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.
Referințe
[modificare|modificare sursă]
Legături externe
[modificare|modificare sursă]- enPagina de manual
- enrm,Commands & Utilities Reference, The Single UNIX® Specification, Issue 7 from The Open Group
- enFuncțiile de sistem, pagina man(2)
linia de comandăpentruUnix(mai multe) | Programe în|||
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 |