Определение источника распространяемого сценария по умолчанию

ZSH позволяет связать функцию оболочки к клавише, а также есть встроенный для вкладывания текста в вашу командную строку. Таким образом, вы можете сделать что-то вроде этого (в ZSH):

# define a function that does the work
function my_browser_function () {
  local result
  result=$( some command that returns the filename )
  # print -z $result (see comments)
  LBUFFER+=$result
}
# turn the function into a widget
zle -N my_browser_function
# bind it to some key ("CTRL-X I" for example)
bindkey '\Cxi' my_browser_function

Теперь вам просто нужно получить команду, которая позволяет просматривать файловую систему в том, как вы хотите, и распечатывает результат на STDOUT.

Редактировать: Вот очень базовая версия вышеуказанной функции, которая использует VIM:

function my_browser_function () {
  local file=$(mktemp)
  vim -c "map <C-A> :cal system('echo '.expand('%').'/'.getline('.').'>$file')<bar>q<cr>" .
  LBUFFER+=$(<$file)
  rm $file
}

, вы можете навигаться в VIM / NETRW как обычно, а затем использовать (Ctrl-A) - A Concept файл / каталог имя.

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

0
11.07.2015, 11:17
1 ответ

Я считаю, что ваши ожидания можно рассматривать как две вещи.

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

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

поэтому для окон проблем единого входа развертываются домены . существуют реализации в unix-системах для взаимодействия с доменами Windows. одна реализация - самба. с установленной samba система Unix может присоединиться к домену Windows или настроить и стать контроллером домена Windows. существуют и другие решения для единого входа в UNIX. Я не знаком с этими технологиями, но я считаю, что этот ответ serverfault имеет хорошие объяснения, а также обсуждает роуминг домашних каталогов.

для роуминговых каталогов решение по роуминговым профилям Windows подробно описано в этой статье от samba , статья также содержит инструкции по настройке unix-машин для посещения или размещения роуминговых профилей Windows. существует обилие других unix-решений для роуминга каталогов. в основном мы можем просто перенять любую сетевую файловую систему, такую как nfs, windows cifs, 9p на plan9 или amazon s3, затем написать небольшую автоматизацию, чтобы монтировать (2) (8) произошло при входе в систему. может быть, некоторая блокировка благоприятна для предотвращения записи в один и тот же файл из нескольких мест. мы можем дополнительно придумать локальный кэш.


По моему собственному опыту я имею небольшую горстку машин и обычно не получаю к ним доступ через Интернет, поэтому я просто делаю одно и то же имя учетной записи и парольную фразу локально на каждой машине. и я использую sshfs (1) для перемещения каталогов и файлов по компьютерам.

-121--114388-

В Linux с оконным менеджером, который следует за Подсказками расширенного оконного менеджера (EWMH), можно сделать это, установив свойство выше .

Среды рабочего стола Linux Mint Cinnameon и Mate включают в себя элементы стека, обрабатывающие функциональные возможности EWMH. С помощью заголовка окна можно использовать следующую команду:

 wmctrl -r :SELECT: -b add,above

, а затем щелкнуть в окне, которое должно быть вверху. Вы также можете заменить : SELECT: подстрокой заголовка окна (это лучше будет уникальным, так как используется первое найденное совпадение).

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

enter image description here

-121--23274-

Если скрипт должен получить доступ к истории, вставьте псевдоним в файл .bashrc . У меня есть это для команды auto , которая имеет возможность повторить последнюю команду, ad infinitum, в зависимости от изменений в предоставленных аргументах командной строки.

Псевдоним:

auto = 'history | auto'

Предположение, что some_command_to_test зависит от input.py и output.py, я использую это для первого показа команда однажды, тогда неоднократно (изменяясь input.py и output.py в некотором другом окне:

$ some_command_to_test arg1 arg2 arg3
$ auto -l input.py output.py

В программе (в моем случае auto ) просто прочитайте через stdin, чтобы найти соответствующую информацию (я принимаю последнюю команду, которая не включает в себя auto , поэтому я могу остановить auto и перезапустить его без auto -ing auto сам).

Таким образом, нет необходимости повторно инициировать сценарий.

1
28.01.2020, 02:51

Теги

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