Как я могу сохранить вывод последней выполненной команды из терминала?

Я бы выбрал сценарий Python. Следующий сценарий запрашивает сервер IMAP -, имя пользователя, пароль и строку темы. Затем он перечисляет все письма, тема которых содержит заданную строку темы.

Прокомментируйте строку imapserver.store (num, '+FLAGS', '\Deleted' ), если вас устраивает поведение. Показанные письма будут помечены для удаления.

#!/usr/bin/python3

import getpass

def del_imap(server, port, login, password, search):
    import imaplib, email

    # NOTE: According to RFC 1730 the SEARCH commands searches for 'messages that
    # CONTAIN the specified string. When multiple keys are specified, the result
    # is the intersection (AND function) of all the messages that match those
    # keys.
    # _search_command = '(FROM ' + search + ')'
    # _search_command = '(SUBJECT "testmail" FROM ' + search + ')'
    _search_command = '(SUBJECT ' + search + ')'

    imapserver = imaplib.IMAP4_SSL(server, port)
    imapserver.login(login, password)
    imapserver.select()

    typ, data = imapserver.search(None, _search_command)
    for num in data[0].split():
        typ, data = imapserver.fetch(num, '(RFC822.HEADER)')
        print (data[0][1].decode())
        # Uncomment the following line if the listed files should also be
        # flagged for deletion
        # imapserver.store(num, '+FLAGS', '\\Deleted')
    imapserver.close()
    imapserver.logout()

del_imap(input("IMAP Server: "), 993, input("Username: "), getpass.getpass(), input("Search: "))

Я также создал Github -Gist, где будут внесены дальнейшие улучшения:https://gist.github.com/jkirk/39dc64747a9d78accde49de2e8dbdc6d

0
12.04.2020, 19:44
2 ответа

Вы не можете, так как bash не распределяет вывод ни по какому параметру, ни по какому-либо блоку в своей памяти.

Тем не менее, вы можете использовать $(!!)- пересчитать(не повторно -использовать )вывод последней команды.

!!самостоятельно выполняет последнюю команду.

$ echo pierre
pierre
$ echo my name is $(!!)
echo my name is $(echo pierre)
my name is pierre

Источник:Повторное использование вывода последней команды в Bash

0
19.03.2021, 02:29

Хотя $(!!)или повторный запуск предыдущей команды может показаться (или иногда )решением, у него также есть свои недостатки, которые необходимо полностью понять при использовании этого метода.

Пример :Если команда сделала некоторые изменения, такие как

rm -rv /tmp/*

, тогда повторный запуск этой команды любым способом может не дать тот же результат, что и раньше, за исключением того, что если /tmp/ был пуст перед первым запуском и остается пустым во второй раз, вывод должен быть таким же.

Итог :Не существует безопасного способа повторного использования или сохранения (без копирования и вставки )вывода последней команды, если вы не сохранили его во время выполнения команды.

0
19.03.2021, 02:29

Теги

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