Por que não posso canalizar `pwd` para` abrir` no macOS?


12

Isso é específico do macOS, mas parece muito pouco para a comunidade Ask Different .

No Terminal, eu posso pwdcopiar o resultado, digite opene cole o resultado e a pasta será aberta no Finder, mas

pwd | open

imprime a documentação de ajuda para open. Por que a tubulação não funciona, mas a colagem?


isso só funcionará se aberto esperar que você digite o nome do diretório depois de pressionar enter.
Jasen

9
Além disso, este deve (não é usuário de Mac) trabalho: open .(para o diretório atual)
UniversallyUniqueID

@BharadwajRaju open .funciona e parece o mais fácil. ty.
Chuck

Respostas:


19

Como não tenho um Mac, não posso testá-lo, mas a solução deve ser algo como:

open "`pwd`"

Nem todos os programas obtêm sua contribuição da stdinqual seria necessário para o tubo funcionar.


1
As aspas duplas são desnecessárias.
23616 tbodt

3
@tbodt: Experimente /var/tbodt's files.
Julie Pelletier

Eu pensaria que o bash trataria isso como um argumento ... É por isso que não uso o bash.
tbodt

2
@ tbodt: Como um shell saberia se o espaço usado é para separar argumentos ou parte de um argumento?
Julie Pelletier

2
@jamesdlin: Vá reclamar do bashprojeto de desenvolvimento, mas não se esqueça de também bater todos os shells mais antigos e os shells mais recentes enquanto estiver nisso. Fim de transmissão!
Julie Pelletier

27

O openutilitário no Mac não lê da entrada padrão, mas recebe seus argumentos na linha de comando.

Para abrir o diretório de trabalho atual, você teria que dizer

$ open "$( pwd )"

ou

$ open "$PWD"

ou simplesmente

$ open .

como apontado nos comentários abaixo.

Com o -fsinalizador, você openpode ler a partir da entrada padrão, mas apenas para abrir o que receber no editor de texto padrão.


1
Se o shell for (t) csh, você preferiria open $cwd:q. E open (pwd)/ open $PWDse forfish
Stéphane Chazelas

1
@ StéphaneChazelas Acredito que o shell padrão em Darwin seja bash, mas é sempre bom ver soluções para outros shells também.
Kusalananda

Para completar, com rc, es, akangaconchas: open `pwdouopen `{pwd}
Stéphane Chazelas

5
Ou você pode usar a sintaxe open .para o diretório de trabalho atual ou o diretório pai open .. ou dois diretórios open ../..e assim por diante.
Fd0

@ StéphaneChazelas: Por que $cwd:qseria preferível "$cwd"em um shell relacionado ao csh?
G-Man diz 'Reinstate Monica'

9

As outras respostas estão totalmente corretas. Se você quiser uma abreviação fácil , faça como @ fd0 proposto e use

open .

para abrir o diretório atual. O diretório atual é nomeado .(um único ponto) no Unix, o diretório pai ..(dois pontos).


9
pwd | xargs open

xargs introduz sua entrada padrão nos argumentos de seu primeiro argumento.


2
Isso é apenas se o caminho do diretório de trabalho atual não contiver espaços em branco ou nova linha ou aspas simples ou aspas duplas ou barras invertidas.
Stéphane Chazelas

pwd | xargs -d '\n' open
belkka

0

Você pode usar um pipeline com -fpara abrir o conteúdo do comando anterior em um Editor de texto. Isso se aplica apenas a editores de texto. Para outros aplicativos, você precisará usar a sugestão nas outras perguntas.

Por exemplo:

ls | open -f

Isso abriria seu editor de texto padrão com o lsconteúdo de saída.

Você também pode especificar o editor de texto a ser usado usando -a:

ls | open -a 'Atom' -f

Isso abriria o Atom com o lsconteúdo de saída.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.