Quando digito cd ~foo
, gostaria que o bash me levasse a algum diretório foo
como um atalho para digitar o caminho completo do diretório foo
. e gostaria de poder cp ~foo/bar.txt ~/bar.txt
copiar um arquivo do /foo/
diretório para o diretório pessoal ... Então, basicamente, quero algo que funcione exatamente como o ~/
faz, mas onde especifique qual deve ser o diretório. [Tenho certeza que devo jfgi, mas não sei o que fazer]
28
Respostas:
O jeito que eu costumava fazer isso é criar um diretório que contenha links simbólicos para os diretórios que você deseja que os atalhos e adicionar esse diretório ao seu CDPATH. O CDPATH controla onde
cd
a pesquisa será realizada quando você alternar os diretórios; portanto, se esse diretório de links simbólicos estiver no seu CDPATH, você poderácd
acessar instantaneamente qualquer um dos diretórios com links simbólicos:A desvantagem, claro, é que não funcionará se houver um diretório em seu diretório atual chamado "b" - que tenha precedência sobre o CDPATH
Normalmente não gosto de respostas que digam "primeiro é necessário trocar de concha", mas esse recurso exato existe no ZSH , se você estiver disposto a usá-lo; é chamado de diretórios nomeados . Você exporta uma variável
foo
e, quando se refere a~foo
ela, resolve o valor de$foo
. Isso é especialmente conveniente porque funciona em comandos além decd
:fonte
Você pode escrever uma função de invólucro
cd
e chamá-la de "cd" (finalmente a função chamarábuiltin cd
- usando abuiltin
palavra - chave). Você pode usar um caractere de prefixo que o Bash não expandirá na linha de comando antes que sua função o veja e é improvável que apareça como o caractere inicial nos nomes dos diretórios, talvez ":". Você gostaria de torná-lo mais robusto, mas aqui está um esboço simples:fonte
com bash:
~foo
está reservado para o diretório inicial do usuário foo. Eu não recomendaria a criação de usuários apenas para essa conveniência.Você pode tornar sua vida mais fácil (ou mais difícil) ao alterar diretórios , configurando a
CDPATH
variável de ambiente (consulte-abash(1)
).Além disso, a única maneira de pensar seria definir variáveis de ambiente para os diretórios que você deseja abreviar.
fonte
As variáveis bash podem ser usadas para criar um sistema de favoritos. As variáveis funcionarão com qualquer comando e o bash completará o nome da variável na guia. Nas versões mais recentes do bash, se a / for anexado ao nome da variável, o caminho que a variável contém também pode ser preenchido com tabulação.
Para persistência, as declarações de variáveis podem ser mantidas em um arquivo originário de .bashrc. Como esse arquivo é um script bash, ele pode conter declarações que referenciam outras variáveis, como
aur="${HOME}/AUR"
ou que são executadas apenas em determinados hostsif [[ $HOSTNAME == foo ]]; then bar=baz; fi
, o que é útil se você reutilizar arquivos de configuração em vários hosts e usuários.A seguinte função bash (a ser adicionada ao .bashrc ou originada dele) permite que os indicadores sejam adicionados e removidos do arquivo de indicadores. É relativamente novo e não é garantido que esteja livre de erros.
fonte
Uma maneira seria criar um alias para cd, que substitui
~c
o caminho desejado. Ou apenas use zsh;)fonte
Para alterar diretórios, você pode usar o wcd: Wherever Change Directory
Com isso, será como
wcd plugin_root
.fonte
cd
assim ...Eu tenho a função abaixo, que irá criar alias em tempo real,
Quando quero marcar um diretório, apenas digito
s dirName
. Isso cria um apelido comoalias dirName="cd /my/current/directory/;pwd"
. para que eu possa voltar a esse diretório apenas digitandodirName
. Eu tenho uma versão que a salva em bash_aliases também. Isso funciona em qualquer shell.fonte