Почему кто-либо не установил бы 'histappend' в ударе?

Можно сделать это с sed и awk:

$ sed 's/[^"]//g' dat | awk '{ print length }'
2
0

Где dat Ваш текст в качестве примера, sed удаляет (для каждой строки) все не -" символы и awk печать для каждой строки его размер (т.е. length эквивалентно length($0), где $0 обозначает текущую строку).

Для другого символа просто необходимо изменить sed выражение. Например, для ( кому:

's/[^(]//g'

Обновление: sed вид излишества для задачи - tr достаточно. Эквивалентное решение с tr :

$ tr -d -c '"\n' < dat | awk '{ print length; }'

Значение этого tr удаляет все символы, которые не являются (-c дополнение средств) в наборе символов "\n.

37
13.04.2017, 15:36
2 ответа

Ну, когда histappend не установлен, это не означает, что история вытерта на каждом выходе оболочки. Без histappend колотите читает histfile на запуске в память - во время операции, новые записи добавляются - и на оболочке выходят, последние строки HISTSIZE записаны в файл истории без добавления, т.е. замены предыдущего содержания.

Например, если histfile содержит 400 записей, во время времени выполнения удара, 10 новых записей добавляются - histsize, установлен на 500, то новый histfile содержит 410 записей.

Это поведение только проблематично при использовании большего количества экземпляров удара параллельно. В этом случае файл истории только содержит содержание последней оболочки выхода.

Независимый от этого: существуют некоторые люди, которые хотят вытереть их историю на выходе оболочки из-за причин конфиденциальности.

36
27.01.2020, 19:36
  • 1
    Кроме того, из соображений безопасности это может быть хорошая идея не сохранить историю для пользователя root. Эта функция позволяет корню иметь историю оболочки без него когда-либо быть сохраненным на диск. –  Mei 04.02.2012, 02:50
  • 2
    +1 для "не означает, что история вытерта на каждом выходе оболочки". Это объяснено отлично в другом месте - но возможно не достаточно кратко для достижения некоторых читателей, особенно в контексте имени опции (хорошо, я, возможно, был одним из тех читателей некоторое время). @Mei, как делает любую перестановку histappend имейте любое отношение к ли rootистория достигает диска? Снова, это только влияет на то, что записано, не если. –  underscore_d 17.11.2015, 00:54
  • 3
    кто-либо выполняет меньше чем 2 экземпляра удара? histappend а также HISTCONTROL=ignoredups:erasedups:ignorespace походит на хорошее значение по умолчанию для большинства людей. –  dashesy 26.05.2016, 01:22

Для исторической совместимости я предполагаю. histappend опция не существовала до удара 2.0.

9
27.01.2020, 19:36
  • 1
    , Была история, перезаписанная каждый раз? –  tshepang 27.01.2011, 06:59
  • 2
    @Tshepang: Да, то же как теперь, если Вы не используете histappend. –  Gilles 'SO- stop being evil' 27.01.2011, 10:22
  • 3
    это должно быть значение по умолчанию теперь, но это не –  dashesy 26.05.2016, 01:23

Теги

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