Сортировка удаленных (но все еще открытых) файлов по размеру

Предполагая, что PWD правильный, таким образом можно вернуться в ZShell.

% cd ~/tmp
% mkdir -p a/a/a/a/a/a/a/a/a/a/a
% cd !$
cd a/a/a/a/a/a/a/a/a/a/a
% rm -rf ~/tmp/a
% undir
% pwd
/Users/jmates/tmp
% 

Пользовательская функция undir выполняет цикл возврата-выхода-цепочки-пути:

function undir {
  local dir
  dir=$PWD:h

  while [[ $dir != / ]]; do
    builtin cd -q $dir 2>/dev/null
    if [[ $? -eq 0 ]]; then
      dir=/
    else
      dir=$dir:h
    fi
  done
}

Обратите внимание, что вы не можете полагаться на команду pwd , поскольку она дает результаты отличаются от поддерживаемой оболочкой переменной PWD :

% mkdir -p a/a/a/a/a/a/a/a/a/a
% cd !$
cd a/a/a/a/a/a/a/a/a/a
% rm -rf ~/tmp/a
% pwd
/Users/jmates/tmp/a/a/a/a/a/a/a/a/a/a
% cd ..
% pwd
.
% echo $PWD
/Users/jmates/tmp/a/a/a/a/a/a/a/a/a
% 

Оболочки, не являющиеся zsh , несомненно, потребуют других решений.

3
17.12.2017, 17:32
0 ответов

Теги

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