Perché non posso reindirizzare `pwd` su` open` su macOS?


12

Questo è specifico per macOS, ma sembra troppo univoco per entrare nella community Ask Different .

In Terminale, posso pwdcopiare il risultato, digitare opene incollare il risultato e la cartella si aprirà nel Finder, ma

pwd | open

stampa la documentazione di aiuto per open. Perché le tubazioni non funzionano ma le incollature funzionano?


funzionerà solo se open si aspetta che tu digiti il ​​nome della directory dopo aver premuto Invio.
Jasen,

9
Inoltre, dovrebbe funzionare (non un utente mac): open .(per la directory corrente)
UniversallyUniqueID

@BharadwajRaju open .funziona e sembra il più semplice. ty.
Chuck,

Risposte:


20

Non ho un Mac quindi non posso provarlo, ma la soluzione dovrebbe essere qualcosa del tipo:

open "`pwd`"

Non tutti i programmi prendono il loro input da stdincui sarebbe necessario per il funzionamento della pipe.


1
Le doppie virgolette non sono necessarie.
martedì

4
@tbodt: provalo /var/tbodt's files.
Julie Pelletier,

2
@tbodt: Come farebbe una shell a sapere se lo spazio utilizzato è per separare gli argomenti o parte di un argomento?
Julie Pelletier,

2
@jamesdlin: vai a lamentarti del bashprogetto di sviluppo, ma non dimenticare di andare a colpire anche tutte le shell più vecchie e quelle più nuove mentre ci sei. Ancora e ancora!
Julie Pelletier,

1
@JuliePelletier Sto solo dicendo che affermi che è impossibile per qualsiasi conchiglia, ma conchiglie come i pesci si comportano esattamente come descritto da tbodt.
jamesdlin,

28

L' openutilità su macOS non legge dall'input standard, ma prende i suoi argomenti dalla riga di comando.

Per aprire la directory di lavoro corrente, dovresti dire

$ open "$( pwd )"

o

$ open "$PWD"

o semplicemente

$ open .

come sottolineato nei commenti qui sotto.

Con il -fflag, openpuò essere fatto leggere dall'input standard, ma solo per aprire tutto ciò che riceve nell'editor di testo predefinito.


1
Se la shell è (t) csh, ti consigliamo open $cwd:qinvece. E open (pwd)/ open $PWDse èfish
Stéphane Chazelas il

1
@ StéphaneChazelas Credo che la shell predefinita su Darwin sia bash, ma è sempre bello vedere anche soluzioni per altre shell.
Kusalananda

Per completezza, con rc, es, akangaconchiglie: open `pwdoopen `{pwd}
Stéphane Chazelas

5
Oppure puoi usare la sintassi open .per la directory di lavoro corrente o la directory padre open .. o fino a due directory open ../..e così via.
fd0

@ StéphaneChazelas: Perché sarebbe $cwd:qpreferibile "$cwd"in una shell correlata a csh?
G-Man dice "Ripristina Monica" il

9

Le altre risposte sono totalmente corrette. Se vuoi una scorciatoia facile , puoi fare come @ fd0 proposto e semplicemente usare

open .

per aprire la directory corrente. La directory corrente è denominata .(un singolo punto) in Unix, la directory principale ..(due punti).


9
pwd | xargs open

xargs inserisce il suo input standard negli argomenti del suo primo argomento.


2
Questo è solo se il percorso della directory di lavoro corrente non contiene spazi vuoti o newline o virgolette singole o doppie virgolette o barre rovesciate.
Stéphane Chazelas,

pwd | xargs -d '\n' open
Belkka,

0

È possibile utilizzare una pipeline con -fper aprire il contenuto del comando precedente in un editor di testo. Questo vale solo per gli editor di testo. Per altre app dovrai utilizzare il suggerimento nelle altre domande.

Per esempio:

ls | open -f

Questo aprirebbe l'editor di testo predefinito con il lscontenuto di output.

Puoi anche specificare l'editor di testo da usare usando -a:

ls | open -a 'Atom' -f

Questo aprirebbe Atom con il lscontenuto di output.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.