почему для некоторых программ нужны-h и другой нет

С man mount :

mount -a [-t type] [-O optlist]

(обычно указывается в загрузочном скрипте) все файловые системы, упомянутые в fstab (соответствующего типа и/или имеющие или не имеющие соответствующие опции), монтируются, как указано, за исключением тех, чья строка содержит ключевое слово noauto .

Из systemd.mount документации :

noauto, auto

При использовании noauto это подключение не будет добавлено в качестве зависимости для local-fs.target . Это означает, что он не будет установлен автоматически во время загрузки, если его не втягивает какой-либо другой блок. Опция auto имеет противоположное значение и используется по умолчанию.

Как видно, любая строка /etc/fstab с noauto не монтируется автоматически при использовании команды mount -a .

В /etc/fstab имеется noauto . Если вы уберете это, то это должно сработать.

-121--111726-

Я смог сделать это с помощью правила udev, после некоторых трюков (и с помощью lsusb , чтобы узнать поставщика и идентификатор продукта устройства во флэш-режиме):

$ cat /etc/udev/rules.d/nxt.rules
# disable NXT in flash mode
ACTION=="add", ATTR{idVendor}=="03eb", ATTR{idProduct}=="6124", RUN="/bin/sh -c '/bin/echo -n $kernel:1.0 | /usr/bin/tee /sys/bus/usb/drivers/cdc_acm/unbind | /usr/bin/logger -t nxt-flashmode'"

Это правило запускается при подключении элемента NXT во время работы во флэш-режиме или при установке Это не мешает cdc _ acm захватывать его, но сразу после этого сообщает об освобождении устройства, так что fwflash может получить к нему доступ.

Я не выяснил, что такое : 1,0 , и зачем использовать это, а не : 1,1 , который также появляется в sysfs. Однако я хотел поделиться рабочим (для меня) решением. Среда: Debian нестабильен по состоянию на конец октября 2014 года (т.е. в значительной степени Debian jessie).

-121--73374-

Обновление

Только что заметил комментарий суперпользователя. По-прежнему можно использовать команду link без использования root. Существует вероятность того, что разрешения для этой папки будут по-прежнему разрешены. В случае сбоя обратитесь за помощью к системному администратору.


Если приложение ищет библиотеку, symlink не существует.

Попробуйте выполнить команду (while root):

ln -sf/ home/mks/myGL/oglpg/lib/libGLEW.so.1.11.0/usr/lib64/libGLEW.so.1.11

После этого снова запустите ldd ./triangle и проверьте, находит ли выход symlink. Если он не смотрит на места, он ищет другие symlinks и создать ссылку там. Если расположение не является /usr/lib64 , убедитесь, что вы unlink/usr/lib64/libGLEW.so.1.11 исправили расположения symlink, чтобы не оставлять неиспользуемый symlink в файловой системе, и забудьте очистить его позже.

ln = > Создать ссылку

sf = > symlink, принудительно

0
13.11.2014, 00:59
2 ответа

На практике программы должны иметь оба варианта. -H - это «короткая форма» и - помощь - «длинная форма».

