Насколько универсальный-L (разыменуйте символьную ссылку), переключатель команды 'ls'?

При построении на ответе Блендера для получения количества выполнения процессов может использоваться следующее:

$ ps axo state | grep "R" | wc -l

Для получения количества процессов в Бесперебойном Сне, можно использовать (Редактирование Измененный 'D' к 'U', Gilles спасибо!):

$ ps axo state | grep "U" | wc -l
2
29.11.2011, 18:43
3 ответа

Ну, это находится в GNU, FreeBSD, OpenBSD и общем BSD ls реализации, таким образом, я сказал бы, что это, довольно вероятно, будет где угодно.

2
27.01.2020, 21:50
  • 1
    я думаю, что помню это находиться в System V от 20 лет назад также. –  Mark Ransom 29.11.2011, 19:05
  • 2
    Также существующий на SunOS 5.7 (который часто очень хорош в не наличии полезных переключателей). –  Ulrich Schwarz 30.11.2011, 07:55

Не анализировать ls если можно помочь ему. В зависимости от того, что Вы делаете, test утилита могла бы быть лучшей альтернативой.

test -r filename возвратит успех, если файл будет читаем с полномочиями текущего пользователя и перейдет по символьным ссылкам автоматически. Аналогично, -w и -x скажет Вам, если файл будет перезаписываем или исполняем. test команда указана POSIX и так должна работать с любым современным UNIX.

Если действительно необходимо знать определенные полномочия файла, ls мог бы быть самый портативный путь, пока Вы только используете его на одном файле за один раз. В этом случае, -L и -l флаги также указаны POSIX, таким образом, необходимо быть довольно в безопасности. (См., "не Анализируют ls"для немного большего количества комментария относительно мобильности выходных полей ls -l.)

Другая опция могла бы состоять в том, чтобы записать короткую программу C для использования в своих интересах stat(2) системный вызов, который будет доступен на каждом UNIX под солнцем. Если это - небольшая часть большей части программного обеспечения, это уже компилируется от C, это могло бы быть наилучшим вариантом.

6
27.01.2020, 21:50
  • 1
    я попробовал test программа в моей системе и кажется, что это не работа, она ничего не производит (даже не к sterr). Archlinux –  Hanan N. 29.11.2011, 23:50
  • 2
    В то время как “не анализируют вывод ls” хороший совет в целом, конкретный случай парсинга ls -l на единственном файле, когда Вы после полномочий или числа каналов, безопасно. –  Gilles 'SO- stop being evil' 30.11.2011, 01:20
  • 3
    @HananN. test не производит вывода, если Вы не делаете синтаксическую ошибку. Это возвращает информацию через свой статус выхода: 0, если тест верен, ≥1, если тест является ложью. –  Gilles 'SO- stop being evil' 30.11.2011, 01:21

Это находится в SUSv3 (Posix, 2001), но не в SUSv2 (искажают Unix98).

3
27.01.2020, 21:50

Теги

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