web analytics

Prullenbak ledigen via terminal

Print Friendly, PDF & Email

Dit artikel werd gemaakt en getest onder Linux Mint 17.1 Cinnamon.

Als je graag een leeg bureaublad hebt, dan kun je de aanwezige bureaubladpictogrammen verwijderen via je de optie Bureaublad in je Instellingen.
Bureaublad InstellingenBureaublad_018Eens alles uitgezet, verkrijg je een bureaublad zonder enig systeem pictogram er op.
Werkblad 1_012
Nu de prullenmap van het scherm verwijderd is, duikt er plots een klein probleempje op. Hoe haal je een verwijderd bestand terug of hoe maak je de prullenbak leeg?
Opm: Als je het bestand verwijderd hebt via het rm-commando in een shell of via shift-DEL in een grafische omgeving, dan kan je het ook niet terugvinden in de prullenmap, daar het rechtstreeks verwijderd werd.

Zie op het einde van het artikel hoe je dat probleem kunt omzeilen- voor gevorderden.

delEdit 17/02/15

In een reactie schreef Bernard Decock :

Je zou het best ook vermelden dat er in Nemo 2 mogelijkheden zijn om bestanden te verwijderen: 1. Naar prullenbak verplaatsen 2. Verwijderen. In geval van verwijderen gaat het bestand niet naar de prullenbak en wordt het onmiddellijk verwijderd (nog terug te halen met speciale technieken)

Daarom hiernaast een plaatje met het menu dat zich opent als je rechtsklikt op een bestand in Nemo. Duidelijk te zien zijn de twee opties:

– Naar de prullenbak verplaatsen
– Verwijderen

Verwijderen staat aangeduid met een rood kruisje zodat het goed opvalt en je niet per abuus je bestand definitief verwijderd.

Er zijn gelukkig enkele oplossingen voor ons probleem:

  1. Maak gebruik van je bestandsbeheerder Nemo
  2. Rechtstreeks de map van de verwijderde bestanden ledigen via console
  3. Een klein extra programma installeren dat dit voor ons doet via console

Bestandsbeheerder Nemo

Nemo heeft in de linker kolom een reeks van snelkoppelingen naar je belangrijkste mappen, waaronder Prullenbak.
Prullenbak_024Zoals je ziet kun je via de bestandsbeheerder bestanden terugzetten en/of verwijderen.

Gebruik van de commandolijn in de console

Locatie van de map van de prullenbak

Alvorens we de map kunnen leeg maken, dan moeten we ze natuurlijk eerst weten te vinden. De prullenbakmap of [trash] genoemd in het OS, bevindt zich op de volgende locatie:
$HOME/.local/share/Trash waar $HOME staat voor /home/username
Trash_020Er zijn twee submappen in de map, [files] en [info]. De map [files] bevat het bestand en de map [info] bevat informatie over dat bestand, zodat je systeem waar het bestand moet teruggezet worden.
files_019

info_021De inhoud van het .trashinfo bestand bevat 2 zaken:

voorbeeld.txt.trashinfo (~-.local-share-Trash-info) - gedit_022

  • Het pad van waar het bestand verwijderd werd
  • De datum van verwijdering

Deze gegevens laten de grafische versie van de prullenmap toe om het bestand op de juiste locatie terug te plaatsen.

Voor ons zijn deze gegevens ook van belang want je moet weten waar je het bestand, dat zich in de map [files] bevindt naar toe moet verplaatsen.

Terugzetten van het verwijderd bestand

We zullen het bestand terugzetten met behulp van het mv-commando vanuit de shell.

In dit voorbeeld ga ik het bestand [voorbeeld.txt] dat ik voordien verwijderd had, terugzetten in mijn home-folder. Ik moet 2 zaken doen:

  1. Het bestand in de map [files] verplaatsen naar de bestemmingsmap
  2. Het gekoppelde [.trashinfo]-bestand in de map [info] verwijderen

Terminal_025De stappen die ondernomen worden, zijn in feite basisstappen voor het werken in een Terminal, maar doordat we werken met het Remove-commando (rm) blijft er steeds een risico voor het per abuus toevoegen van een extra teken of spatie waardoor er meer bestanden gewist worden dan gewenst.
Daarom is het volgende programma dat je zo kunt installeren te prefereren over de 100% manuele manier.

Trash-cli

Het programma trash-cli kan je in Mint/Ubuntu zo installeren. Het is aanwezig in de standaard softwarebronnen. Installeer het programma trash-cli via de console als volgt:

$ sudo apt-get install trash-cli
Terminal_026 trash-cli voegt vier nieuwe opdrachten toe aan je shell:

  • trash-put of trash : verplaats bestanden naar je prullenbak
  • trash-empty : Het wissen van alle bestanden in je prullenbak
  • trash-list : vertoont de bestanden in je prullenmap
  • restore-trash : een verwijderd bestand terugzetten

Trash-list, trash-empty en restore-trash commando’s

Terminal_027 Via trash-list zie ik welke bestanden ik in mijn prullenbak heb.
restore-trash toont me een lijst van de mogelijke bestanden die ik kan terugzetten. Ik moet het nummer van het bestand meegeven bij ‘What file to restore” en op Enter drukken. Geef je geen nummer op, dan wordt er ook niets uitgevoerd.

