Ни один, использовать tail
или head
вместо этого:
$ time tail -n 4000001 foo | head -n 11
real 0m0.039s
user 0m0.032s
sys 0m0.004s
$ time head -n 4000010 foo | tail -n 11
real 0m0.055s
user 0m0.064s
sys 0m0.036s
tail
на самом деле последовательно быстрее. Я выполнил обе команды 100 раз и вычислил их среднее число:
real 0.03962
user 0.02956
sys 0.01456
real 0.06284
user 0.07356
sys 0.07244
Я воображаю tail
быстрее, потому что, хотя это должно искать полностью на строку 4e10, это ничего на самом деле не печатает, пока это не добирается там в то время как head
распечатает все до строки 4e10 + 10.
Сравните с некоторыми другими методами, отсортированными в порядке времени:
$ time sed -n 4000000,4000011p;q foo
real 0m0.312s
user 0m0.236s
sys 0m0.072s
$ time perl -ne 'next if $.<4000000; print; exit if $.>=4000010' foo
real 0m1.000s
user 0m0.936s
sys 0m0.064s
$ time awk '(NR>=4000000 && NR<=4000010){print} (NR==4000010){exit}' foo
real 0m0.955s
user 0m0.868s
sys 0m0.080s
В основном правило, меньше Вы анализируете, быстрее Вы. Обработка входа как поток данных, которые только должны быть распечатаны на экран (как tail
делает), всегда будет самый быстрый путь.
Поставил охрану вокруг моего кода манипуляции PATH в [114513].profile
# hwclock --systohc
, если ["$PATHS" != "true" ]; то экспорт PATHS="верно" #Манипулируйте и экспортируйте PATH сюда.
# hwclock --hctosys
Удалены защитные устройства файлового уровня вокруг [114517].bash_profile[114518] и [114519].bashrc
IMPORTANT[114522]: [114523]Перезапущен[114524] сервер [114525]tmux[114526]. ([114527]killall tmux[114528]). -- в руководстве указано, что сервер поддерживает собственное окружение, которое он наследует от родительской оболочки. Если конфигурационные файлы изменятся, то [114529]tmux[114530] нужно будет запускать заново.
Одной из возможностей получения повторяющихся записей переменных окружения является их рекурсивное определение. Рекурсивное определение имеет место, когда у вас есть в ~/.bashrc
нечто подобное:
export SOME_VARIABLE=$SOME_VARIABLE:/some/paths/
При запуске tmux
по умолчанию запускается оболочка входа в систему. Вы можете изменить это поведение, установив в ~/.tmux.conf
параметр
set-option -g default-command bash #or zsh, or whatever
как сказано в этом вопросе . В любом случае tmux
запускает оболочку, которая, в свою очередь, вызывает~/.bashrc
(либо как не -оболочку входа в систему, либо как оболочку входа через~/.profile
). Поскольку переменные окружения определяются рекурсивно в файле .bashrc
, повторный проход через ~/.bashrc
добавит /some/paths
к этим уже определенным путям. Так что они будут дублироваться.
Многие переменные среды пусты при запуске оболочки. Таким образом, определяя их как
export SOME_VARIABLE=:/some/paths/
не причинит вреда и не позволит tmux
создавать дубликаты. Если они начинаются с некоторых значений (, таких как PATH
), одним из решений может быть запись этих значений по умолчанию в определении переменной.