alias vs. funzione negli script bash


11

Voglio sapere la differenza tra alias e funzioni nella shell bash - e quando usare quale.

Sembra ovvio che, poiché le funzioni possono accettare argomenti, sono molto più potenti - dato che lavoro principalmente in viaggio con un netbook e voglio risparmiare energia e potenza di elaborazione, in particolare vorrei sapere un po 'di più sulle differenze di prestazioni di questi due modi per estendere la funzionalità bash sono.


1
Non c'è bisogno di essere umiliante. Se la tua domanda non è voluta, verrà sottoposta a downgrade. E se qualcuno vuole che tu chiarisca la tua domanda, lo dirà in un commento. E vietare alle persone di modificare il tuo post è in qualche modo perdere il punto. Questo sito è progettato per rendere tutto modificabile per tutti.
k0pernikus,

Non stavo cercando di vietare, ma chiedo gentilmente di darmi la possibilità di chiarire se lo ritengono necessario. Ho avuto l'esperienza di porre domande molto semplici su argomenti di cui conosco poco, e poi la gente ha pensato che fosse del tutto ovvio che sto chiedendo qualcosa di più complesso e mi corregga su come non so come chiedere ciò che voglio . Naturalmente uno dei grandi vantaggi di questa piattaforma è il fatto che è modificabile dai colleghi, non stavo cercando di minarlo. Grazie per il tuo feedback, mi ha fatto pensare :)
MaxAxeHax,

Risposte:


10

Pensa agli alias come soprannomi. Potresti avere un comando che esegui molto ma che vuoi abbreviare.

Ad esempio, spesso vuoi andare direttamente al desktop dalla riga di comando, quindi puoi farlo

alias desktop="cd ~/Desktop"

Da quel momento in poi basta digitare

desktop

nel terminale e si esibirà cd ~/Desktopper te.

Le funzioni contengono logica. In una funzione, è possibile effettuare chiamate a diversi programmi diversi. Ecco una semplice funzione di eco

function e {
                echo $1 
                echo $1 $1
                echo $1 $1 $1                 
           }  

Mentre può apparire simile a un alias quando lo chiami

e Hello

La tua e () può succedere molte cose diverse. Quanto sopra è un esempio semplicistico.

Gli alias dovrebbero essere riservati per semplici casi d'uso. Esempio personale: ho sostituito il mio rmcomando in questo modo

alias rm='trash-put'

Ogni volta che faccio un rm, lo invierà nel cestino invece di eliminarlo dal disco. Questo si rivolge alla mia goffaggine nel terminale dove posso (a volte) cancellare accidentalmente un file importante.

Le funzioni , è necessario ricordare, sono elementi logici. Di solito non useresti una funzione standalone. Sarebbe parte di una sceneggiatura più ampia. Immagina uno script che prende tutti i tuoi file e li rinomina nelle loro versioni latine di maiale. Ignora che ci sono diversi modi per farlo.

Ma quello che potresti fare è scorrere tutti i file nella directory e passare il percorso del file alla tua funzione RenameAsPigLatin. La funzione RenameAsPigLatin potrebbe avere una logica aggiuntiva che coinvolge numeri, in cui decidi che i file che terminano con numeri non devono essere rinominati.

Immediatamente puoi vedere il vantaggio di averlo come una funzione. La funzione può concentrarsi sulla ridenominazione secondo le tue strane regole mentre il resto dello script può attraversare varie directory, se necessario.


2
A mio avviso, ci sono molti motivi per utilizzare le funzioni in modo autonomo. In effetti, ho un numero di funzioni definite insieme ai miei alias. Ad esempio, ho sostituito cd con una funzione con lo stesso nome in modo che possa farlo automaticamente dopo ogni cd senza sacrificare alcuna funzionalità. Questo non può essere fatto con un alias perché richiede un po 'di logica.
Scott Severance,

3

Un alias è un semplice collegamento utilizzato in una console per evitare di digitare comandi lunghi o ripetere sempre le stesse opzioni.

Un esempio classico sarebbe:

alias ll='ls -l'

Gli alias funzionano solo in una console interattiva, non sono pensati per essere utilizzati negli script.

Le funzioni possono essere utilizzate negli script o nella console, ma sono più spesso utilizzate negli script.

Contrariamente agli alias, che sono appena sostituiti dal loro valore, una funzione verrà interpretata dalla shell bash.

Le funzioni sono molto più potenti degli alias, possono essere utilizzate per creare programmi molto complessi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.