Como passo os argumentos da linha de comando para um alias? Aqui está uma amostra:
alias mkcd = 'mkdir $ 1; cd $ 1; '
Mas, neste caso, o $ xx está sendo traduzido no alias, criando tempo e não em tempo de execução. No entanto, criei uma solução alternativa usando uma função shell (depois de pesquisar um pouco) como abaixo:
função mkcd () { mkdir $ 1 cd $ 1 }
Só queria saber se existe uma maneira de criar aliases que aceitem parâmetros de CL.
BTW - Eu uso 'bash' como meu shell padrão.
mkdir mydirectoryname && cd $_
Respostas:
Você encontrou o caminho: crie uma função em vez de um alias. O shell C possui um mecanismo para gerar argumentos para aliases, mas o bash e o shell Korn não, porque o mecanismo de função é mais flexível e oferece o mesmo recurso.
fonte
.bashrc
arquivo. Por exemplo, # crie um alias que leva o número da porta pelo alias do usuário serve = "python -m SimpleHTTPServer $ 1" Depois de fazer a alteração no arquivo .bashrc, certifique-se de inserir o seguinte comando. ~ $ Source .bashrc Você deve ser capaz de usar este como assim ~ $ servir 8998Apenas para reiterar o que foi publicado para outros shells, no Bash os seguintes trabalhos:
Executando o seguinte:
Fornece a saída abaixo:
fonte
Bash
substituir$1
e$2
pelos parâmetros passados para a função. Aspas simples dizem ao Bash para não fazer isso.function blah(){ echo "First: $1"; echo "Second: $2"; }
Você não pode no ksh, mas no csh.
No ksh, a função é o caminho a percorrer. Mas se você realmente queria usar o alias:
fonte
csh
geralmente não é o que uma pessoa moderna deve querer usar. O alias-que-cria-uma-função-depois-executa-aquela-função é relativamente popular, mas não oferece nenhum benefício sobre uma função adequada, tanto quanto posso dizer. (A função deve citar corretamente seu argumento, de qualquer maneira.) Voto a favor.Para citar a página do manual bash:
Parece que você respondeu sua própria pergunta - use uma função em vez de um alias
fonte
Você também pode achar este comando útil:
mkdir dirname && cd $_
onde dirname é o nome do diretório que você deseja criar
fonte
$_
é a saída do último comando unix.stackexchange.com/a/271693/169772Eu descobri que funções não podem ser escritas em
~/.cshrc
arquivo. Aqui no alias que leva argumentospor exemplo, argumentos passados para o comando 'find'
onde abc é o argumento passado como!: 1
fonte
!:1
significava. Eu tive que rolar para baixo para ver aqui que era o argumento. Uma boa resposta não deixa mais perguntas, mesmo que não fosse do tipo de shell do OP.A maneira mais fácil é usar a função e não o alias. você ainda pode chamar uma função a qualquer momento a partir do CLI. No bash, você pode simplesmente adicionar o nome da função () {command}, que carrega o mesmo que um alias.
Não tenho certeza sobre outras conchas
fonte
Na verdade, você não pode fazer o que quiser com os aliases do Bash, pois os aliases são estáticos. Em vez disso, use a função que você criou.
Procure aqui mais informações: http://www.mactips.org/archives/2008/01/01/increase-productivity-with-bash-aliases-and-functions/ . (Sim, eu sei que é mactips.org, mas é sobre o Bash, então não se preocupe.)
fonte
Isso funciona no ksh:
A opção "-x" torna o alias "exportado" - o alias é visível nos subshells.
E esteja ciente do fato de que os aliases definidos em um script não são visíveis nesse script (porque os aliases são expandidos quando um script é carregado, não quando uma linha é interpretada). Isso pode ser resolvido com a execução de outro arquivo de script no mesmo shell (usando ponto).
fonte
Eu acho que você é capaz de fazê-lo com funções de shell se estiver usando o bash: http://www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/
fonte
função count () {python -c "para num in xrange ($ 1): print num";}
fonte
Um alias vazio executará seus argumentos:
fonte