- Команда Wc в Linux (подсчет количества строк, слов и символов)
- Как использовать команду wc
- Подсчитайте количество строк
- Подсчитайте количество слов
- Примеры команд Wc
- Подсчет файлов в текущем каталоге
- Подсчитайте количество пользователей
- Выводы
- Количество строк в текстовой консоли
- Как мне увеличить количество строк, отображаемых в окне терминала Ubuntu?
- 3 ответа
Команда Wc в Linux (подсчет количества строк, слов и символов)
В Linux и Unix-подобных операционных системах команда wc позволяет подсчитать количество строк, слов, символов и байтов в каждом заданном файле или стандартном вводе и распечатать результат.
В этом руководстве мы покажем вам, как использовать команду wc на простых и практических примерах.
Как использовать команду wc
Синтаксис команды wc следующий:
Команда wc может принимать ноль или более входных имен FILE . Если FILE не указан или если FILE равен — , wc будет читать стандартный ввод. Слово — это строка символов, разделенных пробелом, табуляцией или новой строкой.
В простейшей форме при использовании без каких-либо опций команда wc выводит четыре столбца, количество строк, слов, количество байтов и имя файла для каждого файла, переданного в качестве аргумента. При использовании стандартного ввода четвертый столбец (имя файла) не отображается.
Например, следующая команда отобразит информацию о виртуальном файле /proc/cpuinfo :
Результат будет выглядеть примерно так:
448 3632 22226 /proc/cpuinfo
- 448 — это количество строк.
- 3632 — количество слов.
- 22226 — количество символов.
При использовании стандартного ввода имя файла не отображается:
Чтобы отобразить информацию о более чем одном файле, передайте имена файлов в качестве аргументов, разделенных пробелом:
wc /proc/cpuinfo /proc/meminfo
Команда предоставит вам информацию о каждом файле и строку, включая общую статистику:
448 3632 22226 /proc/cpuinfo 49 143 1363 /proc/meminfo 497 3775 23589 total
Приведенные ниже параметры позволяют выбрать, какие счетчики будут печататься.
- -l , —lines — Вывести количество строк.
- -w , —words — Вывести количество слов.
- -m , —chars — Вывести количество символов.
- -c , —bytes — Вывести количество байтов.
- -L , —max-line-length — Вывести длину самой длинной строки.
При использовании нескольких параметров счетчики печатаются в следующем порядке: новая строка, слова, символы, байты, максимальная длина строки.
Например, чтобы отобразить только количество слов, которые вы бы использовали:
Вот еще один пример, который напечатает количество строк и длину самой длинной строки.
Параметр —files0-from=F позволяет wc читать ввод из файлов, указанных в файле F именами, завершающимися NUL. Если F — то читать имена со стандартного ввода. Например, вы можете искать файлы с помощью команды find и предоставлять эти файлы в качестве входных данных для wc :
find /etc -name 'host*' -printf0 | wc -l --files0-from=-
В выводе будет показано количество строк для всех файлов в каталоге /etc , имена которых начинаются с «host»:
4 /etc/host.conf 27 /etc/avahi/hosts 1 /etc/hostname 14 /etc/hosts 46 total
Подсчитайте количество строк
Команда wc в основном используется с параметром -l для подсчета только количества строк в текстовом файле. Например, чтобы подсчитать количество строк в /etc/passwd вы должны ввести:
В первом столбце указано количество строк, а во втором — имя файла:
Подсчитайте количество слов
Чтобы подсчитать только количество слов в текстовом файле, используйте wc -w за которым следует имя файла. В следующем примере подсчитывается количество слов в файле ~/Documents/file.txt :
Количество слов показано в первом столбце:
513 /home/linuxize/Documents/file.txt
Примеры команд Wc
wc можно использовать в сочетании с другими командами через конвейер. Вот несколько примеров.
Подсчет файлов в текущем каталоге
Команда find передает список всех файлов в текущем каталоге с каждым именем файла в одной строке команде wc , которая подсчитывает количество строк и выводит результат:
Подсчитайте количество пользователей
В приведенном ниже примере wc используется для подсчета количества строк в выводе команды getent .
Выводы
Команда wc означает «подсчет слов» и имеет довольно простой синтаксис. Он позволяет подсчитывать количество строк, слов, байтов и символов в одном или нескольких текстовых файлах.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Количество строк в текстовой консоли
После изменения шрифта в текстовой консоли у меня на экран помещается 25 строк, а в настройках tty прописано 28. Соответственно 3 строки находятся за нижней границей монитора.
Есть способ настроить данный параметр командой stty rows 25 , но это не подходит, т.к. работает только для текущей сессии.
Вопрос такой: где находится конфиг, в котором можно прописать количество строк текстовой консоли?
По дефолту нигде ничего такого не прописывается. Что за дистрибутив?
работает только для текущей сессии
saahriktu ★★★★★ ( 07.12.16 23:48:34 MSK )
Последнее исправление: saahriktu 07.12.16 23:49:40 MSK (всего исправлений: 1)
Gentoo. Текущее количество строк посмотрел так:
$ stty -a speed 38400 baud; rows 28; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; swtch = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0; -parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal -crtscts -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany imaxbel iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
У меня было предположение что это возможно как-то разрулить при помощи openrc (я его использую), но я ничего похожего не нашёл.
В .bashrc не подходит, т.к. мне это нужно до логина. Например при загрузке система просит меня ввести пароль от шифрованных разделов. Для /home это происходит после того как отработал consolefont, т.е. за пределами экрана. Менять порядок загрузки скриптов, имхо — не решение
Может ядру что-то передаётся в /boot/grub/grub.cfg ? Или в /etc есть какие-то настройки?
Ни там ни там ничего нет (я погрепал).
Вообще у меня тоже было предположение, что это делается через ядро. По крайней мере в параметрах ядра есть опция consoleblank= , задающая timeout для sceensaver’а. Логично предположить что количество строк задаётся там же, но я ничего похожего не нашёл.
Тогда, может, каким-то образом разрешение не соответствует разрешению монитора, в том смысле что оно больше физического?
Обычно ядро автоматически определяет текстовое разрешение по разрешению и размеру шрифта.
Явным образом прописал GRUB_GFXMODE=1920×1080 , не помогло. Тут особенность в том что дефолтовый шрифт отображается нормально. Уезжают строки, т.к. я поставил шрифт ч большим размером. Подумал что количество строк не должно определяться ядром, т.к. оно про шрифт ничего не знает — это скрипт, который запускается openrc. Мне всё же кажется то должен быть какой-то конфиг для этого.
Нет, там другой механизм. Шрифты в tty загружаются через setfont, который передаёт их прямо в ядро. И прямо в ядре есть серьёзные ограничения на шрифты: шрифт не более 64 Кб и один символ не более 32×32 пикселей. В явном виде в vt.c это было написано в версии 2.5.36 (сентябрь 2002-го года). Прямо перед кодом, который загружает и обрабатывает шрифты.
Конфиг может быть, но тогда это нечто специфичное для дистрибутива. В LFS’е такого нет.
Интересно. В генте консольный шрифт задаётся через файл /etc/conf.d/consolefont и меняется прямо на ходу через /etc/init.d/consolefont restart . Этот же скрипт прописывается на загрузку в openrc. Соответственно во время загрузки у меня сначала идёт текст одним шрифтом, затем резко меняется. Ладно, как только смогу залогиниться на гентушный форму — у них поспрашиваю. Спасибо за помощь 🙂
Шрифты в tty загружаются через setfont
В генте консольный шрифт задаётся через файл /etc/conf.d/consolefont и меняется прямо на ходу через /etc/init.d/consolefont restart
Так /etc/conf.d/consolefont и запускает setfont . Загляни в него: это ж скрипт.
И, да, у тебя что-то наворочено. fbterm? splashutils? Покажи участок grub, который отвечает за загрузку ядра (все строки соотв. пункта меню).
И, да, у тебя что-то наворочено. fbterm? splashutils? Покажи участок grub, который отвечает за загрузку ядра (все строки соотв. пункта меню).
Да не, вроде всё в рамках приличия:
Как мне увеличить количество строк, отображаемых в окне терминала Ubuntu?
Я разработчик Ruby on Rails. Я запустил сервер Ruby on Rails в окне терминала. Ruby on Rails выводит информацию журнала в окна терминала. Но из-за длинного журнала первые строки журнала для меня недоступны из-за прокрутки окна.
Как я могу увеличить количество строк, отображаемых в окне терминала?
3 ответа
Нажмите Редактировать → Профили → Прокрутка . Затем увеличьте значение прокрутки с ограничением до: или снимите его, чтобы прокрутить неограниченное количество строк.
Из комментария Кевина: будьте осторожны, сняв этот флажок. Если программа сходит с ума и выливает много данных на ваш терминал, у вас могут возникнуть проблемы с памятью.
Откройте настройки профиля для терминала через
Или щелкнув правой кнопкой мыши в терминале:
Изменить значение для Limit scrollback или уберите отметку для неограниченной прокрутки.
Думая об этом по-другому, вы также можете перенаправить вывод в файл, а затем использовать less +F для потоковой передачи файла в less , прессование ctrl + c остановит поток и наберет shift + f продолжу поток.
Это также дает вам дополнительное преимущество возможности выделять вещи, которые вам небезразличны. Например, набрав /my_search_term (перемотка вперед) или ?my_search_term (обратный поиск) также выделит my_search_term в файле. Это выделение будет продолжено по мере поступления новых потоков данных.
Как вывести в файл?
Есть несколько вариантов, но для полноты, это может быть лучше:
start_rails_server &>> my_new_logfile
&> направит как stdout, так и stderr в файл журнала. (Вы можете выбрать один или другой, используя номер, 1 для выхода и 2 для stderr, хотя stdout неявный, так что вы можете просто сделать cmd > file и вы получите стандартный вывод в ваш файл.)
Угловая скобка отправляет вывод my_new_logfile и тот факт, что есть два, означает, что он будет добавлен в файл, если он существует, и создаст новый, если нет. Если вы использовали одну угловую скобку, то любой существующий файл будет перезаписан:
start_rails_server &> my_new_logfile