Могу ли я просмотреть определенную главу в руководстве?

Тестируется на этой Linux-системе. Обычный способ проверить время файла — оболочка :

.
[ file1 -nt file2 ] && echo "yes"

Кажется, работает с секундами. Это, которое будет касаться файлов с разницей во времени менее секунды, не обнаружит эту разницу :

.
$ touch file2; sleep 0.1; touch file1; [ file1 -nt file2 ] && echo "yes"

Чтобы подтвердить проблему (время после точки равно наносекундам):

$ ls --time-style=full-iso -l file?
-rw-r--r-- 1 user user 0 2017-06-23 01:37:01.707387495 -0400 file1
-rw-r--r-- 1 user user 0 2017-06-23 01:37:01.599392538 -0400 file2

file1(немного )новее, чем file2.

Теперь проблема заключается в правильной обработке значения времени.

Одним из решений является использование форматированного вывода ls:

$ ls --time-style=+%s.%N -l file?
-rw-r--r-- 1 user user 0 1498196221.707387495 file1
-rw-r--r-- 1 user user 0 1498196221.599392538 file2

Извлечение времени в две переменные (без точки):

$ file1time=$(ls --time-style=+%s%N -l file1 | awk "{print(\$6)}")
$ file2time=$(ls --time-style=+%s%N -l file2 | awk "{print(\$6)}")

И сравните время (раз с наносекундами, едва умещающимися в 64-битном значении. Если ваша система не использует 64-разрядную версию, это сравнение не будет выполнено ):

.
$ [ $file1time -gt $file2time ] && echo "yes"
yes

Это показывает, что file1новее, чем file2

.

Если lsне имеет нужного формата, вы можете попробовать stat.

$ stat file1
  File: file1
  Size: 0               Blocks: 0          IO Block: 4096   regular file
Device: 805h/2053d      Inode: 9180838     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    user)   Gid: ( 1000/    user)
Access: 2017-06-23 01:37:01.707387495 -0400
Modify: 2017-06-23 01:37:01.707387495 -0400
Change: 2017-06-23 01:37:01.707387495 -0400
 Birth: -

Если выходные данные показывают наносекунды, нам потребуется дата для анализа (и форматирования )времени.

$ stat --printf='%y\n' file1
2017-06-23 01:37:01.707387495 -0400

$ date +'%s%N' -d "$(stat --printf='%y\n' file1)" 
1498196221707387495

Остальное то же самое, присвоить результаты файлов файл1 и файл2 двум переменным и численно сравнить их.

1
14.02.2019, 07:08
2 ответа

Вы можете использовать man <section_number> <package_name>, т.е.man 2 socket

Или man <package_name>.<section_number>, т.е. man socket.2.

Изman man:

man man.7

Display the manual page for macro package man from section 7.

А также изman man:

man [[section] page[.section]...]

2
28.04.2021, 23:37

Раздел 2 относится к системным вызовам. Чтобы прочитать справочную страницу в этом разделе, вы добавляете.2 к системному вызову. Итак, руководство по сокету (2 )можно найти, введя:

man socket.2

См. также:

$ man man
1
28.04.2021, 23:37

Теги

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