Soluzione 1:
 Entrambi sono un wrapper per la stessa funzione fondamentale che è un unlink() chiamata di sistema.
Soppesare le differenze tra le utilità di userland.
 rm(1) :
- Altre opzioni.
- Altri feedback.
- Controllo di integrità.
- Un po' più lento per le singole chiamate come risultato di quanto sopra.
- Può essere chiamato con più argomenti contemporaneamente.
 unlink(1) :
- Meno controlli di integrità.
- Impossibile eliminare le directory.
- Impossibile ricorrere.
- Può prendere solo un argomento alla volta.
- Leggermente più snello per chiamate singole grazie alla sua semplicità.
- Più lento rispetto a dare rm(1)più argomenti.
Potresti dimostrare la differenza con:
$ touch $(seq 1 100)
$ unlink $(seq 1 100)
unlink: extra operand `2'
$ touch $(seq 1 100)
$ time rm $(seq 1 100)
real    0m0.048s
user    0m0.004s
sys     0m0.008s
$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do rm $i; done
real    0m0.207s
user    0m0.044s
sys     0m0.112s
$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do unlink $i; done
real    0m0.167s
user    0m0.048s
sys     0m0.120s
 Se invece stiamo parlando di una chiamata genuina al sistema unlink(2) function, che ora mi rendo conto che probabilmente non è quello che stai tenendo in considerazione.
 Puoi eseguire un unlink() di sistema su directory e file allo stesso modo. Ma se la directory è un genitore di altre directory e file, il collegamento a quel genitore verrebbe rimosso, ma i figli rimarrebbero penzolanti. Il che è tutt'altro che ideale.
Modifica:
 Spiacenti, chiarita la differenza tra unlink(1) e unlink(2) . La semantica sarà ancora diversa a seconda della piattaforma.
Soluzione 2:
A livello di specifica POSIX, ciò che fa rm è specificato in modo molto più preciso rispetto a ciò che fa unlink.
La portabilità del risultato sembra probabilmente essere migliore utilizzando rm, se il tuo script deve essere eseguito su tutti i sistemi operativi.
Soluzione 3:
La parte lenta della rimozione è il codice del filesystem e le cose del disco, non la preparazione dello spazio utente della chiamata di sistema unlink().
Vale a dire:se la differenza di velocità è importante, non dovresti archiviare i dati nel file system.
unlink è solo una "luce" di rm. rm ha più funzionalità ma fanno la stessa cosa.