Это сделает это (т.е. мой вывод соответствует Вашему), хотя это является не совсем самым чистым.
regexp's для добавления символов нижнего подчеркивания может, вероятно, быть объединен. Но для сортировки, необходимо продвинуть все выходные строки к списку и затем отсортировать ее (она могла также быть сделана на входящей стороне, но Вам все еще нужно все это в, каждый занимает первое место).
--- test.pl~ 2012-07-13 12:04:36.000000000 -0700
+++ test.pl 2012-07-13 12:17:58.000000000 -0700
@@ -1,4 +1,4 @@
-#usr/bin/perl
+#!/usr/bin/perl
use strict;
open(FH,"$ARGV[0]");
@@ -18,6 +18,7 @@
}
my $i;
+ my @output;
foreach $i (keys %all){
my @line=split "\n",$all{$i};
@@ -27,8 +28,15 @@
my $pos1=$num{$i}-$new_line[3];
my $pos2=$num{$i}-$new_line[4]; #print $num{$i}; exit;
$new_line[6] =~ s/\+/-/g;
- print "$new_line[0]\t$new_line[2]\t$pos1\t$pos2\t$new_line[5]\t$new_line[6]\t$new_line[7]\t$new_line[8]\n";
+ $new_line[0] =~ s/gi/gi_/;
+ $new_line[0] =~ s/gb/_gb_/;
+ $new_line[0] =~ s/_extraction_reversed//;
+ push @output, "$new_line[0]\t$new_line[2]\t$pos1\t$pos2\t$new_line[5]\t$new_line[6]\t$new_line[7]\t$new_line[8]\n";
}
}
+ @output = sort (@output);
+ foreach my $out (@output) {
+ print $out;
+ }
print "###\n";
Вы попробовали history -c && history -w
?
history -c
очистите кэш от функции истории и history -w
запишите команды в кэше функции истории (ничто) в .bash_history.
Другая опция ясна история удара /dev/null > ~/.bash_history
и ссылка ~/.bash_history
кому: /dev/null
: ln -sf /dev/null ~/.bash_history
если Вы не хотите сохранять команды текущей сессии оболочки, необходимо работать history -r
сбрасывать кэш истории к его начальному состоянию (перед стартовой сессией). Затем Вы выходите из системы, и команды в кэше истории (то же как перед стартовой сессией оболочки) будут записаны в .bash_history
Одна причина это могло произойти, состоит в том, что оболочки не выходят обычно, или Вы ищете обновления, когда оболочки все еще работают.
Для тестирования этого сценария попробовать history -a
после некоторой уникальной команды, как echo abacaba
на рабочей оболочке и затем запускают новую оболочку. Если новая оболочка получает обновления сначала, то запись и чтение файла истории работают. Однако, если бы это не работает, что-то еще неправильно, и я лично использовал бы strace
в попытке диагностировать.
Другая вещь проверить состоит в том, что ДОМАШНЯЯ переменная не изменилась и установлена на тот же путь, как начато passwd
файл для пользователя.
Используя strace для диагностирования
echo abacaba; echo $$
strace -o e -s 256 -p $PID
, где $PID
= $$
вывод от первой оболочкиhistory -a
history -a
; там должно быть открыто () и запись () вызовы. Неинтерактивные оболочки
Это нечетно, что неинтерактивные оболочки не получают историю оболочки, но это могло быть объяснено многими вещами. Больше диагностики поможет.
Strace может снова использоваться для помощи на том конце, если запуск неинтерактивных оболочек может быть изменен для вставки strace. Например, следующие шоу команда запуска оболочки, измененная для использования strace:
bash /home/jack/bin/jacks_script
strace -f -o /tmp/e -s 512 bash /home/jack/bin/jacks_script
Конечно, если больше чем одно из этих выполнений за один раз, /tmp/e
будет перезаписан.
Используя grep open /tmp/e
, полный путь в bash_history файл должен обнаружиться, если оболочка загружается он. Так, эта команда позволяет две проверки: (1) то, что файл истории открывается и читается и (2) то, что путь к файлу истории как ожидалось.
Без strace
Проверьте, что оболочка имеет history
набор опции (set -o history
для удара).
Одна вещь, которая неясна, состоит в том как раз в то самое время, когда HISTFILE
проверяется оболочкой. Например, если это установлено в .bash_profile
, Я не уверен, возьмет ли это влияние для чтения истории оболочки, потому что это после того, как оболочка запускается, но прежде чем первая командная строка будет дана пользователю.
strace -o /tmp/e -s 512 gnome-terminal
поможет.
– ash
02.09.2013, 03:36
Можно просто сбросить $HISTFILE
(который содержит путь к файлу истории), который не будет влиять на Вашу способность использовать историю на текущей сессии:
unset HISTFILE
Что я закончил, выполнение устанавливало HISTFILESIZE
к 0 в .bashrc
файл, как Drav Sloan сказал в комментариях.
[...]
HISTFILESIZE=0
[...]
history -c
очищает историю в текущем окне только? – Mussri 23.06.2017, 03:10