Я отвечаю за csh:
Да, вы можете использовать параметры в псевдонимах и -в отличие от сказанного выше -вы можете ссылаться на них в любом месте определения псевдонима -не только в конце.
Пример для tar -gz -ing something:
$ alias tgz "tar cvf - \!:1 | gzip -9 > \!:2.tar.gz"
, где !:1
и !:2
— параметры, которые вы указываете при вызове своего псевдонима.
Пример использования:
$ ls
clrcf.dat user_comment_2016.06.03_12:51:50.txt user_comment_2016.06.03_12:54:48.txt
TEST-wADM.tec user_comment_2016.06.03_12:52:04.txt user_comment_2016.06.03_12:55:13.txt
$ tgz user* out
a user_comment_2016.06.03_12:51:50.txt 1K
a user_comment_2016.06.03_12:52:04.txt 1K
a user_comment_2016.06.03_12:54:48.txt 1K
a user_comment_2016.06.03_12:55:13.txt 1K
$ ls out*
out.tar.gz
Что фактически означает, что вы использовали два параметра, которые вы вставили в произвольные места команды tar, превратив все это в псевдонимtgz
Оболочка расширяет *.zip
до ab.zip a-b.zip
, поэтому команды становятся
zip -d ab.zip a-b.zip __MACOSX/\*
zip -d ab.zip a-b.zip "*/.DS_Store"
В аргументе после флага -d
должен быть только один целевой zip-файл. Другими аргументами являются удаляемые файлы/паттерны. Вот почему это работает только для ab.zip
.
Так что используйте цикл for:
for zipf in *.zip; do zip -d "$zipf" "__MACOSX/*" "*/.DS_Store"; done