Crea un alias appropriato per la tua shell. In bash
, aggiungi questa riga a ~/.bashrc
:
alias sagi="sudo apt-get install"
Quindi, source ~/.bashrc
ed eseguire alias
per verificare che l'alias venga visualizzato nell'elenco. Dopodiché, digita
sagi <package>
per richiamare l'alias. Per altre shell, il formato del comando alias e il nome del file rc saranno differenti, ma il source
e alias
dovrebbe essere lo stesso.
AGGIORNAMENTO:ora tenterà di installare /bin/programma , /usr/bin/programma , /sbin/programma o /usr/sbin/programma .
Questo è totalmente automatico...
Supponi di digitare g++ main.cpp
e non hai g++ installato, ti chiederà se vuoi installare il pacchetto g++, e se rispondi sì, lo installerà e quindi eseguirà g++ main.cpp
.
(Questa è una configurazione una tantum... Fallo e sei a posto)
- Installa apt-file...
sudo apt-get install apt-file
- Aggiorna la sua cache...
sudo apt-file update
-
Modifica ~/.bashrc e aggiungi questo:
command_not_found_handle () { ask () { echo -ne "$1 (Y/n) "; read -N1 YES_ANSWER; echo ""; YES_ANSWER=`echo $YES_ANSWER | sed 's/Y/y/; s/N/n/;'`; if [ "x$YES_ANSWER" == "xy" ]; then unset YES_ANSWER; return 0; elif [ "x$YES_ANSWER" == "xn" ]; then unset YES_ANSWER; return 1; elif [ "x$YES_ANSWER" == "x" ]; then unset YES_ANSWER; return 0; else ask_yes "$1"; unset YES_ANSWER; return $?; fi; } if [ "x$1" == "x" ]; then echo "File name not provided."; return 1; fi; echo "Command not found: $1"; echo "Searching for file in database..."; FILE="`apt-file search /bin/$1 | sed 's/: /_/'`"; if [ "x$FILE" != "x" ]; then FILE="`apt-file search /usr/bin/$1 | sed 's/: /_/'`"; fi; if [ "x$FILE" != "x" ]; then FILE="`apt-file search /sbin/$1 | sed 's/: /_/'`"; fi; if [ "x$FILE" != "x" ]; then FILE="`apt-file search /usr/sbin/$1 | sed 's/: /_/'`"; fi; if [ "x$FILE" != "x" ]; then for f in "$FILE"; do if ask "\nDo you want to install package `echo $f | sed 's/_.*$//'` which provides `echo $f | sed 's/^.*_//'`?"; then sudo apt-get install `echo $f | sed 's/_.*$//'`; "[email protected]"; return $?; fi; done; else echo "Could not find file $1."; return 1; fi; }
Lo sto ancora testando, ma nel test preliminare sembra funzionare. Ogni tanto sarebbe bene eseguire apt-file update
per aggiornare l'elenco dei file disponibili.
Per rendere effettivo il file ~/.bashrc modificato, esegui una delle seguenti operazioni:disconnettiti e riconnettiti di nuovo oppure esegui . ~/.bashrc
.
Se sei in un terminale grafico, fai triplo clic sulla riga che inizia con sudo apt-get
per contrassegnarlo interamente e quindi fare clic con il pulsante centrale del mouse per incollarlo nel terminale. In alternativa, a giudicare dall'output, digitare qualcosa come
# $(program | tail -n 1)
per eseguire l'output di tail -n 1
comando dopo aver ricevuto l'output di program
. Questo probabilmente non è più breve. Tuttavia, questo dovrebbe teoricamente consentire la definizione di un alias come il seguente
# alias ii='$( $(history -p !!) | tail -n 1)'
che dovrebbe prendere l'ultimo comando nella cronologia, eseguirlo, ottenere la sua ultima riga ed eseguirlo di nuovo. Sfortunatamente, questo non funziona. Questo discute un problema simile ma non sono riuscito ad adattarlo a questo, bash di solito si lamenta di non aver trovato ""
.