$ set globstar
$ cp /source/dir/**/* /destination/dir/
Первая строка включает рекурсивное **
globbing в Bash (не необходимый в Zsh).
Я не знаю ни о каком терминале, который делает, и я просто скажу, почему я не думаю, что любой терминал делает:
tab
один из многих символов, которые когда-то отобразили выводы больше чем один символ на экране или перемещают курсор. CR (перемещаются в начало строки), LF (вниз), возвращаются (слева) и все escape-последовательности, которые перемещают курсор или изменяют атрибуты символов и/или ничего не отображают...
urxvt даже не добирается точно что выводы приложения. Когда приложение отправит LF (\n) ведомой стороне псевдотерминала, Вы заметите, что большую часть времени это только спускает курсор, как LF обычно делает, это также кладет обратно его к запуску строки. Поэтому драйвер имущества переводит "\n" в "\r\n" прежде, чем сделать это доступным для чтения из основной стороны терминала urxvt (можно использовать stty для изменения того поведения).
Также обратите внимание, что выбор не получит конечные пробелы.
X выборов выбирают символы, которые отображены, не те, которые были отправлены приложением (приложениями) для генерации того дисплея (полагайте, что любой символ в любой данной позиции по экрану, возможно, несколько раз переопределялся одним или несколькими приложение (приложения)).
Некоторые терминалы, хотя позволяют получать все символы, которые они получают на основной стороне псевдотерминала, и если они не делают, можно использовать "сценарий" или "экранировать", чтобы сделать это вместо этого. Но получить вывод приложения в X выборов, можно также просто сделать:
the-command | xsel
Das Thema ist gelegentlich mit verschiedenen Terminalemulatoren aufgekommen. Die Diskussion in Debian #259828 xterm: Leerzeichen nach Tabulatoren, die als Leerzeichen in Auswahlen dargestellt werden (für xterm) hatte diesen Kommentar vom Entwickler von urxvt:
Ich dachte darüber nach, dies in rxvt-unicode zu implementieren: Tabs könnten dargestellt werden trivial in der Datenstruktur von rxvt-unicode. Es gibt jedoch semantische Probleme:
Tabs sind keine Zeichen, sondern Cursorbewegungen. Daher gibt es keinen guten Weg um sie als Tabulatorzeichen darzustellen, genau wie "Cursor nach oben" oder "Zu 5",6" будет не быть представленным в выделенном тексте.
и продолжил (по сути), что urxvt поддерживает эту функцию:
Если кого-то это волнует, вот как rxvt-unicode-3.8 реализует символы HT теперь, плюс некоторый первоначальный опыт по эффектам.
Когда rxvt-unicode-3.8 получает HT, он сначала вычисляет движение табуляции (что является относительным движением курсора). Iff все символы пропущены являются пробелами с теми же атрибутами, что и первый пробел, он заменит Эти пробелы (очень) широким символом табуляции (что легко сделать в способ, которым rxvt-unicode обрабатывает широкие символы, поэтому изменения кода были ограничены до менее 15 строк в рамках метода scr_tab). Если какой-либо из символов не являются пробелами, или, если есть изменения атрибутов (например, цвет), это будет только переместите курсор.
Конечно, urxvt 3.8 давно вернулся. Но рассмотрим проблемы application, которые мешать:
stty
настройку для этого),То, что ваше приложение отправляет вкладку на экран, не означает, что оно попадает в терминал. Он может быть переведен в пространства на более чем одном уровне и полностью оптимизирован, если промежуточный уровень решит, что экран все равно не изменится.
Быстрая проверка с urxvt 9.15 показывает мне, что функция по-прежнему работает (в простейшей конфигурации, конечно):
$ /tmp/foo
hello . world
00000000 68 65 6c 6c 6f 09 2e 09 77 6f 72 6c 64 0a |hello...world.|
0000000e
$ cat /tmp/foo
printf 'hello\t.\tworld\n' |xclip
hd
Если она не работает для вас, то ваш терминал может быть настроен на программные вкладки,или одна из других вышеупомянутых проблем стоит на вашем пути.