Come utilizzare gli argomenti insieme agli alias di bash

3

Oggi ho imparato il trucco molto pratico:

man [some command] -t | open -f -a Preview

Mi piacerebbe creare un alias nel mio file .bash_profile come scorciatoia. Affinché questo funzioni, ho bisogno di passare un argomento nel comando alias. Un pochino in giro e mi sono inventato questo:

alias manp="man $1 -t | open -f -a Preview"

Funziona quasi, ma se scrivo, diciamo "manp ls", sembra che mi stia aspettando che la manpage ls sia nella mia attuale directory.

    
posta Adam Rice 05.11.2011 - 23:49
fonte

2 risposte

11

Non puoi passare argomenti ad alias. Gli alias sono solo sostituzioni testuali senza ulteriore logica.

Ma puoi usare le funzioni della shell per ottenere lo stesso risultato:

function pman() {
    if [ -x /usr/bin/open ]; then
        man -t "$1" | open -f -a Preview
    else
        man "$1"
    fi
}

La parte if-then-else serve solo per assicurarsi che funzioni anche su sistemi non OSX.

Per definire una funzione, includi semplicemente la definizione dall'alto in ~/.bash_profile . L'utilizzo è identico agli alias o a qualsiasi altro comando: pman ls .

Come @stuffe ha sottolineato in un commento mantenendo alias / funzioni in un file separato ha i suoi vantaggi (specialmente ti permette di rileggere i tuoi alias / funzioni nella shell corrente senza eseguire alcuna roba di impostazione da .bashrc o% codice%). Per fare ciò, crea un file separato chiamato .bash_profile , .alias o simile e aggiungi

test -e ~/.alias && . ~/.alias

a .functions o .bashrc .

    
risposta data 06.11.2011 - 11:07
fonte
0

Mi piace la soluzione di @ patrix, ma volevo solo dare un altro esempio, tagliare dal file .bash_profile del mio OSX, che in questo caso sta impostando TextWrangler per aprire un file che ho passato come parametro:

function tw() { /usr/bin/open -a /Applications/TextWrangler.app "$1" ;}

Volevo essere in grado di modificare più facilmente il mio .bash_profile : -)

    
risposta data 03.07.2014 - 10:55
fonte

Leggi altre domande sui tag