(Это - просто ответ на ответ @gilles, поскольку это является слишком большим для комментария),
Поскольку Gilles уже указал, что можно создать функцию, которые автоматически выполняют необходимую функцию. Но вместо того, чтобы использовать некоторое случайное имя Вы могли также просто переопределить cd
:
Для zsh:
cd() {
if (( ${#argv} == 1 )) && [[ -f ${1} ]]; then
builtin cd ${1:h}
else
builtin cd "$@"
fi
}
Для удара:
cd() {
if [ $# == 1 ] && [[ -f ${1} ]]; then
builtin cd "$(dirname ${1})"
else
builtin cd "$@"
fi
}
Это позволит Вам делать что-то как cd /path/to/file
и это автоматически изменится в каталог определенного файла. Конечно, можно использовать версию удара также с zsh.
Ksh имеет оператор для сравнения дат двух файлов (это также доступно в пепле, ударе и zsh, но это не находится в POSIX). Вы не должны звонить ls
или stat
или что-либо для чтения дат: позвольте оболочке сравнить их.
for f in *.xml; do
if [[ $f -nt default.txt ]]; then …
done