Скопируйте файл в папку назначения

Solaris date не поддерживает параметр -d , такой как GNU date .

Вы можете использовать perl :

$ perl -MPOSIX=strftime -le '@t = localtime; $t[3] = 1; $t[4]--; print strftime("%m", @t)'
05    
$ perl -MPOSIX=strftime -le '@t = localtime; $t[3] = 1; $t[5]--; print strftime("%Y", @t)'
2013

Или, если у вас есть ksh93 :

$ printf "%(%m)T\n" "last month"
05  
$ printf "%(%Y)T\n" "last year"
2013

Обновлено

Для комментария @ glennjackman я нашел документацию в Time Модуль :: Piece :

   The months and years can be negative for subtractions. Note that there is some "strange" behaviour when adding and subtracting months
   at the ends of months. Generally when the resulting month is shorter than the starting month then the number of overlap days is
   added. For example subtracting a month from 2008-03-31 will not result in 2008-02-31 as this is an impossible date. Instead you will
   get 2008-03-02. This appears to be consistent with other date manipulation tools.

Поскольку OP хочет получить только предыдущий год и месяц, мы можем установить $ t [3] = 1 , чтобы решить эту проблему.

1
07.02.2019, 16:32
4 ответа

Расширение фигурной скобки подходит для этого:

cp /opt/other/very/very/long/path/{fileA,fileB}

... расширится до:

cp /opt/other/very/very/long/path/fileA /opt/other/very/very/long/path/fileB

при фактическом выполнении.

Команда появится в вашей истории в том виде, в котором вы ее набрали, что сохраняет пути:

$ history
  #...
  508  cp /opt/other/very/very/long/path/{fileA,fileB}
  509  history
4
27.01.2020, 23:18

Вы можете установить переменную с самим путем журнала и использовать эту переменную вместо этого в команде cp.

например

export dir="/opt/very/long/path" 

cp "$dir"/file "$dir"/file2
0
27.01.2020, 23:18

Вы можете использовать rsync, если хотите синхронизировать 2 папки.

rsync также можно использовать для синхронизации на локальном и удаленных хостах.

В приведенном выше сценарии он используется на локальном хосте:

rsync -avzh sourcefolder destinationfolder
0
27.01.2020, 23:18

Вы можете ввести:

cp /opt/other/very/very/long/path/fileA !#:1:h/fileB

в истории он расширится до:

cp /opt/other/very/very/long/path/fileA /opt/other/very/very/long/path/fileB

Пояснение:

  • !#-получить текущую строку
  • :1-получить первый аргумент
  • :h-получить папку

(спасибо за эту статью)

Недостаток в том, что:

  • вы не можете нажать up arrow, чтобы получить введенную вами команду, потому что она сохранена в расширенном виде в истории,
  • Автозаполнение второго имени файла не работает.
0
27.01.2020, 23:18

Теги

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