Что касается значения каталога /bin
, процитируем источник страницы руководства intro(0) из моментального снимка Unix Research V3. доступен на github и в других местах:
Commands generally reside in directory /bin____ (for
bin___ary programs).
Этот же текст появляется в The Unix Programmer's Manual (неявно первое издание), в Introduction , от 1971 года.
Насколько Я могу сказать, что в ранней Unix не было пользовательских команд, представленных в виде сценариев, и только в V6 два сценария впервые появились в /usr/bin
, к тому времени соглашение о поиске /bin
] и /usr/bin
для команд были очень хорошо установлены, и поэтому это было бы естественным местом для их размещения — никогда не было необходимости отделять их от «двоичных файлов», и до сих пор нет .
push () { date "+%F/push/$1" >> /tmp/pushlog.txt; }
Это определяет функцию оболочки, которая добавляет строку в файл /tmp/pushlog.txt
.
Строка формата, используемая с date
, включает первый аргумент командной строки функции оболочки.
bash-4.4$ push 123
bash-4.4$ push "hello world"
bash-4.4$ push "%s"
bash-4.4$
bash-4.4$ cat /tmp/pushlog.txt
2017-08-29/push/123
2017-08-29/push/hello world
2017-08-29/push/1504041277
Если вы планируете использовать push
для передачи строк, которые могут быть интерпретированы date
(, как в последнем примере ), и если это не то, что вам нужно, используйте вместо этого:
push () { printf '%s/push/%s\n' "$(date '+%F')" "$1" >> /tmp/pushlog.txt; }
Причина, по которой вы получаете нежелательную новую строку в вашем файле, заключается в том, что date
выводит новую строку в конце своего вывода. Эта новая строка удаляется при использовании date
в $(...)
, как я сделал во второй реализации моей функции оболочки выше.