Вы можете предварительно -заполнить стек каталогов в файле ~/.bashrc
, если хотите:
for dir in "$HOME/dir" /usr/src /usr/local/lib; do
pushd -n "$dir" >/dev/null
end
или, если вы хотите поместить каталоги в массив и использовать их оттуда:
dirstack=( "$HOME/dir"
/usr/src
/usr/local/lib )
for dir in "${dirstack[@]}"; do
pushd -n "$dir" >/dev/null
end
unset dirstack
С -n
pushd
фактически не изменит рабочий каталог, а просто добавит указанный каталог в стек.
При желании вы можете сохранить значение DIRSTACK
массива (имени переменной верхнего -регистра здесь ), который является текущим стеком каталогов, в файл из ~/.bash_logout
, а затем прочитать этот файл в ~/.bashrc
вместо использования предопределенного массива.
В~/.bash_logout
:
declare -p DIRSTACK >"$HOME/.dirstack"
В~/.bashrc
:
if [ -f "$HOME/.dirstack" ]; then
source "$HOME/.dirstack"
fi
Я не знаю, насколько хорошо это будет работать в ситуации, когда вы используете несколько терминалов. Файл .dirstack
перезаписывался бы каждый раз при выходе из терминала, если бы он запускал bash
в качестве оболочки входа в систему.
Con un formato de nombre de archivo como ese, puede eliminar la extensión y luego simplemente eliminar todo hasta el último punto.
Con ampliación de parámetros:
for f in./webserver.123.*; do
d=${f%.csv} # remove trailing.csv
d=${d##*.} # remove all up to (now) last.
echo "filename: $f date: $d"
done
o con sed:
for f in./webserver.123.*; do
d=$(echo "$f" | sed -e 's/\.csv$//' -e 's/.*\.//');
echo "filename: $f date: $d";
done