Por alias, quero dizer o atalho da pasta criado quando você clica com o botão direito do mouse em uma pasta no Finder e seleciona "Criar alias". Eu posso atravessar links simbólicos no Terminal com cd, mas não funciona em aliases: bash: cd: example-alias: Not a directory. É possível alterar o diretório para o destino de um alias no Terminal?
Para ativar o cd'ing em um alias de pasta, encontrei o seguinte no Mac OS X Hints .
Compile o código-fonte abaixo com o seguinte comando:
Isso criará o executável 'getTrueName' no mesmo diretório que a origem. Você pode adicioná-lo ao seu PATH ou simplesmente copiá-lo diretamente para / usr / bin ou / usr / local / bin, para facilitar o acesso.
Código-fonte C para getTrueName (copie o texto e salve o arquivo como getTrueName.c no diretório inicial):
Inclua o seguinte em ~ / .bash_profile ou crie um novo arquivo ~ / .bash_profile com o seguinte conteúdo:
Você provavelmente precisará reiniciar o Terminal para carregar o .bash_profile modificado.
Testado no Yosemite 10.10.2 e gcc 4.2 (Xcode 6.2) e funciona.
Uma abordagem semelhante está disponível em superuser.com
Não testei a resposta do @klanomath, mas costumava haver uma biblioteca Python para obter o alvo de um alias, mas o suporte ao Carbon foi removido das estruturas da Apple. Isso pode ser feito no Objetivo C, consulte https://stackoverflow.com/a/21151368/838253 .
A melhor aposta é usar links simbólicos, mas infelizmente o Finder não permite que você os crie.
Eu escrevi um serviço OS X que cria links simbólicos (suportados pelo Finder e pelo Terminal). Isso executa o seguinte script bash em um fluxo de trabalho do Finder. (Infelizmente, não parece possível postar o código do Automator em um formato legível).
Em uma frase, você diz "A melhor aposta é usar links simbólicos, mas infelizmente o Finder não suporta isso". e depois diga "... que cria links simbólicos (que são suportados pelo Finder e pelo Terminal)" e estes parecem contradizer um ao outro, então considere reformulá-lo, pois "O Finder não suporta isso" é ambicioso. Além disso, as variáveis curFoldere linkFilenão são utilizadas. Por que elas estão lá? Deve haver espaços em torno do operador de comparação, por exemplo, $fileExists == ""e considere o uso em $(..)vez de backticks herdados.
@ user3439894 texto alterado. Você está correto sobre o código. Escrevi isso em 2011, logo após ter adquirido um Mac, que funcionou desde então e não o olho desde então. As variáveis ​​não utilizadas provavelmente são deixadas de lado nos testes.
adicione e carregue esta função no seu .profile.
Eu usei a builtin cd linha mostrada na resposta @klanomath, que permite substituir o comando cd. Então agora podemos usar:
A função deve retornar e cd para o caminho original do alias original ou o caminho normal.
Embora um link simbólico (alias do UNIX) tenha a mesma aparência de um alias do Finder no Finder, eles são dois tipos diferentes de alias.
Um link simbólico manterá apenas o caminho que leva e será interrompido permanente ou temporariamente se o recurso for movido ou em uma unidade ou compartilhamento desconectado, respectivamente.
Um alias do Finder é tecnicamente um arquivo comum com instruções para o Finder. O Finder pode usar essas informações para localizar um arquivo / diretório de destino movido até um certo ponto. Se um recurso de destino de um alias estiver em um ponto de compartilhamento de rede montado, ele também reterá informações sobre qual item de Chaveiro usar para fazer logon no ponto de compartilhamento e abri-lo.
Portanto, a menos que você escreva um script ou programa para ler o arquivo de alias do Finder, ele não será usado como diretório, mas como arquivo no Terminal.
Como alternativa, você pode remover o alias atual do Finder e criar um link simbólico em seu lugar. O comando seria ln -s /path/to/originalcriar um link simbólico no diretório atual. O caminho pode ser um caminho completo ou relativo.
O AppleScript de @ markhunte funcionou, mas havia uma mensagem de aviso: osascript[9807:7154723] CFURLGetFSRef was passed an URL which has no scheme (the URL will not work with other CFURL routines)
Com a ajuda desta dica , modifiquei o applecript de @ markunte para remover a mensagem de aviso acima
O AppleScript de @ markhunte é um pouco lento porque sempre invoca o AppleScript. Então, seguindo a dica de @ klanomath, que está listada acima, modifiquei o script para invocar o AppleScript apenas quando o objeto de destino é alias.
Como a maioria dos sistemas operacionais (além do Windows), o OS X suporta scripts Bash. Primeiro, crie o arquivo na sua área de trabalho (ou em qualquer local que você queira):
toque em ~ / Desktop / PlexConnect.sh Em seguida, defina as permissões do arquivo para que ele seja executável:
chmod + x ~ / Desktop / PlexConnect.sh Você pode editar o conteúdo do script com o editor de texto de sua escolha, apenas verifique se ele começa com a seguinte linha para que o sistema saiba executá-lo usando o shell (Bash):
O arquivo pode ser clicado duas vezes, iniciando o Terminal e executando-o.
Uma solução mais elegante para isso, no entanto, pode ser criar um aplicativo AppleScript que execute o comando para você. Abra o aplicativo "Script Editor" e cole o seguinte:
faça o shell script "/Applications/PlexConnect-master/PlexConnect.py" com privilégios de administrador Salve isso como um "Aplicativo", nomeando-o como desejar. Ao abri-lo, ele fornecerá o prompt de senha padrão do OS X, executará o script e depois se fechará.
Como isso responde à pergunta feita no topo? Ao esclarecer, você também pode corrigir a formatação de sua postagem?
O que isso tem a ver com aliases, conforme solicitado na pergunta Também formate sua resposta conforme descrito na Central de Ajuda apple.stackexchange.com/help/formatting