Можно попробовать сценарий оболочки (назовите его timer.sh
) как это:
. timer.val
case "$1" in
start)
echo $TIMERSTART
echo "TIMERSTART=`date +%s`" > timer.val
echo $TIMERSTART
;;
stop)
echo $TIMERSTART
TIMEREND=`date +%s`
echo $TIMEREND
let RESULT=$TIMEREND-$TIMERSTART
echo $RESULT
;;
*)
echo "no command"
esac
Если Вы хотите открыть целый файл (который требует), но покажите только часть его в окне редактора, используйте сужение. Выберите часть буфера, который Вы хотите продолжить работать и нажать C-x n n
(narrow-to-region
). Скажите “да”, если Вы получаете подсказку об отключенной команде.Пресса C-x n w
(widen
) видеть целый буфер снова. При сохранении буфера полный файл выбран: все данные все еще там, сужение только ограничивает то, что Вы видите.
Если Вы хотите просмотреть часть файла, можно вставить его в текущий буфер с shell-command
с аргументом префикса (M-1 M-!
); выполните соответствующую команду для извлечения желаемых строк, например. <huge.txt tail -n +57890001 | head -n 11
.
Существует также функция Lisp insert-file-contents
который может взять диапазон байта. Можно вызвать его с M-:
(eval-expression
):
(insert-file-contents "huge.txt" nil 456789000 456791000)
Обратите внимание, что можно столкнуться с целочисленным пределом размера (версия - и зависимый платформы, проверьте значение most-positive-fixnum
).
В теории было бы возможно записать режим Emacs, который загружает и сохраняет части файлов прозрачно по мере необходимости (хотя предел на целочисленные размеры сделал бы использующие фактические файловые смещения невозможными на 32-разрядных машинах). Единственным усилием в том направлении, о котором я знаю, является VLF (ссылка GitHub здесь).
Можно найти этот жемчуг и elisp комбинацию полезными. Это позволяет Вам передавать данные по каналу к буферу. Последующие вызовы с помощью того же буферного имени добавят новые строки к тому же буферу.
Можно "отредактировать" буфер, но редактирование никоим образом не отражается назад к источнику (который является каналом)... Это не показывает номеров строки, хотя можно настроить вход для включения пронумерованного префикса для каждой строки.
from=50000000
to=50000010
<file_50 head -n "$to" | tail -n +"$from" | e-sink.pl
В буфере:
<<<<< start: 2012-09-09T01:39:49
1000000
VSjU K97X5Z dFcc ZZd2OqQ PzbnphT
yQBTt LOic Ks sPXrq tty oy
dA8 SD BvO daZ KFPr44X
X0m3BI eR4go YjFp7e vbJr3oe Y0OGgH3 uPfz yfq59
we rm L9iD ugcJBND daS
7pO lwUFzNE HPlPW fmPZ vpRs Rx EFeHaFM
b0 1B ncr Db324 vwO Un34R
HDZS wq9zg W013 5JGly
kAfP QPpjjyh pXMAw I1 CGKDc23 qCBnP
<<<<< end: 0.630s
Или, с добавленными номерами строки:
from=50000000
to=50000010
<file_50 head -n "$to" | tail -n +"$from" | nl -v$from -ba -w${#to} | e-sink.pl
В буфере:
<<<<< start: 2012-09-09T01:53:44
50000000 1000000
50000001 VSjU K97X5Z dFcc ZZd2OqQ PzbnphT
50000002 yQBTt LOic Ks sPXrq tty oy
50000003 dA8 SD BvO daZ KFPr44X
50000004 X0m3BI eR4go YjFp7e vbJr3oe Y0OGgH3 uPfz yfq59
50000005 we rm L9iD ugcJBND daS
50000006
50000007 7pO lwUFzNE HPlPW fmPZ vpRs Rx EFeHaFM
50000008 b0 1B ncr Db324 vwO Un34R
50000009 HDZS wq9zg W013 5JGly
50000010 kAfP QPpjjyh pXMAw I1 CGKDc23 qCBnP
<<<<< end: 0.768s
Я нашел это на StackOverflow Q/A