Параметры командной формы, как правило, один или два символа, в то время как параметры длительной формы более описаны (например, yum update -y и yum update --assume-yes Значение "предположим" Да на все вопросы ").

Программы, которые не используют оба, обычно являются нестандартные утилиты.

1
28.01.2020, 02:36

Для этого используется команда GNU date . Однако может потребоваться последовательности и распечатать соответствующую дату:

$ date -d "11/11/2014 04:12:03PM"
Tue Nov 11 16:12:03 CET 2014

Обратите внимание, что не нравится DD-MM-YYY :

$ date -d "11-11-2014"
date: invalid date ‘11-11-2014’

Поэтому сначала запустите sed в файле, чтобы заменить все - на /. Затем пройдите через прочитайте , чтобы получить каждое поле в отдельную переменную, преобразуйте и сортируйте:

$ sed 's#-#/#g' file | while read date _ hour rest; do 
    echo "$(date -d "$date $hour" +"%F - %R:%S") $rest"
  done | sort -h
2014-11-12 - 00:08:03 lat = 41.937911; lon = /93.369249<br>
2014-11-12 - 00:11:29 lat = 41.949656; lon = /93.329133<br>
2014-11-12 - 00:23:02 lat = 42.025385; lon = /93.347026<br>
2014-11-12 - 00:29:10 lat = 41.033341; lon = /93.380586<br>
2014-11-12 - 00:38:08 lat = 41.036720; lon = /93.436851<br>
2014-11-12 - 00:45:20 lat = 41.998129; lon = /93.400943<br>
2014-11-12 - 00:53:36 lat = 41.961489; lon = /93.414624<br>
2014-11-12 - 03:03:59 lat = 41.990516; lon = /93.430704<br>
2014-11-12 - 03:05:15 lat = 41.001546; lon = /93.443352<br>

Это будет работать над вашим примером, но не удастся, если вам также нужно сортировать февраль ( 02 ) до ноября ( 11 ). Таким образом, хитрость состоит в том, чтобы напечатать даты как секунд с момента эпохи , сортировать по этому и затем удалить его:

$ sed 's#-#/#g' file | while read date _ hour rest; do 
  printf "%s\t%s %s\n" "$(date -d "$date $hour" +"%s")" "$date - $hour" "$rest"
done | sort | cut -f 2-
11/12/2014 - 12:08:03AM lat = 41.937911; lon = /93.369249<br>
11/12/2014 - 12:11:29AM lat = 41.949656; lon = /93.329133<br>
11/12/2014 - 12:23:02AM lat = 42.025385; lon = /93.347026<br>
11/12/2014 - 12:29:10AM lat = 41.033341; lon = /93.380586<br>
11/12/2014 - 12:38:08AM lat = 41.036720; lon = /93.436851<br>
11/12/2014 - 12:45:20AM lat = 41.998129; lon = /93.400943<br>
11/12/2014 - 12:53:36AM lat = 41.961489; lon = /93.414624<br>
11/12/2014 - 03:03:59AM lat = 41.990516; lon = /93.430704<br>
11/12/2014 - 03:05:15AM lat = 41.001546; lon = /93.443352<br>
11/12/2014 - 03:11:50AM lat = 42.039054; lon = /93.442001<br>

Или, чтобы напечатать даты в формате 24H:

$ sed 's#-#/#g' file | while read date _ hour rest; do 
    printf "%s\t%s %s\n" "$(date -d "$date $hour" +"%s")" \ 
    "$(date -d "$date $hour" +"%F - %R:%S")" "$rest"
  done | sort | cut -f 2-
2014-11-12 - 00:08:03 lat = 41.937911; lon = /93.369249<br>
2014-11-12 - 00:11:29 lat = 41.949656; lon = /93.329133<br>
2014-11-12 - 00:23:02 lat = 42.025385; lon = /93.347026<br>
2014-11-12 - 00:29:10 lat = 41.033341; lon = /93.380586<br>
2014-11-12 - 00:38:08 lat = 41.036720; lon = /93.436851<br>
2014-11-12 - 00:45:20 lat = 41.998129; lon = /93.400943<br>
2014-11-12 - 00:53:36 lat = 41.961489; lon = /93.414624<br>
2014-11-12 - 03:03:59 lat = 41.990516; lon = /93.430704<br>
2014-11-12 - 03:05:15 lat = 41.001546; lon = /93.443352<br>
2014-11-12 - 03:11:50 lat = 42.039054; lon = /93.442001<br>
-121--196297-

На практике программы должны иметь оба варианта. -h является «короткой формой», а --help - «длинной формой».

Параметры команды короткой формы обычно составляют один или два символа, в то время как параметры длинной формы являются более описательными (например, yum update -y и yum update --assume-yes , что означает "предполагать" да "для всех вопросов).

Программы, которые не используют обе программы, обычно являются нестандартными утилитами.

-121--217714-

Я думаю, что если -h имеет смысл для чего-то другого, кроме помощи, особенно когда программа имеет много вариантов, так что вы в значительной степени используете много вариантов с этими переключателями, имеет смысл поставить что-то в качестве помощи на --help .

1
28.01.2020, 02:36

Теги

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