Ответ 1
Мне нравится указывать на мой вопрос, альтернативу grep для программистов.
Я удивлен, что люди (в том числе и я) жили так долго с помощью псевдонимов и сценариев оболочки с помощью find и xargs.
Сегодня я обнаружил, что вы можете сделать less как tail -f.
меньше имени файла, затем нажмите Shift-F, чтобы начать следующий режим.
Так же, как и хвост, но у вас есть все дополнительные функции, такие как прокрутка, поиск и выделение поисковых запросов.
Я смотрел журналы с хвостом годами.
Это только заставило меня задуматься: существуют ли другие устаревшие команды и имеют мощные альтернативы?
Поделитесь блаженством - одна команда за сообщение.
Мне нравится указывать на мой вопрос, альтернативу grep для программистов.
Я удивлен, что люди (в том числе и я) жили так долго с помощью псевдонимов и сценариев оболочки с помощью find и xargs.
Попробуйте htop - top
на стероидах.
Попробуйте multitail - tail
на стероидах.
Самое очевидное:
меньше.
Не совсем заменяет ничего, но moreutils представляет собой набор небольших инструментов Unixy, которые в основном предназначены для заполнения отверстий в * nix toolbox.
Поскольку вам нужна только одна команда за сообщение, я думаю, мне нужно будет выбрать губку, которая позволит вам сохранить вывод канала в один из файлов, используемых в качестве входных данных. IOW, он позволяет изменять файлы на месте, не беспокоясь о временных файлах.
Например, если вы выполните:
grep 'something' somefile.txt > somefile.txt
somefile.txt закончится пустым. Итак, вы можете использовать губку:
grep 'something' somefile.txt | sponge somefile.txt
Rsync заменяет/дополняет большинство методов передачи файлов (scp, rcp, piped tar команды и т.д. и даже cp во многих случаях) в эффективным и мощным способом.
Благодаря своей универсальности у него много вариантов. Но я действительно рекомендую изучить хотя бы основы rsync.
mtr является заменой traceroute (это комбинация ping и traceroute).
В отличие от traceroute, он находит маршрут почти сразу (поскольку он не дожидается ответа до перехода к следующему переходу).
Версия командной строки устанавливается по умолчанию в Debian (пакет mtr-tiny).
Контекстно-зависимая автозаполнение.
Ну, я знаю, это не команда, и вряд ли она будет найдена во многих Unices, но Linux. В моем Ubuntu Hardy bash_completion
уже настроен очень хорошо, и это означает не только для файлов и директив! Например, если я набираю
svn pr<TAB><TAB>
Я получаю:
praise propdel propedit propget proplist propset
И даже
svn propget svn:k<TAB>
Я получаю автоматическое
svn propget svn:keywords
Он также работает для ant
и make
автоматического чтения файлов по умолчанию или тех, которые указаны в командной строке! Это реальная экономия времени!
rsh
/rexec
/rcp
/и т.д.. были вытеснены ssh
/scp
/и т.д.
Вопрос и теги противоречивы. Linux не Unix (глупый Open Group), а большинство "реальных" Unix-блоков не имеют нигде рядом с программным обеспечением, которое делает Linux. В качестве примера, на довольно простой установке AIX 5.3pl6:
$ less ksh: less: not found.
И да, я администрирую эти системы, но мы согласились не загружать неосновные компоненты в большинстве случаев, так как нам нужны они для соответствия развернутым системам в этой области.
Хорошо, что в вашем инструменте появились новые инструменты, но если вы не знаете путь "старой школы", вы окажетесь в мире обид, если вы когда-либо находитесь в AIX/Solaris/HP-UX/etc, которая не имеет новых инструментов (и может даже не иметь bash).
Обратите внимание: на нашей виртуальной машине разработки у меня есть столько современных инструментов, сколько я могу найти, просто потому, что, хотя я могу работать в более простой среде, это не значит, что мне это нравится. И я делаю как можно больше работы в нашей системе Linux (CentOS 5), просто потому, что инструменты на ней все еще новее, чем все, что я могу легко найти для AIX (Solaris несколько лучше, HP-UX бесконечно хуже).
Стоит взглянуть на версии GNU некоторых обычных команд, так как они спокойно приобрели полезные усовершенствования за пределами стандартных версий (XPG4 и т.д.).
Например, рекурсивный grep намного приятнее, чем find | xargs grep
.
Кроме того, find ... -print0 | xargs -0 ...
обрабатывает давнюю ужасную проблему цитирования, которая заставляет xargs не обрабатывать фанки заполненные имена файлов правильно.
GNU tar принимает флаги "j" и "z" для непосредственного обращения к файлам с bzipped и gzipped.
И bash $()
альтернатива обратным отсчетам облегчает чтение и запись случайного вложенного выражения с обратной записью.
pax
является заменой для tar
и cpio
, с разумным набором параметров командной строки: -r
для чтения из архива, -w
для записи в архив, -rw
для копирования дерева в дерево. Он также предоставляет параметр -s
, позволяющий выполнять замещения на имена файлов перед чтением/записью файла из/в архив.: -)
Изменить: Марк Бейкер делает интересный момент (в комментариях), который я должен уточнить. pax
создает архивы pax
(которые являются расширением ustar
и могут быть распакованы большинством программ tar
) по умолчанию. Но с опцией -x
можно создать архивы cpio
и ustar
архивы (эти два гарантированы стандартом). Некоторые реализации, такие как BSD, поддерживают создание еще большего числа типов, таких как архивы старого стиля (pre-ustar
) tar
.
В Linux ip
(из пакета iproute2
) ведет себя более предсказуемо и дает более простой для анализа вывод, чем ifconfig
/route
.
Можно сказать, что awk
полностью устарел от perl
.
Однако, поскольку я использовал awk, поскольку до того, как Perl существовал, я все еще использую его; что касается более серьезных сценариев, я использую python вместо perl.
'rename' является хорошей альтернативой длинным oneliners, которые записывает для изменения имени в кучу файлов.
atool: обработка архивов без головных болей
Некоторые примеры:
- aunpack archive.tgz Распакует все файлы в архиве. Если автор архива был так невнимательно поместить несколько файлов в корне архива команда автоматически создает каталог и перемещает файлы внутри.
- aunpack -e archive1.tgz archive2.zip Распаковывает каждый архив.
- apack archive.tar.bz2 *.txt Создает новый сжатый архив, содержащий все текстовые файлы в текущей рабочей каталог.
- als archive.rar Показывает имена файлов, содержащихся в архиве.
Примеры: http://debaday.debian.net/2008/12/28/atool-handling-archives-without-headaches/
dig
является лучшей альтернативой nslookup
.
Не действительно замена устаревшей команды как таковой, но экран - отличная альтернатива открытию нескольких окон терминала и/или использованию bg и т.д.
Если вы работаете в системе GNU, не используйте sed '1!G;h;$!d'
; вместо этого используйте tac
.
bm (link), вместо popd и pushd или создания временных псевдонимов, действительно полезно.
Чтобы добавить каталог для вызова с тегом
bm -a /path/to/a/dir tag
Чтобы перейти в этот каталог
cdbm tag
Где бы установить glibc
, вы можете getent passwd foo
вместо grep foo /etc/passwd
(аналогично для aliases ethers group hosts netgroup networks protocols rpc services shadow
) - он даже делает правильную вещь (TM) в настройке NIS.
Зачем печатать gzip -dc foo.tar.gz | tar xf -
, когда tar xzf foo.tar.gz
создаст для вас декомпрессор?
Идя еще дальше... зачем печатать tar xzf foo.tar.gz
или tar xjf foo.tar.bz2
, когда GNU tar
будет автоматически обнаруживать сжатие? tar xf foo.tar.(gz|bz2)
просто магически работает.
Я не уверен, что это должен быть ответ или просто редактирование вопроса.
Прежде чем использовать меньшее значение в качестве замены хвоста, вы можете найти что-то "/search_string" и THEN вызвать команду "Выполнить" (shift-F). Теперь будут выделены любые "search_strings", которые прокручиваются. Это полезно, когда вы сканируете кучу выходных данных программы или журналов и ищете определенную строку или шаблон.
Не забывайте, что вы также можете использовать регулярные выражения!
cfdisk - это простая в использовании утилита fdisk для разметки диска командной строки.
Мне очень нравится искать в качестве замены для поиска - гораздо проще использовать "locate filepattern", чем "find/-name filepattern -print", и более эффективно, поскольку использует базу данных индексов.
Для обновления базы данных местоположения необходимо выполнить команду updatedb в расписании; проверьте информацию о своем дистрибутиве.
ifconfig и iwconfig устарели в пользу ip, который является чрезвычайно мощным инструментом для отображения/управления маршрутизацией, устройствами, маршрутизации политики и тоннели.
echo
может по-прежнему использоваться только с тривиальными аргументами в противном случае, его поведение может быть непредсказуемым. Для всех других целей (управляющие символы, подавление новых строк, форматирование) он был устарел с помощью очень мощной и последовательной команды printf
.
Я нахожу, что wcalc - хорошая замена для bc
Perl Pie: perl -pi -e 's/foo/bar/'
вместо sed 's/foo/bar/'
, с гораздо более мощным perlre. (Это не совсем замещающая замена, поскольку в Perl-выражениях используются, например, ?
вместо \?
.)
tmux
над screen
. tmux
гораздо проще настроить, это даже не смешно.