последний-t в Linux

Если следующее не работает ...

cd ./target_dir
    set -- *
    onedrive-cli put "$@"

Тогда это, вероятно, потому, что вам нужно положить для каждого аргумента, и в этом случае это может:

{    printf 'one-drive-cli' 
     printf " put ///%s///" *
} | sed 's|'\''|&"&"&|g;s|///|'\''|g' |
. /dev/stdin 

Но если , что не работает, то ваш цикл for , вероятно, является лучшим решением оболочки, потому что ваш скрипт python будет поддерживать только одну загрузку на вызов.

Однако лучший способ сделать это - отредактировать скрипт python в соответствии с вашими потребностями.

1
11.01.2015, 12:16
2 ответа

Проблема решается загрузкой последней.c. Перейдите в строку 753, измените строку с:

if (until && until < ut.ut_time)
  continue;

на

if (until && until > ut.ut_time)
  continue;

и перекомпилируйте ее.

0
27.01.2020, 23:51

Насколько я знаю, ближайшая вещь bash должен попробовать... наконец блок из более C-подобный язык программирования (который, вероятно, вы хотели бы, если бы он был доступен) является trap конструкция, которая работает так:

trap "rm -f *.class" EXIT
javac *.java && java -ea Test

Это будет выполнять «rm -f * .class», когда ваш сценарий выходит. Если у вас есть что-то более сложное, вы могли бы поставить его в функцию:

cleanup() {
    ...
}
trap cleanup EXIT
javac *.java && java -ea Test

Если вы так склонны, вы можете превратить это в довольно общую идиому, которая работает примерно как try... catch... finally block in C. Что-то подобное:

(
  trap "catch_block; exit" ERR
  trap finally_block EXIT
  # contents of try goes here
)

Обратите внимание, что скобки ограничивают субоболочку; при такой конструкции выходит только подслой в случае сбоя команды, а не весь сценарий. Помните, что субоболочки являются довольно дорогими в вычислительном отношении, поэтому не используйте слишком много (сотни) из них. В зависимости от сценария, вы сможете добиться такого же эффекта более эффективно с помощью функций оболочки и ловушки ... RETURN , но вы должны провести расследование.

-121--28264-

При работе с sed Мне обычно легче всего последовательно сужать мой возможный результат. Вот почему я иногда опираюсь на ! оператор отрицания. Очень часто проще урезать неинтересный ввод, чем точечно выбирать интересный вид - по крайней мере, таково мое мнение на этот счет.

Я нахожу этот метод более встроенным в поведение по умолчанию sed , которое заключается в автоматической печати пространства шаблона в конце сценария. Для простых вещей, таких как это, это также может легко привести к надежному скрипту - скрипт, который не зависит от определенных расширений синтаксиса реализаций для работы (как обычно видно с sed {functions} ) .

Поэтому я рекомендовал вам сделать:

sed '10,15!d;/pattern/!d;=' <input

... который сначала отсекает любую строку, не входящую в диапазон строк 10 & 15, и из числа тех, которые остаются, отсекает любую строку, которая не соответствует образцу . Если вы предпочитаете, чтобы номер строки sed печатался на той же строке, что и соответствующая строка, я, вероятно, посмотрю на paste в этом случае. Может быть...

sed '10,15!d;/pattern/!d;=' <input |
paste -sd:\\n -

... который будет заменять входные \n ewlines символом : или другим \n ewline.

Например:

seq 150 |
sed '10,50!d;/5/!d;=' |
paste -sd:\\n -

... отпечатки...

15:15
25:25
35:35
45:45
50:50
-121--125639-

Я считаю, что ошибка является просто ошибкой документации.

Версия util-linux Ubuntu 14.10 (откуда происходит последний ) - это версия util-linux 2.25

Fedora 21.

Страница man для last на Fedora гласит:

   -t, --until time
          Display the state of logins until the specified time.

что вы получаете как фактическое поведение.

Я предлагаю вам создать ошибку против util-linux на Ubuntu (или Debian) и CentOS для страницы man .

1
27.01.2020, 23:51

Теги

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