Искать файлы с помощью терминала и открывать их с помощью предпочтительной программы при нажатии?

Если вы хотите узнать подробности, то исходный код - это то, что вам нужно.

Как правило, процесс с привязкой к вычислениям будет использовать весь свой временной интервал чаще, чем процесс с привязкой к вводу-выводу. Считается, что процессы, которые недавно завершились без использования всего своего распределения, с большей вероятностью сделают то же самое в ближайшем будущем и могут быть запланированы соответствующим образом.

Важно помнить, что процессы могут изменять поведение по мере их выполнения; как долго разлагаться память прошлых временных интервалов - одна из важных настроек большинства планировщиков.

Настоящие планировщики должны учитывать больше, чем просто историческое использование квантов времени: «хорошее» значение и блокировки, которые блокируют другие процессы, - это всего лишь два примера другой информации, которая может быть использована.

1
12.05.2019, 09:30
1 ответ

Последние эмуляторы терминала поддерживают гиперссылки в ограниченной степени. При условии, что он «знает», какую программу использовать для открытия документа, вам просто нужно вывести имя файла на stdoutв окне терминала с правильным протоколом впереди. Поскольку мы имеем дело с локальными файлами, это означает изменение

/path/to/file/this.doc

-

file:///path/to/file/this.doc

То же, что и гиперссылка, но без доменного имени. Если ваша оболочка знает, как открыть тип файла, она это сделает.

for i in $(ls); do echo "file://$(pwd)/$i"; done

ctrl+click

РЕДАКТИРОВАТЬ

Внести отличное улучшение @tripleee из комментариев в ответы...

printf "file://$(pwd)/%s\n" *

КОНЕЦ РЕДАКТИРОВАНИЯ

Это не будет работать для файлов с пробелами в именах файлов. потому что расширение $(ls)создает список имен файлов, разделенных пробелами. Пробел внутри имени файла заставит оболочку думать, что на самом деле это два имени файла, разделенные пробелом.

my file.pdf

становится

my
file.pdf

Если в ваших именах файлов есть пробелы, попробуйте это, пока не найдете более элегантное решение, так как я только что взломал его в ожидании следующего вопроса...... ;-)

for f in $(find. -type f -maxdepth 1 -iname "*" | sed 's/ /%20/g'); do echo "file://$(pwd)/${f#*/}"; done

Просто используйте findобычным способом, чтобы вернуть нужные файлы.

1
27.01.2020, 23:42

Теги

Похожие вопросы