Linux rename
команда делает это легким:
rename $'\r' '' *
Это заменяет первый и единственный возврат каретки ($'\r'
) пустой строкой (''
) во всех именах файлов в текущем каталоге. Имена, которые не содержат возврат каретки, оставлены без изменений (или можно записать rename $'\r' '' *$'\r'
только рассматривать файлы, которые должны быть переименованы).
Если необходимо действовать на файлы в подкаталогах также:
shopt -s globstar
rename $'\r' '' **/*$'\r'
(Пользователи Debian, Ubuntu и производных: изменение rename
кому: rename.ul
, или изменение rename $'\r' ''
кому: rename 's/\r//'
.)
Альтернатива, с помощью zsh's zmv
функция:
zmv $'**/*\r' "${f%?}"
Нет ничего, встроил, точно, но существует два способа достигнуть scrollback текст.
Можно настроить XTerm.vt100.on4Clicks
и XTerm.vt100.on5Clicks
ресурсы (или от on1Clicks
вперед, в этом отношении), чтобы принять решение скопировать целый scrollback в ОСНОВНОЙ выбор X11. Например, для копирования целого scrollback при четырехкратном щелчке вставьте эту строку Ваш .Xresources
:
XTerm.vt100.on4Clicks: all
Необходимо будет затем расположить собственный метод для перевода в рабочее состояние некоторого способа искать контент X выборов, таких как открытие редактора или пейджера с привязкой менеджера окон.
Можно звонить print-everything
действие для отправки целого scrollback в программу, определенную XTerm.vt100.printerCommand
ресурс. Например, для открытия scrollback в меньше (работающий в новом xterm) при нажатии Ctrl + / вставьте эти строки Ваш .Xresources
:
XTerm.vt100.printerCommand: xterm -e sh -c 'less <&3' 3<&0
XTerm.vt100.translations: #override Ctrl ~Meta ~Shift <Key>slash: print-everything()
Я не видел способа искать в буфере scrollback XTERM для поиска вещей. Я думаю, что Ваш единственный выбор состоит в том, чтобы использовать что-то как tmux
или screen
.
Тривиально копировать и вставлять весь или столько прокручиваемого текста, сколько вам нужно.
Прокрутите назад к началу текста, который Вы хотите скопировать, щелкните левой кнопкой мыши в том месте, где Вы хотите начать копирование, прокрутите до конца того, что Вы хотите скопировать, щелкните правой кнопкой мыши, затем используйте среднюю кнопку мыши, чтобы вставить или используйте xclip (-selection primary -o), чтобы скормить его в stdout или перенаправить в файл.
.Xterm имеет функцию, которая решает эту проблему, называемую динамическим сокращением. Добавленная в патче #188 (2004), она является необязательной и может не компилироваться в вашу копию xterm. На странице руководства сказано:
dabbrev-expand()
Expands the word before cursor by searching in the preceding
text on the screen and in the scrollback buffer for words
starting with that abbreviation. Repeating dabbrev-expand()
several times in sequence searches for an alternative expansion
by looking farther back. Lack of more matches is signaled by a
beep(). Attempts to expand an empty word (i.e., when cursor is
preceded by a space) yield successively all previous words.
Consecutive identical expansions are ignored. The word here is
defined as a sequence of non-whitespace characters. This fea-
ture partially emulates the behavior of "dynamic abbreviation"
expansion in Emacs (bound there to M-/). Here is a resource
setting for xterm which will do the same thing:
*VT100*translations: #override \n\
Meta <KeyPress> /:dabbrev-expand()
onNClicks
является большим. – l0b0 16.01.2014, 15:03printerCommand
сохранить scrollback историю как HTML, таким образом, я не могу переопределить это. – l0b0 16.01.2014, 15:07printerCommand
, Вы могли определить его, чтобы действовать по-другому на основе модификаторов, например, связать обоихMeta+M
иShift+Meta+M
и заставьте свой сценарий обнаружить лиShift
нажимается (который должен быть в порядке, если Ваш компьютер не является медленным, и Вы выпускаетеShift
очень быстро). Я не могу думать об утилите оболочки, к которой, можно призватьXKbGetState
от маленького C или обертки Python. – Gilles 'SO- stop being evil' 16.01.2014, 15:23