Utilizzo terminale e il comando rm

Buon pomeriggio a voi, finita la stagione estiva si ricomincia con la solita vita, che devo ammettere un po’ mi mancava. le mie vacanze sono andate… non dico da schifo ma quasi, questa pandemico patogeno è la seconda estate che mi rovina, spero a che a voi le vacanze siano andate meglio.
Tornando al titolo del post, vi capita spesso di usare il terminale per una qualsiasi operazione da compiere? Io lo faccio spesso, avvolte non mi accorgo nemmeno di farlo tanto è istintiva questa abitudine, nonostante le considerevoli funzioni dell’interfaccia grafica. soprattutto i comandi mv e rm, quest’ultimo può creare notevoli problemi dato che tutto ciò che cancella non è più recuperabile, a tal proposito mi sono inventato un alias. A dirla tutta, non è propri una mia invenzione, ma esperienza di molti anni fa nell’usare red hat 6.0.
alias rm=‘mv $1 -t $HOME/.local/share/Trash/files/’, utilizzando rm come alias e mv come reale comando il file, contenuto nella variabile di sistema $1, viene spostato nel cestino di sistema, certo non è possibile ripristinarlo automaticamente dato che manca il file dei dati di posizione, in compenso, però, questo non è del tutto perduto se si fa un errore, si sa sempre dove ritrovarlo momentaneamente.
Ok, se la mia iniziativa non è una sciocchezza, spero di esservi stato utile con questa dritta e se avete una idea migliore sarò lieto di leggerla.

saluti e a presto

1 Mi Piace

molto interessante, ricordo di aver letto qualcosa di simile molti anni fa, ma non ricordo né dove né se fosse così dettagliato.
Domandina: cosa vuoi dire quando scrivi

? A presto

Veramente mi vuoi sapere che intendo con file dati di ripristino? A fare questa domanda direi che sei proprio digiuno in materia, praticamente uno che accende il motore e parte senza prendersi la briga di sbirciare di tanto in tanto sotto il cofano per vedere cos’è che tanto rumore :thinking:
Ok, starò in fede alla tua sincerità, anche se questo modo id essere è poco incline a chi usa sitemi open source te lo spiegherò. la Trash cartella che rappresenta il cestino utente di sistema, contiene altre cartelle di solito due, in cui uno di nome file contiene i file cancellati, una altra cartella di nome info in cui il sistema registra tutti i file spostati nel cestino coi dati della loro posizione registrati in un file il cui nome è quello del file cancellato. Se quel file è mancante, così come avviene usando *l’alias da me generato, il sistema non può ripristinarlo in mancanza proprio di quei dati che indicano la posizione in cui si trovava nel file system.
Allora, Capìttò mi hài? :sweat_smile:

Be’ questo modo di essere è anche curiosità, è anche condivisione. Il curioso si pone delle domande, chiede, e chi ne sa di più condivide di buon grado le proprie conoscenze.

1 Mi Piace

Ciao,

e se aggiungi all’alias questo: echo -e "[Trash Info]\nPath=$PWD/$1\nDeletionDate=$(date +%Y-%m-%dT%H:%M:%S)" > $HOME/.local/share/Trash/info/$1

dite che potrebbe andare?

Comunque in questi giorni faccio una prova.

1 Mi Piace

Ecco, bravo fai una prova e facci sapere, così se funziona la provo anche io, poiché si direbbe un ottimo modo di dare informazioni alla info dei file cancellati anche in manuale.

ciao a presto
aspetto tue notizie

Ho fatto una prova, questo è il risultato :
Schermata del 2022-10-10 02-12-03
Credo che il codice che ho scritto non riesce a leggere la variabile $1, che è il nome del file dopo il comando, mentre mv riesce a leggerla, quando scrissi quella parte di codice avevo esportato la variabile $1 con il nome del file da eliminare da terminale, ecco perché funzionava, avete qualche idea?

Il problema è proprio quello la variabile di sistema $1, usata in un alias, può essere letta solo una volta, dopo di che si annulla, non so dire il perché ma ho avuto lo stesso problema con altri alias che ho dovuto risistemare. la soluzione sarebbe di scrivere il tutto in uno script eseguibile e dopo memorizzarlo in .locale/bin/rm

Ciao,

allego lo script che ho creato :
#!/bin/bash
file=$1

echo -e “[Trash Info]\nPath=$PWD/$file\nDeletionDate=$(date +%Y-%m-%dT%H:%M:%S)” > $HOME/.local/share/Trash/info/$file

mv $file -t $HOME/.local/share/Trash/files/

funziona, l’unico problema è che se lancio da una cartella il comando per eliminare un file che si trova in un altra directory lo script si spacca :

Schermata del 2022-10-15 14-18-01

Molto probabilmente lui legge /home/psy/Documenti/zzz come un intera stringa e non distingue il path dal nome del file.

Puoi provare con una codice simile:
if [ -! -d 'SPWD/$fil ] || [ -! -f '$PWS/$file ]; then
echo -e "[Trash Info] - nPhath=$file - nDeletionDate=$(date +%Y-%m-%dT%H:%M:%S)” > $HOME/.local/share/Trash/info/$file
else
echo -e “[Trash Info]\nPath=$PWD/$file\nDeletionDate=$(date +%Y-%m-%dT%H:%M:%S)” > $HOME/.local/share/Trash/info/$fileo

Questo sistema, anche se io non l’ho testato, permette di scegliere se aggiornare la directory /file con il primo o il secondo comando a secondo se il file cancellato si trova nella directory corrente oppure no. Prendendo in considerazione che la variabile $file deve contenere la posizione in cui si trova il file cancellato, dato che viene aggiornata al valore della variabile di sistema $1.

1 Mi Piace

Ciao,

in questi giorni lo provo e ti faccio sapere