Посмотрите:
$ echo -n foo > foo
$ cat foo
foo$
$ echo "" >> foo
$ cat foo
foo
так echo "" >> noeol-file
должен добиться цели. (Или Вы означали просить идентификацию этих файлов и фиксацию их?)
редактирование, удаленное ""
от echo "" >> foo
(см. комментарий @yuyichao), edit2 добавил ""
снова (но см. комментарий @Keith Thompson's),
У нас могло быть немного больше информации? "печать" является встроенной функцией оболочки для ksh, и это должно всегда быть там. Вот некоторая информация от моей собственной системы Redhat:
$ cat /etc/redhat\-release
Red Hat Enterprise Linux Workstation release 6.3 (Santiago)
$ /bin/ksh --version
version sh (AT&T Research) 93t+ 2010-06-21
$ whence -v print
print is a shell builtin
Вы могли бы также проверить, чтобы видеть, что у Вас нет псевдонимов, названных "печатью". У меня нет исполняемых файлов названными "печатью" в/usr/bin или / мусорным ведром, и т.д. Вы могли бы проверить, верно ли это также для Вас. Запустите новый экземпляр оболочки (введите "/bin/ksh"), и затем скажите
PATH= whence -v print
Нет такой версии ksh. Это - версия удара на RHEL 5.5, однако, таким образом, похоже на использование удара. Вы ищете ksh встроенное? Использовать echo
или printf
вместо этого. Или выполненный ksh (то, которое не могло бы быть установлено, удар, является фактической стандартной оболочкой на невстроенных установках Linux).
Вот руководство по переводу print
опции к совместимому POSIX printf
.
-e
: printf '%b\n'
-n
: опустить \n
от формата (printf %b
или printf %s
)-p
: если Вам нужно, совместно обрабатывает, Вам нужен ksh-r
или -R
: printf '%s\n'
-s
: перенаправьте к желаемому выходному файлу явно, с >>
для добавления-u
: используйте перенаправление, например. printf … >&3