Чому я не можу передати "pwd" на "відкриття" на macOS?


12

Це специфічно для macOS, але здається занадто однозначним, щоб перейти до спільноти Ask Different .

У Терміналі я можу pwdскопіювати результат і ввести openта вставити результат, і папка відкриється у Finder, але

pwd | open

друкує довідкову документацію для open. Чому трубопроводи не працюють, а вставляють?


це буде працювати лише в тому випадку, якщо відкритий очікує, що ви введете ім'я каталогу після натискання клавіші Enter.
Ясен

9
Крім того, це повинно працювати (не для користувачів Mac): open .(для поточного каталогу)
UniversallyUniqueID

@BharadwajRaju open .працює і здається найпростішим. ти.
Чак

Відповіді:


20

У мене немає Mac, тому я не можу його перевірити, але рішення повинно бути чимось на зразок:

open "`pwd`"

Не всі програми беруть свій внесок, stdinякий би необхідний для роботи труби.


1
Подвійні цитати не потрібні.
tbodt

4
@tbodt: Спробуйте /var/tbodt's files.
Джулі Пелтьє

2
@tbodt: Як будь-яка оболонка може знати, якщо простір використовується для розділення аргументів або частини аргументу?
Джулі Пелтьє

2
@jamesdlin: Ідіть, скаржаться на bashпроект розвитку, але не забудьте також зірвати всі старі снаряди та більшість новіших снарядів, поки ви на ньому. Знову і ззовні!
Джулі Пелтьє

1
@JuliePelletier Я просто кажу, що ви стверджуєте, що жодна оболонка неможлива, але раковини, такі як риба, ведуть себе так, як описує tbodt.
jamesdlin

28

openУтиліта на MacOS не читає зі стандартного вводу, але беруть свої аргументи з командного рядка.

Щоб відкрити поточний робочий каталог, вам доведеться сказати

$ open "$( pwd )"

або

$ open "$PWD"

або просто

$ open .

як зазначено в коментарях нижче.

За допомогою -fпрапора openможна читати зі стандартного вводу, але лише для відкриття того, що він отримує в текстовому редакторі за замовчуванням.


1
Якщо оболонка (t) csh, ви хочете open $cwd:qзамість цього. І open (pwd)/ open $PWDякщо цеfish
Стефан Шазелас

1
@ StéphaneChazelas Я вважаю, що оболонка у Дарвіна за замовчуванням є bash, але завжди добре бачити рішення і для інших оболонок.
Kusalananda

Для повноти картини , з rc, es, akangaоболонок: open `pwdабоopen `{pwd}
Stéphane Chazelas

5
Або ви можете використовувати синтаксис - open .для поточного робочого каталогу або батьківського каталогу open .. або до двох каталогів open ../..тощо.
fd0

@ StéphaneChazelas: Чому $cwd:qкраще віддати перевагу "$cwd"в оболонці, що стосується csh?
G-Man каже: "Відновіть Моніку"

9

Інші відповіді абсолютно правильні. Якщо ви хочете просту стенограму , можете зробити так, як запропонував @ fd0 , і просто скористатися

open .

щоб відкрити поточний каталог. Поточний каталог названий .(одна точка) в Unix, батьківський каталог ..(дві крапки).


9
pwd | xargs open

xargs вводить свій стандартний вклад у аргументи свого першого аргументу.


2
Це лише в тому випадку, якщо поточний шлях до робочого каталогу не містить пробілів, нових рядків або одиничних лапок або подвійних лапок чи зворотних косих ринків.
Стефан Шазелас

pwd | xargs -d '\n' open
belkka

0

Ви можете використовувати конвеєр, -fщоб відкрити вміст попередньої команди в текстовому редакторі. Це стосується лише текстових редакторів. Для інших додатків вам потрібно буде скористатись пропозицією в інших питаннях.

Наприклад:

ls | open -f

Це відкриє ваш текстовий редактор за замовчуванням з lsвихідним вмістом.

Ви також можете вказати текстовий редактор для використання, використовуючи -a:

ls | open -a 'Atom' -f

Це відкрило б Atom із lsвихідним вмістом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.