• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

rm oder trash abhängig von der Dateigröße

Hi,

normal wird auf der Konsole wenn man rm nutzt kein Papierkorb verwendet. Es gibt das Paket 'trash-cli' wo man mit 'trash' auch auf der Konsole den Papierkorb nutzen kann. Hab ich auf meinem HTPC, den ich nur per SSH konfiguriere, zwar installiert, aus Gewohnheit nutze ich aber meinst rm - die Finger sind halt schneller. Mir ist zwar noch nie ein Tippfehler und wichtige Sachen waren wen, kann aber mal vorkommen. Da Konfigurationsdateien meist klein sind hab ich mir folgendes zusammengebastelt um für kleine Dateien bis 1 Megabyte auch mit 'rm' den Papierkorb nutzen zu können. Ich wollte mal fragen - bevor das produktiv geht - ob ich hier noch etwas beachten muss. Mir ist klar, dass es nicht optimal ist einen selbst erstellten Befehl genauso zu nennen wie einen den es im System schon gibt.

In der ~/.bashrc hab ich das hier eingetragen:

Code:
rm () {
 size="$(wc -c <$@)"
 if [ "$size" -le 1000000 ]; then
  trash "$@"
 else
  /bin/rm "$@"
 fi
}

Wäre es vielleicht besser das Systemkommando 'rm' umzubenennen um beide unterscheidbar zu machen oder sollte das keine Probleme machen?

bunter fisch
 

abgdf

Guru
Auf Deinem System kannst Du machen, was Du willst.
Ist dann halt nicht mehr kompatibel mit dem Standard oder würde andere verwirren, die auch an Deinem System arbeiten (wenn es solche Personen gibt). Könnte sein, daß auch Systemskripte "rm" aufrufen, und mehr Zeugs in Deinem Papierkorb landet, als Du gedacht hattest.
Ansonsten liegt rm (laut "which") ja in "/usr/bin". root kann es zu etwas Anderem umbenennen.
Ich persönlich würde auch nicht eine Funktion in "./bashrc" schreiben, sondern einfach ein anderes Skript in "/usr/local/bin" ablegen. Umgekehrt hat "./bashrc" den Vorteil, daß es nur für den jeweiligen Benutzer geändert ist (und die Systemskripte weiter auf "/usr/bin" zugreifen).
Ein Hack ist es aber auf jeden Fall. ;)
 

abgdf

Guru
Weiß nicht. Ich halte das 'eh für 'ne blöde Idee. Aber wie gesagt: Auf Deinem System kannst Du tun, was Du willst.
 

josef-wien

Ultimate Guru
Solange es nur einen normalen Benutzer betrifft und dieser su nur mit dem Parameter -l verwendet sowie auf sudo verzichtet, sehe ich kein Problem. Systembenutzer wissen nichts davon und verwenden rm wie vorgesehen (und daher ist
bunter fisch schrieb:
das Systemkommando 'rm' umzubenennen
eine ziemlich schlechte Idee). Ich würde die Funktion anders nennen und einfach vergessen, daß es rm gibt.
 
Ich würde ehrlich gesagt nicht auf die Idee kommen und einen Systembefehl umzubenennen. Gib deinem Skript einen anderen Namen und setze dann entweder systemweit in der "/etc/profile" oder lokal in "~/.bashrc" oder "~/.bash_aliases" ein alias für "rm" auf dein Skript. Das wäre mMn das Standardvorgehen und kann letztlich von jedem nachvollzogen werden.
 

josef-wien

Ultimate Guru
Auch diese Spielart ändert nichts daran, daß ein von root in der Umgebung des normalen Benutzers (z. B. im Rahmen der Softwareverwaltung) ausgeführter Befehl unter Umständen mit der neuen Funktion nicht zurechtkommen könnte (eine genauere Aussage ist dem Orakel zu Delphi nicht zu entlocken).
 
Oben