Terminal_028 We zien dat we drie bestanden in de prullenbak zitten hebben en met het commando trash-empty maak ik de prullenbak leeg.

Het trash-commando – (gevorderden)

Terminal_029

Alhoewel er meerdere opties zijn, worden ze niet gebruikt wegens de “GNU rm compatibility”. Dat belet niet dat trash één groot voordeel heeft over rm:

Bij rm worden de bestanden NOOIT in de prullenmap gezet, bij het commando trash ALTIJD.

Terminal_030

Na het commando [rm demo1.txt] blijkt de trash nog steeds leeg te zijn. Na het commando [trash demo2.txt] zien we dat het bestand daarentegen wel in onze prullenmap terecht is gekomen.

Daarom is het goed om een alias te maken die het gekende commando rm door de trash-functionaliteiten vervangt. Dat doen we via een script als volgt:

$ sudo gedit /usr/local/bin/trash-rm

Voeg onderstaande code in.

#!/bin/bash
# command name: trash-rm
shopt -s extglob
recursive=1
declare -a cmd
((i = 0))
for f in "$@"
do
case "$f" in
(-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
tmp="${f//[rR]/}"
if [ -n "$tmp" ]
then
#echo "\$tmp == $tmp"
cmd[$i]="$tmp"
((i++))
fi
recursive=0 ;;
(--recursive) recursive=0 ;;
(*)
if [ $recursive != 0   -a  -d "$f" ]
then
echo "skipping directory: $f"
continue
else
cmd[$i]="$f"
((i++))
fi ;;
esac
done
trash-put "${cmd[@]}"

Vervolgens maken we het bestand uitvoerbaar:

$ sudo chmod +x /usr/local/bin/trash-rm

Nu gaan we de alias aanmaken

$ gedit ~/.bashrc

Voeg de de alias toe aan je bestaande aliases, of maak deze alias je eerste alias.

alias rm="trash-rm"

en bewaar het bestand.

bashrc

Laad de nieuwe alias in door in een console het volgende commando in te geven.

$ bash

Als je nu in een console het rm of rm -r gebruikt wordt het vervangen door door het script dat het trash-commando hanteert en je bestanden zullen vanaf nu ALTIJD in de prullenbak terechtkomen in plaats van definitief verwijderd te worden.

 

Beoordeling

10 Reacties

  1. franz ulenaers

    Zeer interessant artikel !
    Dank u

    Reageren
  2. franz ulenaers

    werkt ook met caja

    Reageren
    1. eijie (Auteur bericht)

      Nice to know.

      Reageren
  3. Jos Bruynseels

    Bruikbaar!

    Reageren
  4. Bernard Decock

    Goed artikel. Je zou het best ook vermelden dat er in Nemo 2 mogelijkheden zijn om bestanden te verwijderen: 1. Naar prullenbak verplaatsen 2. Verwijderen. In geval van verwijderen gaat het bestand niet naar de prullenbak en wordt het onmiddellijk verwijderd (nog terug te halen met speciale technieken)

    Reageren
    1. eijie (Auteur bericht)

      Bernard,

      ik vermeld reeds in het begin van het artikeltje in een opmerking dat bestanden die in een grafische bestandsbeheerder via de Shift-Del combinatie verwijderd worden ook niet in de prullenmand terug te vinden zijn.
      Ik ga er – verkeerdelijk ? – van uit dat iedereen op de hoogte is van het feit dat bestanden in een grafische bestandsbeheerder verwijderd worden op de normale manier automatisch in de prullenmand komen. Daarom vermeld ik enkel de Shift-Del optie.

      Reageren
    2. Bernard Decock

      Alain, je vermeldt dat inderdaad, maar in Nemo ziet de gebruiker een rood kruisje staan. De gewone gebruiker heeft geen weet van de Shift-Del-optie. Ik vermeld dat omdat het gros van de gebruikers die ik wegwijs in linux maak, beginners zijn.

      Reageren
  5. franz ulenaers

    als je bestanden verwijderd met emelfm2 File Manager dan worden de verwijderde bestanden en mappen in .local/share/Trash/files maar er wordt niks gezet in map : .local/share/Trash/info/
    trash-list kan deze verwijderde bestanden en mappen niet vinden !
    trash-cli kan dus niet goed tesamen werken met emelfm3 !

    Reageren
  6. franz ulenaers

    als je bestanden verwijderd met emelfm2 File Manager dan worden de verwijderde bestanden en mappen in map=.local/share/Trash/files gezet maar er wordt niks gezet in map : .local/share/Trash/info/
    trash-list kan deze verwijderde bestanden en mappen niet vinden !
    trash-cli kan dus niet goed tesamen werken met emelfm2 !

    Reageren
    1. eijie (Auteur bericht)

      trash-cli is geschreven om te voldoen aan de freedesktop.org trashcan specificaties. Wellicht dat emelfm2 dat niet doet.

      Reageren

Geef een reactie

%d bloggers liken dit: