Действительно ли установка параметра оболочки bash «checkhash» улучшает производительность команд bash?

Используйтеsed:

sed -z 's/^\s*//; s/\s*$//' infile
  • s/^\s*//, удаляет пробелы/пустые строки в самом начале infileв качестве входного файла.

  • s/\s*$//, удалены пробелы/пустые строки в самом конце infileв качестве входного файла, включая \nв самом конце infile.

Примерcat -e infile:

$
$
$
Three blank lines above$
$
$
Two blank lines in the middle$
a blank lines below$
$
a line with trailing whitespaces                $
          a line with leading whitespaces$
below are two empty lines + one whitespaces then an empty line again$
$
$
                                    $
$

Выход:

Three blank lines above


Two blank lines in the middle
a blank lines below

a line with trailing whitespaces
          a line with leading whitespaces
below are two empty lines + one whitespaces then an empty line again

Или вы можете использовать printfдля вывода результата sed, который удалил самые первые пробелы/пустые строки и использовал его в подстановке команд, которая удаляет пустые строки только в самом конце и \n.

printf '%s' "$(sed -z 's/^\s*//' infile)"
0
21.02.2020, 08:11
1 ответ

Я думаю, что этот параметр должен улучшить взаимодействие с пользователем, а не "производительность".

Это должно избавить вас от необходимости запускать hash -rвручную при перемещении или удалении исполняемого файла.

Сравните:

bash$ mkdir -p first second; PATH=$PATH:first:second
bash$ echo echo ok > first/ok; chmod 755 first/ok
bash$ ok
ok
bash$ mv first/ok second/ok
bash$ ok
bash: first/ok: No such file or directory
   # Yet it's in the PATH!
bash$ hash -r
bash$ ok
ok

против

bash$ shopt -s checkhash
bash$ mv second/ok first/ok
bash$ ok
ok
bash$ mv first/ok second/ok
bash$ ok
ok
bash$
2
28.04.2021, 23:22

Теги

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