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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

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

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

Оффлайн _art_

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

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

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

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

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


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

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6691
  • 20% Cooler
    • Просмотр профиля
Раскрываем алиас:
ls -lad */ && ls -lad .*/ | wc -l

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

Решение:
Код: (txt) [Выделить]
alias dirlist='( ls -lad */ && ls -lad .*/ )'
UPD
ls -lad * .*
« Последнее редактирование: 16 Июня 2017, 13:18:57 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн _art_

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

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6691
  • 20% Cooler
    • Просмотр профиля
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн AnrDaemon

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

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

Оффлайн Azure

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

Оффлайн _art_

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

Оффлайн AnrDaemon

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

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

Оффлайн _art_

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

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

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

Оффлайн AnrDaemon

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

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



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

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

Оффлайн ALiEN

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

Обратите внимание на пробел после watch - он говорит, что следующая команда тоже может быть алиасом.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн _art_

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

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

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6691
  • 20% Cooler
    • Просмотр профиля
а без скобок?
там, кстати, скобки и не нужны
« Последнее редактирование: 17 Июня 2017, 22:40:29 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн _art_

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

Оффлайн AnrDaemon

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

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

 

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