El manual en la página que vincula está desactualizado y es incorrecto. Uno en la página de línea donde este error ya ha sido corregido es:
-size n[cwbkMG]
File uses n units of space, rounding up. The following suffixes can be used:
`b' for 512-byte blocks (this is the default if no suffix is used)
`c' for bytes
`w' for two-byte words
`k' for Kibibytes (KiB, units of 1024 bytes)
`M' for Mebibytes (MiB, units of 1024 * 1024 = 1048576 bytes)
`G' for Gibibytes (GiB, units of 1024 * 1024 * 1024 = 1073741824 bytes)
El manual de búsqueda de BSD sigue siendo incorrecto.
El manual de fecha más actualizado -a -es el man find
en un sistema operativo actualizado.
Desde una versión de búsqueda de GNU (find (GNU findutils )4.7.0 -git )el manual va como:
-size n[cwbkMG]
File uses n units of space, rounding up. The following suffixes can be used:`b' for 512-byte blocks (this is the default if no suffix is used)
`c' for bytes
`w' for two-byte words
`k' for Kibibytes (KiB, units of 1024 bytes)
`M' for Mebibytes (MiB, units of 1024 * 1024 = 1048576 bytes)
`G' for Gibibytes (GiB, units of 1024 * 1024 * 1024 = 1073741824 bytes)
Entonces, el problema ya ha sido resuelto en algunas versiones de find.
Вы неправильно понимаете синтаксис. Во-первых, перенаправление ввода имеет символ <
перед файлом, а не позади него. Порядок действий не важен. Итак, синтаксис:
< inputfile command options > outputfile
или
command options < inputfile > outputfile
(или другие варианты).
Тогда у вас также есть лишние $
. Что вам действительно нужно сделать, так это
$program $options <$inputfile >$outputfile
. Вы можете заменить $ {program}
и $ {options}
на $ 1
и $ 2
.
В этой форме вы можете сделать
#!/bin/bash
<names.txt $1 $2 >test.out
и назвать это как ./ выполнить cat -n
или даже ./ выполнить cat '-n -s'
, если хотите более одного варианта. В этой форме у вас может быть несколько вариантов, но вы должны заключить их в кавычки (поскольку $ 2
) не цитируются, пробелы расширяют параметр обратно на несколько слов.
Другой (лучший) способ сделать это - просто использовать
#!/bin/bash
<names.txt "$@" >test.out
Теперь вы можете передать произвольное количество параметров в сценарий, и вы можете даже заключить строки в кавычки в аргументах, и они останутся вместе после распространения в сценарий. Теперь это работает: ./ выполнить cat -n - "bla bla.txt"
(предыдущая форма разделяла имя файла на две части).
Это одно из возможных решений:
объедините строку команды и параметров, чтобы нам не приходилось иметь дело с множеством круглых скобок.
command="$1 $2"
$command input_file > output_file
(Пожалуйста, дайте мне знать, если я что-то упускаю)