Терминал OSX: как открыть одну или несколько папок/файлов, пути к файлам которых являются выводом команды

РЕДАКТИРОВАТЬ: я нашел решение для этого, которое сработало. По-видимому, важно заключать пути к файлам в кавычки, чтобы убедиться, что они читаются целиком.

path_to_open=$(gfind ~/x/y/ | gshuf | ghead -n 1) && open "${path_to_open}"

Я написал команду, которую хочу использовать в терминале OSX. Он получает список путей к файлам и папкам в каталоге, перемешивает их, а затем получает путь, который находится в первой строке txt после перемешивания.

Это то, что у меня есть до сих пор: [1]

gfind ~/x/y/ | gshuf | ghead -n 1

С помощью gfind ~/x/y/ | gshuf | ghead -n 1 > ~/Desktop/z.txt я получаю путь к файлу в этом формате /Users/me/x/y/some folder/some file.txt Вместо того, чтобы записывать путь к этому файлу или папке в .txt, я хочу открыть его, как если бы я просто дважды щелкнул по нему в Finder. Как я могу это сделать? Я думал, что команда open[2] была правильной, основываясь на описании на странице руководства, но я не уверен, как именно ее использовать. Как мне его использовать? Или, если это неправильная команда, какую команду мне следует использовать?

[1]

Я использую gnu coreutils через macports, поэтому перед знакомыми именами команд стоит буква g.

[2]

open [-e] [-t] [-f] [-W] [-R] [-n] [-g] [-h] [-b <bundle identifier>] [-a <application>] [filenames] [--args arguments] Help: Open opens files from a shell. By default, opens each file using the default application for that file.
If the file is in the form of a URL, the file will be opened as a URL. Options: -a Opens with the specified application. -b Opens with the specified application bundle identifier. -e Opens with TextEdit. -t Opens with default text editor. -f Reads input from standard input and opens with TextEdit. -F --fresh Launches the app fresh, that is, without restoring windows. Saved persistent state is lost, excluding Untitled documents. -R, --reveal Selects in the Finder instead of opening. -W, --wait-apps Blocks until the used applications are closed (even if they were already running). --args All remaining arguments are passed in argv to the application's main() function instead of opened. -n, --new Open a new instance of the application even if one is already running. -j, --hide Launches the app hidden. -g, --background Does not bring the application to the foreground. -h, --header Searches header file locations for headers matching the given filenames, and opens them.


person Community    schedule 14.06.2013    source источник


Ответы (2)


Чтобы папка возвращалась в результатах, открытых в Finder, это должно работать:

open -a Finder `gfind ~/x/y/ | gshuf | ghead -n 1`
person dlaube    schedule 14.06.2013
comment
Хм. Это только открывает искатель в переднем/последнем активном окне, когда я пытаюсь это сделать. - person ; 15.06.2013
comment
Я думаю, проблема в том, что в большинстве файлов есть пробелы. Не могли бы вы показать мне, как передать результат цитируемой команды? - person ; 16.06.2013

Это работает для меня:

path_to_open=$(gfind ~/x/y/ | gshuf | ghead -n 1) && open "${path_to_open}"

person Community    schedule 15.06.2013