Как я могу сохранить control+d от разъединения моей сессии?

Вы записали (избыточные круглые скобки, добавленные для ясности):

find zUnorganized/ \( -not -iname "*.mp3" -and -not -iname "*.flac" -and -not -iname "*.MP3" -and -not -iname "*.wav" \) \
               -or \( -not -iname "*.m4a" -and -not -iname "*.jpg" \)

Любое использование -and -not повсюду, или использование or повсюду и конец с -print (значение: ничего не сделайте для этого, иначе сделайте ничто для этого, и т.д., иначе не печатает). Вы также захотите ограничить поиск регулярными файлами, иначе каталоги будут перечислены.

find zUnorganized/ -type f -not -iname "*.mp3" -and -not -iname "*.flac" -and -not -iname "*.MP3" -and -not -iname "*.wav" -and -not -iname "*.m4a" -and -not -iname "*.jpg"
find zUnorganized/ \! -type f -o \
                   -iname "*.mp3" -o -iname "*.flac" -o -iname "*.MP3" -o -iname "*.wav" -o -iname "*.m4a" -o -iname "*.jpg" -o \
                   -print
26
24.12.2011, 19:33
4 ответа

Вы ищете IGNOREEOF переменная среды, если Вы используете bash:

IGNOREEOF

Управляет действием интерактивной оболочки по получении символа EOF как единственный вход. Если установлено, значение является количеством последовательных символов EOF, которые должны быть введены как первые символы на входной строке перед выходами удара. Если переменная существует, но не имеет числового значения или не имеет никакого значения, значение по умолчанию равняется 10. Если это не существует, EOF показывает конец входа к оболочке.

Так export IGNOREEOF=42 и необходимо будет нажать Ctrl+D сорок два раза, прежде чем он на самом деле выйдет оболочки.

POSIX set имеет -o ignoreeof установка также. Поэтому консультируйтесь с документацией своей оболочки, чтобы видеть, имеет ли Ваша оболочка это (она должна), и проверять ее точную семантику.

32
27.01.2020, 19:40
  • 1
    Хороший, дает "Выход использования для отъезда оболочки" сообщением, по крайней мере, на Ubuntu. Будучи su'd в пользователя, Вы, вероятно, не хотите непреднамеренно оставлять его, особенно если родительский пользователь является корневым уровнем. –  Fiasco Labs 24.12.2011, 21:54
  • 2
    я лично нахожу это действительно раздражающим, таким образом, я не устанавливаю его нигде. Узнанный о них при попытке отключить то поведение :) –  Mat 24.12.2011, 21:59
  • 3
    я не могу сопротивляться быть педантом. IGNOREEOF количество раз, EOF проигнорирован прежде наконец принять его. Таким образом в Вашем примере выше, если Вы export IGNOREEOF=42, Вы должны будете к контролю-за-прессой-D 43 раза выйти - не 42. –  Alvin Thompson 07.02.2018, 17:05

Если Вам действительно не нравится иметь Ctrl-d, то Вы могли удалить eof символ в терминальных средствах управления.

stty eof undef

После этого Cntl-d будет любым другим управляющим символом.

0
27.01.2020, 19:40
  • 1
    я просто попробовал это в терминале (urxvt) с ударом, и в простой консоли, и он не работал. –  Mat 24.12.2011, 21:56
  • 2
    Хм..., которое раньше работало и в документах все еще говорится, что оно делает. Альтернатива должна была бы использовать <kbd> Ctrl-[</kvd>. –  Arcege 24.12.2011, 22:30
  • 3
    Это также заставило бы его больше не выйти из Python. –  psusi 27.12.2011, 18:04

tcsh set ignoreeof или set ignoreeof=<любое значение не 1> работает

2
27.01.2020, 19:40

Ошибка

У меня была аналогичная проблема: если я использовал Ctrl+D для отладки и случайно использовал его на один раз больше, чем предполагалось, закрывалась вся вкладка.


Предложение с использованием переменных среды

Временно (только для текущего сеанса):

export IGNOREEOF=20

или

set ignoreeof=20

После установки можно распечатать, чтобы проверить, установлено ли значение:

printenv

Вы также можете отключить его:

unset ignoreeof

Постоянно:

Откройте, отредактируйте и установите переменную окружения навсегда, например, с помощью возвышенного

subl ~/.bashrcили subl ~/.bash_profileи добавьте export IGNOREEOF=15в конце файла, чтобы установить переменные окружения на постоянной основе. Чтобы сделать это автоматически, вы можете попробовать это в своей консоли:

echo "export IGNOREEOF=20" >> ~/.bash_profile

Вы также можете проверить текущее значение, используя эхо, как это:

echo $IGNOREEOF

Если вы правильно установили значение, оно должно быть напечатано на вашем терминале. Если значение не установлено, будет просто напечатана пустая строка.

Подведение итогов

Попробуйте это:

export IGNOREEOF=20 && echo "export IGNOREEOF=20" >> ~/.bash_profile

Надеюсь, это поможет, хорошего дня!

-1
10.04.2020, 18:15

Теги

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