В Unix,Что это "-" для данной команды xargs команда
ls -t | tail -n +4 | xargs rm --
ls -t | tail -n +4 | xargs rm
какая разница, пожалуйста?
В Unix,Что это "-" для данной команды xargs команда
ls -t | tail -n +4 | xargs rm --
ls -t | tail -n +4 | xargs rm
какая разница, пожалуйста?
--
указывает, что все последующие параметры в командной строке рассматриваются как операнды а не параметры (даже если параметр начинается с -
или --
).
Таким образом, ls -t | tail -n +4 | xargs rm --
означает, что все параметры, предоставленные xargs
, равны rm
, будут обрабатываться как имена файлов (то есть операнды).
И в ls -t | tail -n +4 | xargs rm
случае, если происходит с именем файла в текущей директории, начиная с -
или --
, rm
будет пытаться интерпретировать его как вариант (и неожиданные результаты более чем вероятно).
Что это? «-» ибо в этой команде xargs команда
The --
средства «переключает конец здесь»
... и он не связан с 'xargs', он передается из' xargs' в 'rm' и' rm' (или лучше библиотека 'getopt', используемая для разбора аргументов) прекратит обработку опций (и игнорирует ее). Не все 'rm' могли бы это сделать, но это рекомендация posix. См., Например, документ здесь: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html – eckes
'-' означает конец флажков параметров. Я знаю только по моему вопросу: http://askubuntu.com/questions/419137/how-can-i-remove-a-file-that-looks-like-a-flag. Может быть, он используется в вашем пример – dan08
Разница станет наиболее очевидной в каталоге, содержащем файл с именем '-rf' и еще несколько каталогов. – Jens