GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso usare i comandi con alias con xargs?

Trasforma invece "gi" in uno script

ad esempio, in /home/$USER/bin/gi :

#!/bin/sh
exec /bin/grep -i "[email protected]"

non dimenticare di contrassegnare il file come eseguibile.


Il suggerimento qui è di evitare xargs e usare un ciclo "while read" invece di xargs:

find -name \*bar\* | while read file; do gi foo "$file"; done

Vedi la risposta accettata nel link sopra per i perfezionamenti per gestire gli spazi o le nuove righe nei nomi dei file.


Gli alias sono specifici della shell, in questo caso molto probabilmente specifici di bash. Per eseguire un alias, devi eseguire bash, ma gli alias vengono caricati solo per le shell interattive (più precisamente, .bashrc verrà letto solo per una shell interattiva).

bash -i esegue una shell interattiva (e sorgenti .bashrc).bash -c cmd esegue cmd .

Mettili insieme:bash -ic cmd esegue cmd in una shell interattiva, dove cmd può essere una funzione/alias bash definita nel tuo .bashrc .

find -name \*bar\* | xargs bash -ic gi foo

dovrebbe fare quello che vuoi.

Modifica:vedo che hai contrassegnato la domanda come "tcsh", quindi la soluzione specifica per bash non è applicabile. Con tcsh, non hai bisogno del -i , poiché sembra leggere .tcshrc a meno che tu non fornisca -f .

Prova questo:

find -name \*bar\* | xargs tcsh -c gi foo

Ha funzionato per i miei test di base.


Linux
  1. Come utilizzare le pagine man per imparare a usare i comandi?

  2. Come posso utilizzare SSH con un proxy SOCKS 5?

  3. Come posso utilizzare i comandi watch e jobs insieme in Bash?

  4. Come posso spostare i file con xargs su Linux?

  5. Come posso utilizzare i caratteri jolly in stile ms-dos con ls e mv?

Cos'è Git Bash; Lavorare con i comandi Git Bash

Come scrivere uno script Bash con esempi

Come utilizzare il comando di lettura Bash

Come utilizzare il comando xargs di Linux

Come utilizzare i comandi Netcat con gli esempi

Android - Come posso utilizzare i comandi della shell e interagire con il sistema Linux sottostante?