Чому я не можу передати "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.