Как заставить 'меньше-FX' играть по правилам с приглашением оболочки с 2 строками

chmod может это сделать, вам не нужно искать.

Используйте символический режим и заглавный X.

chmod -R u=rwX,og=rX directory

поочередно, чтобы избежать повторения и облегчить редактирование. Мы можем сделать его ориентированным на действие, а не на роль.

chmod -R a=rX,u+w directory

Заглавная Х говорит кхмоду применить х к каталогам (а если он уже есть, например, go+X).

Выдержка вручную:

Формат символического режима - [ugoa...][[+-=][завивка...]...], где завивка - это либо ноль, либо больше букв из набора rwxXst, либо одна буква из набора ugo. Можно задать несколько символьных режимов, разделенных запятыми.

Комбинация букв ugoa управляет тем, какие пользователи будут иметь доступ к файлу: пользователь, которому он принадлежит (u), другие пользователи в группе файла (g), другие пользователи, не входящие в группу файла (o), или все пользователи (a). Если ни один из них не задан, то эффект будет такой, как если бы он был задан, но биты, заданные в маске umask, не будут затронуты.

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

Буквы rwxXst выбирают биты файлового режима для затронутых пользователей: чтение (r), запись (w), выполнение (или поиск каталогов) (x), выполнение/поиск только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя (X), установка идентификатора пользователя или группы на выполнение (s), флага ограниченного удаления или липкого бита (t). Вместо одной или нескольких этих букв можно указать точно одну из букв ugo: разрешения, выданные пользователю, которому принадлежит файл (u), разрешения, выданные другим пользователям, входящим в группу файла (g), и разрешения, выданные пользователям, которые не входят ни в одну из двух предыдущих категорий (o).

.
1
28.08.2014, 00:36
2 ответа

Верхняя строка с меньшим объемом вывода прокручивается вверх, потому что вы печатаете строку внизу, вызывая одну строку прокрутки. Это \ n в вашем приглашении.

Как этого избежать, сохранив при этом две строки?

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

Это покроет случай меньше путем записи поверх последней выходной строки, как вы предложили.
Но он также будет записывать поверх вывода других команд, многие из которых не имеют большего вывода, чем эта строка.

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

Это возможно, но потребуется много ручной настройки, чтобы работать достаточно гладко для повседневного использования ...

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

1
27.01.2020, 23:38

Я знаю, что это уже с опозданием на три года, но мой поиск в Google привел меня сюда, поэтому я решил поделиться.

Чтобы просмотреть файл:

(printf '\n'; cat file.txt) | less -FX

Чтобы просмотреть вывод другой команды (например, git log):

git log | (printf '\n'; cat) | less -FX

Вывод начинается с пустой строки. Затем, когда вы выходите меньше, эта пустая строка теряется, сохраняя первую строку файла.

Я использовал это для псевдонима git log.

1
27.01.2020, 23:38

Теги

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