Как я могу автоматически сгенерировать имя файла для gnome-screenshot?

Я хотел бы использовать следующую команду:

$ gnome-screenshot -caf=<file name>

Как я могу передать что-то автоматически сгенерированное, как Screenshot from 2017-12-07 20-22-56.png за <file name>?

1 ответ

Решение

Вы можете использовать date команда для включения фактической даты и времени в имя файла. Давайте посмотрим, что мы можем найти в date справочная страница:

ОПЕРАНДЫ

   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>.

Характеристики конверсии% сокращенного названия дня недели для локали.

             %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.

поскольку date Вы не можете использовать пробелы, отформатированные в выходных данных. Вам нужно использовать две команды даты, как показано ниже, сначала для даты, которую вы можете использовать. +\%Y.\%m.\%d в качестве параметра, который приведет к формату даты, как 2017.12.07 и на время вы можете использовать +\%H:\%M:\%S что приведет к формату, как 20:37:18,

Опция буфера обмена (-c) не работает вместе с опцией сохранить как имя файла (-f) из gnome-screenshot так что вы должны выбрать один из них. Эта команда сделает это (просто отредактируйте c вернуться, если вам нужен буфер обмена, но затем позвольте f и имя файла, оба не будут работать вместе):

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

Он генерирует имя файла, подобное следующему (только с фактической датой и временем, когда вы вызываете эту команду):

Screenshot from 2017.12.07 20:37:18.png

Это, однако, сохранит файл в каталоге, в котором вы сейчас находитесь, чтобы добавить путь ~/Pictures Вы должны предоставить полный путь, так как ~ не раскрывается внутри кавычек. Следующее будет сохранять файлы, например, в папке с изображениями:

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

Или вы избавляетесь от кавычек, которые означают, что вы можете использовать тильду (~) но тогда вы должны экранировать все пробелы в имени:

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

Увидеть man date а также man gnome-screenshot а также справочное руководство Bash для получения более подробной информации.

Другие вопросы по тегам