Это редкий случай, когда отставание /
важно. Во многих командах указание foo
и foo/
идентично. Но у него есть семантическая разница. В некоторых командах, включая rsync, замыкающий /
указывает команде выполнить особое действие, основанное на том факте, что это каталог. Если у вас возникла ситуация, созданная...
mkdir foo bar
touch foo/baz
... и вы хотите скопировать содержимое из foo в bar, тогда НЕ указывайте...
rsync -rv foo bar
... вместо этого укажите...
rsync -rv foo/ bar
В противном случае rsync решит, что вы хотите скопировать все дерево (, включая родительский каталог ), в целевой каталог, как вы нашли.
Другим примером с подобной эффективной семантикой является ls
при перечислении ссылок:
mkdir foo
touch foo/baz
ln -s foo bar
ls -l bar
lrwxrwxrwx 1 philip philip 3 May 7 14:58 bar -> foo
ls -l bar/
total 0
-rw-r----- 1 philip philip 0 May 7 14:58 baz
Если в файле есть только эта метка времени и нет другого содержимого, проще использовать подстановку команд($(...)
)для чтения всего файла. Точно так же вы можете взять вывод date +%s
. Арифметика может быть выполнена внутри $((.. ))
.
t1=$(date +%s)
t0=$(cat datefile)
echo $(( t1 - t0 ))