Измените один файл вручную к правильному времени (использование touch ... TEMPLATE
).
Затем измените остальных путем ссылки на тот файл (использование touch -r TEMPLATE TARGET
).
Если Вы не хотите использовать prinf
у Вас есть несколько из опций, по крайней мере, согласно этому ТАК Вопросы и ответы, названные: эхо “-n” не распечатает-n?.
Это, кажется, Ваш наилучший вариант:
$ echo "x-n" | cut -c 2-
-n
Или некоторое изменение:
$ echo -- '-n'|cut -d" " -f2
-n
printf
не имеет этой проблемы:
$ printf "%s\n" -n
-n
Почему Вы хотели бы использовать echo
? Использовать printf
:
printf -- '-n\n'
Или:
printf '%s\n' -n
С echo
:
echo -n
Произведет -n<LF>
в совместимом UNIX echo
.
bash
, dash
, GNU или zsh
эхо (в их конфигурациях по умолчанию) может сделать это с:
echo -en '-n\n'
Или (в основанных на ASCII системах):
echo -e '\055n'
Zsh echo
может сделать это с:
echo - -n
bash
(но нет zsh
):
echo -n -; echo n
Интересно, невозможно произвести -n
с echo
один в POSIX путь (то есть, более или менее, портативно через Нельды и Unix - любит), начиная с поведения, если первый аргумент -n
или если какой-либо аргумент содержит символы обратной косой черты, является неуказанным.
echo
не является портативным. Не использовать echo
. Для совместимого Unix echo
echo '\055'
произвел бы 0x2d байт (-
в ASCII, но системах Unix не требуются, чтобы использовать ASCII в качестве их основных наборов символов, некоторые все еще используют EBCDIC). Но поведение для echo '\x2d'
является неуказанным. Так же printf '\055'
POSIX и портативный, printf '\x2d'
ни один. Огромное спасибо Stéphane Chazelas
– Stéphane Chazelas
02.05.2017, 17:54
По историческим причинам, echo
не делает обычного вида парсинга аргумента, где любой аргумент, который запускается с -
опция за исключением того, что --
сигнализирует о конце опции. echo
управляйте главным образом печатает ее неизменные аргументы, но в зависимости от варианта Unix, на оболочке и о том, как оболочка настроена, она может интерпретировать некоторые опции (-e
, -E
, -n
, -
) и может рассматривать backslash+character особенно.
Нет никакого портативного способа распечатать -n
с echo
один. Портативный способ распечатать строку, не имея необходимость волноваться о специальных символах
printf %s -n
или в более общем плане print %s "$somestring"
. Если Вы хотите распечатать заключительную новую строку после строки, сделайте это printf '%s\n' -n
.
Попробуйте это при необходимости в "-n" как в первых двух символы:
echo -e '\r-n'
Другой путь:
echo -n '-'; echo 'n'
-e
распечатает 4 байта: 0d 2d 6e 0a
(выписанный в шестнадцатеричном числе). Любая оболочка, которая не реализует -e
распечатает также 2d 65 20 5c 72 2d 6e 0a
или 2d 65 20 0d 2d 6e 0a
.
– Gilles 'SO- stop being evil'
08.08.2013, 02:45
echo
пишет в терминал, но это находится там в выводе echo
.
– Gilles 'SO- stop being evil'
08.08.2013, 02:46
echo -- '-n'
, который является-- -n
.cut
затем разделяет вывод на пробелах и берет 2-е поле, следовательно-n
. – slm♦ 07.08.2013, 19:06