Como posso gerar automaticamente um nome de arquivo para gnome-screenshot?

1

Eu gostaria de usar o seguinte comando:

$ gnome-screenshot -caf=<file name>

Como posso passar algo gerado automaticamente como Screenshot from 2017-12-07 20-22-56.png para <file name> ?

    
por orschiro 07.12.2017 / 20:23

1 resposta

1

Você pode usar o comando date para a tarefa de incluir a data e a hora reais no nome do arquivo. Vamos ver o que podemos encontrar na página date man :

  

OPERANDES

   The following operands shall be supported:

   +format   When the format is specified, each conversion specifier shall
             be replaced in  the  standard  output  by  its  corresponding
             value.  All  other  characters  shall be copied to the output
             without change. The output shall always be terminated with  a
             <newline>.
     

Especificações de conversão                    % o nome abreviado do dia da semana de um local.

             %A      Locale's full weekday name.

             %b      Locale's abbreviated month name.

             %B      Locale's full month name.

             %c      Locale's appropriate date and time representation.

             %C      Century  (a  year  divided by 100 and truncated to an
                     integer) as a decimal number [00,99].

             %d      Day of the month as a decimal number [01,31].

             %D      Date in the format mm/dd/yy.

             %e      Day of the month as a decimal number [1,31] in a two-
                     digit field with leading <space> character fill.

             %h      A synonym for %b.

             %H      Hour (24-hour clock) as a decimal number [00,23].

             %I      Hour (12-hour clock) as a decimal number [01,12].

             %j      Day of the year as a decimal number [001,366].

             %m      Month as a decimal number [01,12].

             %M      Minute as a decimal number [00,59].

             %n      A <newline>.

             %p      Locale's equivalent of either AM or PM.

             %r      12-hour  clock time [01,12] using the AM/PM notation;
                     in the POSIX locale,  this  shall  be  equivalent  to
                     %I:%M:%S %p.

             %S      Seconds as a decimal number [00,60].

             %t      A <tab>.

             %T      24-hour clock time [00,23] in the format HH:MM:SS.

             %u      Weekday as a decimal number [1,7] (1=Monday).

             %U      Week  of  the  year  (Sunday  as the first day of the
                     week) as a decimal number [00,53]. All days in a  new
                     year  preceding  the first Sunday shall be considered
                     to be in week 0.

             %V      Week of the year (Monday as  the  first  day  of  the
                     week)  as  a  decimal  number  [01,53].  If  the week
                     containing January 1 has four or more days in the new
                     year,  then it shall be considered week 1; otherwise,
                     it shall be the last week of the previous  year,  and
                     the next week shall be week 1.

             %w      Weekday as a decimal number [0,6] (0=Sunday).

             %W      Week  of  the  year  (Monday  as the first day of the
                     week) as a decimal number [00,53]. All days in a  new
                     year  preceding  the first Monday shall be considered
                     to be in week 0.

             %x      Locale's appropriate date representation.

             %X      Locale's appropriate time representation.

             %y      Year within century [00,99].

             %Y      Year with century as a decimal number.

             %Z      Timezone name, or no characters  if  no  timezone  is
                     determinable.

             %%      A <percent-sign> character.

             See  the  Base  Definitions  volume  of POSIX.1‐2008, Section
             7.3.5, LC_TIME for the conversion  specifier  values  in  the
             POSIX locale.

Como date não pode ter espaços formatados em sua saída, você teria que usar dois comandos de data como mostrado abaixo, primeiro para a data em que você pode usar +\%Y.\%m.\%d como um parâmetro que resultará em um formato de data como 2017.12.07 e pelo tempo em que você pode usar +\%H:\%M:\%S , o que resultará em um formato como 20:37:18 .

A opção da área de transferência ( -c ) não funciona junto com a opção salvar como nome do arquivo ( -f ) de gnome-screenshot , portanto você deve escolher qualquer uma delas. Este comando fará isso (apenas edite o c de volta se você precisar da área de transferência, mas deixe o f e o nome do arquivo fora, ambos não funcionarão juntos):

gnome-screenshot -af "Screenshot from $(date +\%Y.\%m.\%d) $(date +\%H:\%M:\%S).png"

Ele gera um nome de arquivo como o seguinte (apenas com a data e hora atuais em que você chama este comando):

Screenshot from 2017.12.07 20:37:18.png

Isso, entretanto, armazenará o arquivo dentro do diretório em que você está atualmente, para adicionar um caminho como ~/Pictures você precisa fornecer um caminho completo, pois ~ não é expandido dentro das aspas. O seguinte salvaria os arquivos, por exemplo, na pasta de imagens:

gnome-screenshot -af "/home/$USER/Pictures/Screenshot from $(date +\%Y.\%m.\%d) $(date +\%H:\%M:\%S).png"

Ou você se livra das aspas, o que significa que você pode usar o til ( ~ ), mas você precisa escapar de todos os espaços no nome:

gnome-screenshot -af ~/Pictures/Screenshot\ from\ $(date +\%Y.\%m.\%d)\ $(date +\%H:\%M:\%S).png

Veja man date e man gnome-screenshot , bem como Manual de referência do bash para mais detalhes.

    
por Videonauth 07.12.2017 / 20:38