Unix: вопрос о xargs

Вместо того, чтобы пытаться прервать все вызовы файловой системы, что относительно того, чтобы шифровать файловую систему, Ваши данные хранятся на? Затем все Ваши данные получают выгоду от того, чтобы быть надежно зашифрованным, включая то, что было удалено.

8
29.04.2015, 22:06
2 ответа

Команда xargs может выполнять только команды, а не псевдонимы. Однако параллельно GNU может выполнять функции:

The command must be an executable, a script, a composed
command, or a function. If it is a function you need to export
-f the function first. An alias will, however, not work (see
why http://www.perlmonks.org/index.pl?node_id=484296).

Так что я бы тоже порекомендовал:

  • Дать xargs полный путь к версии ls, которую вы хотите использовать (или однозначное имя, возможно gls, в зависимости от того, как она была установлена в вашей системе), или, если ваша оболочка позволяет это,

  • Определение ls как функции (функция ls { gls "$@"); }; export -f ls in bash) и использование GNU parallel вместо xargs (parallel -j1, если вы хотите использовать один процессор).

8
27.01.2020, 20:11

Подстановка псевдонима выполняется оболочкой. Если оболочка пытается вызвать команду foo , и существует псевдоним foo = bar , это оболочка заменяет foo на bar ] здесь.

Оболочка делает это только для команд. (В противном случае аргументы, которые совпадают с аргументами команды с псевдонимом, также будут заменены.) Но ваш ls здесь не запускается оболочкой, а является аргументом для xargs . Следовательно, оболочка его не заменяет.

Затем xargs выполняет ls , но не знает о псевдонимах, поэтому просто запускает первый найденный в пути.

Псевдонимы являются внутренними по отношению к оболочке, и у программы нет стандартизованного способа их считывания.

3
27.01.2020, 20:11

Теги

Похожие вопросы