it-swarm-eu.dev

Alias ​​avec variable in bash

Je veux créer un alias dans bash comme ceci:

alias tail_ls="ls -l $1 | tail"

Ainsi, si quelqu'un tape:

tail_ls /etc/ 

il ne montrera que les 10 derniers fichiers du répertoire.

Mais $1 ne semble pas fonctionner pour moi. Est-il possible d'introduire des variables dans bash?.

105
Deepank Gupta

Je créerais une fonction pour cela, plutôt qu'un alias, puis je l'exporterais comme ceci:

function tail_ls { ls -l "$1" | tail; }

export -f tail_ls

Remarque -f passer à export: il indique que vous exportez une fonction. Mettez ceci dans votre .bashrc et vous êtes prêt à partir.

164
Maxim Sloyko

La solution de @ maxim-sloyko n'a pas fonctionné, mais dans les cas suivants:

  1. Dans ~/.bashrc, ajoutez:

    sendpic () { scp "[email protected]" [email protected]:/www/misc/Pictures/; }
    
  2. Sauvegarder le fichier et recharger

    $ source ~/.bashrc
    
  3. Et exécuter:

    $ sendpic filename.jpg
    

source originale: http://www.linuxhowtos.org/Tips%20and%20Tricks/command_aliases.htm

29
jruzafa
alias tail_ls='_tail_ls() { ls -l "$1" | tail ;}; _tail_ls'
14
Javier López

Vous pouvez définir $1 avec set, utilisez ensuite votre alias comme prévu:

$ alias tail_ls='ls -l "$1" | tail'
$ set mydir
$ tail_ls
3
J. Chomel

tail_ls() { ls -l "$1" | tail; }

2
l0b0

Si vous utilisez la coquille de poisson (de http://fishshell.com ) au lieu de bash, ils écrivent des fonctions un peu différemment.

Vous voudrez ajouter quelque chose comme ceci à votre ~/.config/fish/config.fish _ qui est l’équivalent de votre ~/.bashrc

function tail_ls
  ls -l $1 | tail
end
1
innovati