Надеюсь, довольно просто, чтобы объяснить случай использования, когда я запускаю следующую команду (OS X 10.6):
$ pwd | pbcopy
монтажная доска содержит символ новой строки в конце. Я хотел бы избавиться от этого.
Надеюсь, довольно просто, чтобы объяснить случай использования, когда я запускаю следующую команду (OS X 10.6):
$ pwd | pbcopy
монтажная доска содержит символ новой строки в конце. Я хотел бы избавиться от этого.
pwd | tr -d '\n' | pbcopy
printf $(pwd) | pbcopy
или
echo -n $(pwd) | pbcopy
Обратите внимание, что это действительно должно быть указано в случае, если в имени каталога есть пробельные символы. Например:
echo -n "$(pwd)" | pbcopy
Я написал утилиту под названием noeol
для решения этой проблемы. Он выводит stdin на stdout, но при его отсутствии оставляет конечную новую строку. Например.
pwd | noeol | pbcopy
... Я сгладил copy
до noeol | pbcopy
.
Посмотрите здесь: https://github.com/Sidnicious/noeol
У меня были проблемы с tr -d '\n'
. На OSX я установил пакет coreutils через brew install coreutils
. Это обеспечивает все "нормальные" утилиты GNU с префиксом g перед их типичными именами. Так что head
будет ghead
например.
Используя это работало более безопасно IMO:
pwd | ghead -c -1 | pbcopy
Вы можете использовать od
чтобы увидеть, что происходит с выводом:
$ pwd | ghead -c -1 | /usr/bin/od -h
0000000 552f 6573 7372 732f 696d 676e 6c6f 6c65
0000020 696c
0000022
против
$ pwd | /usr/bin/od -h
0000000 552f 6573 7372 732f 696d 676e 6c6f 6c65
0000020 696c 000a
0000023
Различия?
00
и 0a
- это шестнадцатеричные коды для нуля и перевода строки. ghead -c -1
просто "выбивает" последний символ из вывода перед передачей его в | pbcopy
| pbcopy
.
$ man ascii | grep -E '\b00\b|\b0a\b'
00 nul 01 soh 02 stx 03 etx 04 eot 05 enq 06 ack 07 bel
08 bs 09 ht 0a nl 0b vt 0c np 0d cr 0e so 0f si