Links de salto
- O que é um pseudônimo?
- O que um pseudônimo com um caminho faz?
- E quanto a um pseudônimo sem caminho?
- E quanto à outra metade do pseudônimo?
- Então, o que devo usar?
Às vezes, você pode ver conselhos que sugerem o uso de caminhos completos em seus aliases. Pare um momento. Esse é realmente o comportamento que você deseja e como você pode decidir?
O que é um pseudônimo?
Um alias é uma maneira mais curta de digitar um comando. Quando você executa um alias, seu shell o substitui por texto predefinido que pode adicionar argumentos ou executar um comando completamente diferente.
Você pode criar um pseudônimo usando o comando alias como este:
alias word="command"
Depois de criar um pseudônimo, seu shell substituirá palavra (No início de um comando) com o conteúdo completo das cotações duplas. Então, por exemplo, se você correr:
alias ls="ls -GF"
Então, sempre que você digita “LS”, você obterá “LS -GF”.
Os aliases são realmente úteis porque podem economizar tempo e simplificar comandos mais longos. Eles também podem ajudá -lo a ajustar o comportamento dos programas, variando seus padrões.
Por exemplo, recentemente me deparei com uma dica no manual do FD sobre a passagem de bandeiras para o programa usando um alias:
alias fd="/usr/bin/fd --no-ignore-vcs"
Por padrão, o programa filtra arquivos que são ignorados pelos sistemas de controle de versão. O sinalizador “–não-IGNORE-VCS” reverte esse comportamento padrão; portanto, configurá-lo como um alias altera o padrão permanentemente.
O que me impressionou sobre isso foi o caminho completo no pseudônimo. Estou acostumado a aliases sem caminho, como o ls exemplo acima. Então, como incluir o caminho completo afeta as coisas?
O que um pseudônimo com um caminho faz?
Se o seu shell substituir “FD” por “/usr/bin/fd,” não deve haver um problema real. Executar um comando por meio de todo o seu caminho é perfeitamente aceitável; Se um executável não estiver no seu caminho, é a única maneira de executá -lo.
Os problemas podem surgir, no entanto, quando você ignora o sistema de caminho, usando caminhos absolutos para comandos. O que acontece se o FD se mover de/usr/bin para/usr/local/bin? Seu alias gerará um erro e não será executado.
Esse problema não é tão ruim: você pode identificar a causa e corrigi -lo. Mas e se você tiver várias versões do mesmo comando instalado em locais diferentes dentro do seu caminho? Esta não é uma situação incomum; por exemplo:
No meu sistema, o comando RI existe em dois locais:/opt/homebrew/bin e/usr/bin. Como esses caminhos estão listados nessa ordem no meu caminho, a versão homebrew é precedente. Mas um pseudônimo com um caminho absoluto pode causar problemas:
alias ri="/usr/bin/ri -f markdown"
O comando RI agora sempre executará a versão em /usr /bin, mesmo que uma versão seja posteriormente instalada no diretório homebrew ou em qualquer outro lugar. Com efeito, o uso de um caminho absoluto completo em seu alias quebra o sistema de caminho, que é um dos grandes pontos fortes do Linux.
E quanto a um pseudônimo sem caminho?
Em vez de um caminho completo, você pode – e deve – usar apenas o nome do comando. Por exemplo:
alias fd="fd --no-ignore-vcs"
alias ls="ls -GF"
alias ri="ri -f markdown"
Esses aliases respeitarão o sistema de caminho e executarão o comando mais apropriado, desde que você tenha seu caminho configurado corretamente. Além disso, você ainda será capaz de substituí -los facilmente. Para ignorar o alias e/ou usar uma versão específica de um comando, basta executá -lo através do caminho absoluto:
/usr/bin/ri
E quanto à outra metade do pseudônimo?
Se você experimentou um pouco de aliases e caminhos, deve ter notado que eles dependem de como você executa um comando. Os aliases são muito literais e se aplicam apenas quando corresponderem exatamente o que você digita, não apenas quando correspondem ao comando que você executa.
Por exemplo, no meu sistema, o comando LS vive em /bin /ls, e eu tenho um alias ls = ‘ls -gf’:
A execução de LS é executada esse alias, para que a saída seja colorida e os tipos de arquivos são indicados:
Nos bastidores, o executável /bin /ls ainda é executado; apenas recebe essas opções como argumentos. No entanto, correr /bin /ls diretamente não faz a mesma coisa:
Isso é simplesmente porque ls não é literalmente a mesma corda que /bin/lsmesmo que seja o mesmo arquivo. O que pode surpreendê -lo ainda mais é que é absolutamente bom especificar um caminho completo no lado esquerdo de um pseudônimo também:
alias /bin/ls="ls -GF"
No que diz respeito à concha, que “/bin/ls” não é realmente um caminho; É apenas uma string para combinar. Não há conexão entre ele e o arquivo real nesse caminho; Nem precisa haver A /BIN /LS para existir tal pseudônimo.
Claro, não há razão real para alias /bin /ls assim. Os aliases devem ser curtos e fáceis de digitar, e o sistema de caminho permite que você evite digitar o caminho completo de um comando em primeiro lugar. Você pode tentar cobrir todas as suas bases para garantir que o LS sempre funcione com certas opções, mas nunca atenderá a todas as possibilidades:
Então, o que devo usar?
Lembre -se de que os aliases são um pouco como macros: são um mecanismo simples de combinação e substituição. Embora você possa usá-los para fornecer opções padrão, lembre-se de que elas têm um escopo específico: para uso interativo da linha de comando.
Se você está escrevendo um script de shell, há muito a levar em consideração: aliases, funções de shell, Buildins e muito mais. Certifique -se de saber qual destes você pretende executar e qual será realmente executado.
O comando interrompido sempre executará um programa, ignorando quaisquer funções, construções ou aliases que possam existir. Da mesma forma, você pode ignorar os aliases citando seu comando de qualquer maneira válida:
pwd
"pwd"
'pwd'