Как получить вход командной строки в файл журнала и выполнить его одновременно?

Благодаря справке на форуме Linux Mint было найдено осуществимое решение.

То решение состоит в том, чтобы установить Photoshop с помощью playonlinux. Я точно не знаю то, что playonlinux делает, чтобы заставить Вино работать лучше, но это, кажется, добивается цели.

Я удалил Photoshop сначала, установленный playonlinux в Синаптическом, и затем переустановленный Photoshop путем открытия playonlinx и выполнения шагов это обеспечило.

4
24.11.2014, 16:23
4 ответа

Если Вы определите функцию типа

loglast() {
    fc -ln -1 | sed 's/^[[:space:]]*//' >> "${1:-${logfile:-~/command.log}}"
}

, то после каждой команды, которую Вы хотите записать в журнал, Вы можете запустить loglast для записи в журнал предыдущей команды.

Файл журнала используется (по порядку): необязательный первый аргумент к loglast, или $logfile, если аргумент не указан, или $HOME/command.log в качестве последнего параметра по умолчанию.

sed -s '/^[[:пробел:]]*// удаляет лидирующие пробелы, которые fc добавляет.

4
27.01.2020, 20:47

Использование команда сценария :

script -f filename.log

Это запускает новую сессию и регистрирует все ваши команды. Когда вы выходите, файл закрывается.

1
27.01.2020, 20:47

Самый простой подход - использовать функциональность, уже предоставляемую bash. В частности, переменная HISTIGNORE:

   HISTCONTROL
          A  colon-separated  list  of values controlling how commands are
          saved on the history list.   If  the  list  of  values  includes
          ignorespace,  lines  which  begin with a space character are not
          saved in the history list. 

Таким образом, вы можете сделать что-нибудь простое, как

$ HISTCONTROL=ignorespace

Тогда любые команды, которые вы вводите с пробелом, будут игнорироваться:

HISTCONTROL=ignorespace
$ history -c            ## clear previous history for this session
$ echo foo
foo
$   echo bar
bar
$ history 
1  echo foo
2  history 

Как вы можете видеть выше, команда, которая начиналась с пробела, была проигнорирована.


Также можно использовать HISTIGNORE:

    HISTIGNORE
          A colon-separated list of patterns used to decide which  command
          lines  should  be  saved  on  the history list.  Each pattern is
          anchored at the beginning of the line and must  match  the  com‐
          plete  line  (no  implicit  `*'  is  appended).  Each pattern is
          tested against the line after the checks specified  by  HISTCON‐
          TROL  are  applied.   In  addition  to  the normal shell pattern
          matching characters, `&' matches the previous history line.  `&'
          may  be  escaped  using  a  backslash;  the backslash is removed
          before attempting a match.  The second and subsequent lines of a
          multi-line compound command are not tested, and are added to the
          history regardless of the value of HISTIGNORE.

Если вы установите HISTIGNORE на что-то вроде #foo и затем добавите это к командам, которые хотите проигнорировать, вы можете получить тот же эффект:

$ HISTIGNORE="*#foo"
$ history -c  
$ echo foo
foo
$ echo "bar" #foo
bar
$ history 
1  echo foo
2  history 

В обоих случаях, если вы хотите сохранить это в файл, просто запустите history > file. Или же, установите файл истории в file для сессии:

$ HISTFILE="/tmp/file"
$ HISTCONTROL=ignorespace
$ history -c
$ echo foo
foo
$   echo bar
bar
$ history -a   ## write the session's history to $HISTFILE
$ cat /tmp/file 
echo foo
history -a
7
27.01.2020, 20:47

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

script -a #Start your scripting session. 

Script started, file is typescript
echo "Hello"
Hello
echo "Another Hello"
Another Hello
#Press Ctrl - D to exit the scripting session. 

Script done, file is typescript

Теперь, что вы делали на вашем сеансе, вошли в систему TypeyScript .

cat typescript
Script started on Fri 21 Nov 2014 10:12:56 AM CST
echo "Hello"
Hello
echo "Another Hello"
Another Hello

Script done on Fri 21 Nov 2014 10:13:08 AM CST

Отредактируйте

Однако, поскольку вам нужно войти в систему только команды, а не вывод команд, которые вы могли бы сделать, как предложено здесь .

  1. Если у вас нет экрана , установите его с помощью APT-Get-Get install Ener .
  2. Теперь добавьте содержимое ниже в файл ~ / .Screenrc (даже если Файл не существует, вы можете создать его).

     Экран -t "окно 0" 0 bash -ic 'histfile = ~ / .bash_history. $ {Window} bash'
    Экран -t "Окно 1" 1 bash -ic 'histfile = ~ / .bash_history. $ {window} bash'
    Экран -t "Окно 2" bash -ic 'histfile = ~ / .bash_history. $ {window} bash'
    Bind C экран Bash -ic 'HistFile = ~ / .bash_history. $ {window} bash'
    Bind ^ c экран bash -ic 'histfile = ~ / .bash_history. $ {window} bash'
     
  3. Теперь запустите свой сеанс, набрав экран , и выполните свой Команды, как вы обычно бы.

  4. Теперь вы можете просмотреть список команд, которые вы использовали в экране , проверив файл ~ / .bash_history. $ {Window} Где $ {окно } соответствует номеру экрана, в котором вы выполнили ваши команды.
0
27.01.2020, 20:47

Теги

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