Самый простой способ вывести символ новой строки из строки ввода в картон
Надеюсь, довольно просто, чтобы объяснить случай использования, когда я запускаю следующую команду (OS X 10.6):
$ pwd | pbcopy
монтажная доска содержит символ новой строки в конце. Я хотел бы избавиться от этого.
Ответ 1
pwd | tr -d '\n' | pbcopy
Ответ 2
printf $(pwd) | pbcopy
или
echo -n $(pwd) | pbcopy
Обратите внимание, что это действительно должно быть указано в случае, если в имени каталога есть пробельные символы. Например:
echo -n "$(pwd)" | pbcopy
Ответ 3
Я написал утилиту под названием noeol для решения этой проблемы. Он выводит stdin на stdout, но при его отсутствии оставляет конечную новую строку. Например.
У меня были проблемы с tr -d '\n'. На OSX я установил пакет coreutils через brew install coreutils. Это обеспечивает все "нормальные" утилиты GNU с префиксом g перед их типичными именами. Так что head будет ghead например.
Используя это работало более безопасно IMO:
pwd | ghead -c -1 | pbcopy
Вы можете использовать od чтобы увидеть, что происходит с выводом:
00 и 0a - это шестнадцатеричные коды для нуля и перевода строки. ghead -c -1 просто "выбивает" последний символ из вывода перед передачей его в | pbcopy| pbcopy.