Команда sed
удаляет любой непечатаемый символ и табуляцию из содержимого каждой строки ввода. Количество строк не изменится (символы новой строки не удаляются, поскольку они не являются частью содержимого строки ), но может измениться количество символов или байтов. Проверьте еще раз с wc -c
для количества байтов, wc -m
для количества символов.
Регулярное выражение [^...]
соответствует любому одиночному символу (, фактически сопоставляющему элемент ), а не в [...]
. В данном случае это класс символов [:print:]
и символ табуляции. $
в начале строки заставляет bash
заменить \t
буквальным символом табуляции перед вызовом sed
.
Класс символов [:print:]
соответствует символам, которые могут быть напечатаны в текущей локали, то есть буквенно-цифровым символам, знакам препинания и пробелу (, но не табуляции, которая является управляющим символом ).
Другими словами, он удаляет все, что не является буквенно-цифровым символом, знаком пунктуации, пробелом или табуляцией.
Чтобы записать результат обратно в файл ("в -отредактировать место" ), некоторые sed
реализации имеют для этого опцию -i
; используйте sed -i
или sed -i ''
в зависимости от реализации. Убедитесь, что сначала создается правильный вывод, иначе вы можете уничтожить свои данные.
Хранение двоичных файлов в каталогах с соответствующими библиотеками является довольно распространенным явлением. Вариант использования — контроль версий. Скажем, когда у вас установлено несколько версий python (2.7, 2.7, 3... )и вам нужны все они, но вы хотите определить стандарт.
Обычно для этого используется пакет alternatives
и программные ссылки на двоичный файл, например, из./usr/bin
(с определениями в /etc/alternatives
).
Одним из основных преимуществ также может быть использование порядка слева направо в $PATH
. Например. когда вы переопределяете стандартные команды локальными версиями или сценариями, которые выполняют предварительные проверки (, скажем, сценарий, который помещает предупреждение перед shred
файлами ding ), можно было бы иметь их в каталоге, указанном в начале $PATH
, поэтому локальная (пользовательская )версия запускается, а стандартная только через полный путь.
Дополнительные сведения по вашему вопросу :Перемещение двоичных файлов не является хорошей идеей :они могут полагаться на другие файлы в своем каталоге. Мягкая ссылка их самое большее. Или просто воспользуйтесь alternatives
набором инструментов -, который также помогает сохранять больше обзора.
Это зависит от...
Если у вас есть сотни таких программ, то возможно.
В противном случае, поскольку /usr/local/bin/
находится в вашем $PATH, поместите свои программы в пользовательский каталог где-нибудь разумно и поместите соответствующие программные ссылки для каждой программы в /usr/local/bin/
. Это не идеально, но позволяет избежать искажения PATH.