При использовании таких операторов перенаправления ввода-вывода оболочка сама открывает файл для ввода команды как стандартный ввод, но при передаче в качестве аргумента файл открывается -самой командой.
Итак, если у вас есть программа, скажем, awk
— и вы используете перенаправление <
для передачи имени файла, и вы пытаетесь напечатать FILENAME
, для какого файла она открыта, будет сообщено -
(, что означает, что ввод stdin ); см. следующий вывод:
awk '{ print FILENAME }' --infile
--infile
awk '{ print FILENAME }' <--infile
-
Еще одним преимуществом является то, что если имя файла начинается с дефиса, оболочка обработает его сама, но если вы передадите команду в качестве аргумента, скажем grep
, она будет жаловаться, потому что считает, что предоставлена недопустимая опция.
grep root --infile
grep: unrecognized option '--infile'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Стандартные, совместимые со стандартами -команды используют --
, чтобы избежать этой ошибки, сообщая команде, что это конец аргумента опции -. Вы также можете указать либо абсолютный путь к файлу, либо относительный путь с помощью ./--infle
, либо позволить оболочке открыть его для команды с помощью command <--infile
.
примечание :Использование <inputfile command
является тем же вариантом command <inputfile
.
Еще одним преимуществом является то, что если этот файл не существует или оболочка не может его открыть, то ваша команда не будет выполнена.
awk 'BEGIN{ print "ifrun" }' < non-existing_file
-bash: non-existing_file: No such file or directory
awk 'BEGIN{ print "ifrun" }' non-existing_file
ifrun
Tomado dehttp://www.openldap.org/lists/openldap-software/200504/msg00195.html
No está permitido cambiarlos ya que son internos.
Elimínelos de su LDIF o use el interruptor -c
(peligroso ).
slapadd -F /etc/ldap/slapd.d -n 1 -c -l ldap.domain.com.ldif
En cuanto a no escribirlos en primer lugar, canalice la salida a través de egrep para recortarlos:
slapcat -n 1 | egrep -v "^(structuralObjectClass|entryUUID|creatorsName|modifiersName|createTimestamp|modifyTimestamp|entryCSN):" > ${BACKUP_PATH}/ldap.domain.com.ldif
dehttp://vaab.blog.kal.fr/2010/03/10/import-export-ldap-database/
Considero que esto es un error en slapcat
, como mínimo, debería tener una opción para 'no' mostrar estas cosas.