OS X - Script "cliccabile" per cancellare i file?

0

Uso Latex per scrivere i miei documenti. Latex crea MOLTI file ausiliari per compilare un documento. Spesso desidero pulire la mia directory di lavoro.

Quando lavoravo su Windows, tenevo un file .bat nella directory di lavoro che assomigliava a questo:

del *.aux
del *.pdf
del *.log
del *.bak
del *.gz
del *.bbl
del *.blg

su cui ho potuto semplicemente fare clic per eliminare tutti i file ausiliari.

Ora, voglio fare lo stesso sul mio Mac. Ho creato un file .sh come questo:

#!/bin/bash

cd 'pwd'

echo "Cleaning files..."

rm *.aux
rm *.bak
rm *.bbl
rm *.blg
rm *.gz
rm *.log
rm *.pdf

echo "Done!"

che so di poter eseguire (cioè invocare dalla riga di comando), ma non riesco a fare clic su - che è più conveniente perché non sempre userò Terminal.

Come posso convertire questo script in uno "cliccabile"?

Apprezzo qualsiasi input!

    
posta thiagoveloso 06.07.2015 - 05:51
fonte

2 risposte

1

Crea un file di testo come questo:

#!/bin/bash

cd "$(dirname "${BASH_SOURCE[0]}")" || {
    echo "Error changing directory." >&2
    exit 1
}

echo "Cleaning files..."

rm *.aux
rm *.bak
rm *.bbl
rm *.blg
rm *.gz
rm *.log
rm *.pdf

echo "Done!"

Dagli un'estensione ".command" e aggiungi il permesso di esecuzione. Questo lo renderà automaticamente aperto ed eseguito nel terminale quando viene fatto doppio clic.

Nota che ci sono due differenze importanti (e una minore) tra questo e lo script di @ thiagoveloso:

  • Utilizza virgolette sul percorso in cui è cd ing, che impedirà i problemi se qualsiasi nome di directory contiene spazi (che è completamente normale su OS X).
  • Controlla gli errori mentre cd ing, e se c'è un problema esce (piuttosto che cancellare file in una posizione inaspettata). Sempre controlla gli errori su qualsiasi comando di script che influisce su ciò che farà il resto dello script; cd ne è un buon esempio.
  • (Minore) cd s direttamente alla directory dello script (piuttosto che cd lì, catturando quella posizione in una variabile, quindi cd ing in di nuovo in base alla variabile ).
risposta data 07.07.2015 - 02:35
fonte
0

In base a questo riferimento ( link ), Ho finito per risolvere il mio problema con il seguente codice:

#!/bin/bash

DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )

echo "Cleaning files..."

cd $DIR
rm *.aux
rm *.bak
rm *.bbl
rm *.blg
rm *.gz
rm *.log
rm *.pdf

echo "Done!"

#read -p "Press [Enter] to continue..."

Funziona molto bene per pulire tutti i brutti file lasciati da Texmaker!

    
risposta data 06.07.2015 - 09:25
fonte

Leggi altre domande sui tag