Это должно быть функцией оболочки, не сценарием, потому что сценарий выполняется в новой оболочке (и таким образом не может изменить каталог исходной оболочки).
function cdroot()
{
while [[ $PWD != '/' && ${PWD##*/} != 'httpdocs' ]]; do cd ..; done
}
Можно, конечно, назвать функцию вообще, Вам нравится.
Некоторое объяснение: первый тест ($PWD != '/'
) отказоустойчивое в случае, если Вы делаете cdroot
когда Вы не в httpdocs папке. Это остановится, когда Вы доберетесь до корня.
Второй тест (${PWD##*/} != 'httpdocs'
) немного более сложно. $PWD
переменная, содержащая путь текущего каталога. ${PWD##*/}
обрезки все до и включая последнюю наклонную черту.
Дурак действительно хорош в этом. Вы могли шаблон тега (shift-T) на общей подчиненной строке, затем префикс тега (;) удалить (d) сообщения соответствия.
Если Ваши письма находятся в Maildir (как, например, ~/Maildir/cur), можно просто использовать grep и комнату:
grep -l "Subject: My error log message" ~/Maildir/cur/* | xargs rm
если вместо этого они находятся в mbox, это, конечно, не работает.