Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: bash // Неверно работает wc с командой вывода списка директорий  (Прочитано 1637 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн _art_

  • Автор темы
  • Активист
  • *
  • Сообщений: 377
    • Просмотр профиля
Привет.

Есть алиас:
alias dirlist='ls -lad */ && ls -lad .*/'

Делаю dirlist | wc -l
и получаю следующий вывод:
(Нажмите, чтобы показать/скрыть)

Он посчитал только кол-во скрытых (25), но почему-то проигнорировал обычные + к тому же вывел их список.

Кто-нибудь знает, почему так происходит и как верно посчитать кол-во дир-ий, используя этот алиас ?


« Последнее редактирование: 16 Июнь 2017, 13:08:50 от _art_ »

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4316
  • Capture the truth
    • Просмотр профиля
Раскрываем алиас:
ls -lad */ && ls -lad .*/ | wc -l

Выполняется первая команда (ls -lad */), выход попадает на stdout, не попадает на wc.
Выполняется вторая команда (ls -lad .*/), вывод перенаправляется на wc, который и выдаёт количество скрытых папок, не выдавая список директорий.

Решение:
Код: Text
  1. alias dirlist='( ls -lad */ && ls -lad .*/ )'

UPD
ls -lad * .*
« Последнее редактирование: 16 Июнь 2017, 13:18:57 от ALiEN175 »
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн _art_

  • Автор темы
  • Активист
  • *
  • Сообщений: 377
    • Просмотр профиля
Здорово, спасибо.
То есть, когда берем две команды в скобки, то они выводят свой результат как сумму ?

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4316
  • Capture the truth
    • Просмотр профиля
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27440
    • Просмотр профиля
когда берем две команды в скобки, то они выводят свой результат как сумму
Не сумму а объединение.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
alias dirlist='ls -lAd  .[!.]*/ */'
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн _art_

  • Автор темы
  • Активист
  • *
  • Сообщений: 377
    • Просмотр профиля

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27440
    • Просмотр профиля
alias dirlist='ls -lAd  .[!.]*/ */'
Какая милашка!
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн _art_

  • Автор темы
  • Активист
  • *
  • Сообщений: 377
    • Просмотр профиля
Хммм....
Имею алиас alias cputemp='(vcgencmd measure_temp)'Измеряет температуру процессора.

Почему следующая конструкция не хочет работать:
watch cputemp?

Пишет:
(Нажмите, чтобы показать/скрыть)

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27440
    • Просмотр профиля
А почему она должна работать?…

Цитировать
$ man watch | head
WATCH(1)                                 User Commands                                 WATCH(1)



NAME
       watch - execute a program periodically, showing output fullscreen
« Последнее редактирование: 17 Июнь 2017, 22:08:21 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4316
  • Capture the truth
    • Просмотр профиля
алиас после команды не раскрывается, однако можно использовать цепочку алиасов. 
alias watch='watch '
alias cputemp='(vcgencmd measure_temp)'

Обратите внимание на пробел после watch - он говорит, что следующая команда тоже может быть алиасом.
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн _art_

  • Автор темы
  • Активист
  • *
  • Сообщений: 377
    • Просмотр профиля
алиас после команды не раскрывается, однако можно использовать цепочку алиасов. 
alias watch='watch '
alias cputemp='(vcgencmd measure_temp)'

Обратите внимание на пробел после watch - он говорит, что следующая команда тоже может быть алиасом.
Что-то не хочет, пишет:
watch cputemp
-bash: syntax error near unexpected token `vcgencmd'

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4316
  • Capture the truth
    • Просмотр профиля
а без скобок?
там, кстати, скобки и не нужны
« Последнее редактирование: 17 Июнь 2017, 22:40:29 от ALiEN175 »
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн _art_

  • Автор темы
  • Активист
  • *
  • Сообщений: 377
    • Просмотр профиля
а без скобок?
там, кстати, скобки и не нужны
Круто. Заработало. Спасибо.
А есть решение попроще ?
Или специально алиас watch нужно было делать для такого случая ?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27440
    • Просмотр профиля
Попроще - не делать альясы вообще. А для начала определиться с целью, зачем это вообще делается.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.175 секунд. Запросов: 24.