Выполните две команды на том же аргументе

Это довольно безнадежно, но попытка PhotoRec и TestDisk. fsck не будет, скорее всего, работать: в лучшем случае это будет жаловаться, потому что это не находит ext4 файловую систему, в худшем случае это вызовет больше разрушения.

2
12.09.2013, 12:26
3 ответа

Можно использовать "$@" для передачи всех аргументов функции, как они к фактической команде:

$ verbose_ls() { echo "running ls with args '$@'"; \ls "$@"; }
$ alias ls=verbose_ls
$ ls -l -a /
running ls with args '-l -a /'
...

Отметьте обратную косую черту \ перед ls в функции. Это сохранит bash от расширения ls псевдоним, так как Вы хотите вызвать /bin/ls, не псевдоним Вы определили рекурсивно.

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

5
27.01.2020, 21:57

Это не может быть сделано с псевдонимом: http://mywiki.wooledge.org/BashFAQ/080

0
27.01.2020, 21:57

Можно использовать:

ls() {
     echo "printing ${1}"
     command ls "${1}"
}
0
27.01.2020, 21:57

Теги

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