Какие команды Linux/Unix устарели и имеют мощные альтернативы?

Сегодня я обнаружил, что вы можете сделать less как tail -f.

меньше имени файла, затем нажмите Shift-F, чтобы начать следующий режим.

Так же, как и хвост, но у вас есть все дополнительные функции, такие как прокрутка, поиск и выделение поисковых запросов.

Я смотрел журналы с хвостом годами.

Это только заставило меня задуматься: существуют ли другие устаревшие команды и имеют мощные альтернативы?

Поделитесь блаженством - одна команда за сообщение.

Ответ 1

Мне нравится указывать на мой вопрос, альтернативу grep для программистов.

http://betterthangrep.com/

Я удивлен, что люди (в том числе и я) жили так долго с помощью псевдонимов и сценариев оболочки с помощью find и xargs.

Ответ 2

Попробуйте htop - top на стероидах.

Попробуйте multitail - tail на стероидах.

Ответ 3

Самое очевидное:

меньше.

Ответ 4

Не совсем заменяет ничего, но moreutils представляет собой набор небольших инструментов Unixy, которые в основном предназначены для заполнения отверстий в * nix toolbox.

Поскольку вам нужна только одна команда за сообщение, я думаю, мне нужно будет выбрать губку, которая позволит вам сохранить вывод канала в один из файлов, используемых в качестве входных данных. IOW, он позволяет изменять файлы на месте, не беспокоясь о временных файлах.

Например, если вы выполните:

grep 'something' somefile.txt > somefile.txt

somefile.txt закончится пустым. Итак, вы можете использовать губку:

grep 'something' somefile.txt | sponge somefile.txt

Ответ 5

Rsync заменяет/дополняет большинство методов передачи файлов (scp, rcp, piped tar команды и т.д. и даже cp во многих случаях) в эффективным и мощным способом.

Благодаря своей универсальности у него много вариантов. Но я действительно рекомендую изучить хотя бы основы rsync.

Ответ 6

mtr является заменой traceroute (это комбинация ping и traceroute).

В отличие от traceroute, он находит маршрут почти сразу (поскольку он не дожидается ответа до перехода к следующему переходу).

Версия командной строки устанавливается по умолчанию в Debian (пакет mtr-tiny).

Ответ 7

Контекстно-зависимая автозаполнение.

Ну, я знаю, это не команда, и вряд ли она будет найдена во многих 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 автоматического чтения файлов по умолчанию или тех, которые указаны в командной строке! Это реальная экономия времени!

Ответ 8

rsh/rexec/rcp/и т.д.. были вытеснены ssh/scp/и т.д.

Ответ 9

Вопрос и теги противоречивы. 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 бесконечно хуже).

Ответ 10

netcat следует повсеместно заменить на socat.

Ответ 11

Стоит взглянуть на версии GNU некоторых обычных команд, так как они спокойно приобрели полезные усовершенствования за пределами стандартных версий (XPG4 и т.д.).

Например, рекурсивный grep намного приятнее, чем find | xargs grep.

Кроме того, find ... -print0 | xargs -0 ... обрабатывает давнюю ужасную проблему цитирования, которая заставляет xargs не обрабатывать фанки заполненные имена файлов правильно.

GNU tar принимает флаги "j" и "z" для непосредственного обращения к файлам с bzipped и gzipped.

И bash $() альтернатива обратным отсчетам облегчает чтение и запись случайного вложенного выражения с обратной записью.

Ответ 12

pax является заменой для tar и cpio, с разумным набором параметров командной строки: -r для чтения из архива, -w для записи в архив, -rw для копирования дерева в дерево. Он также предоставляет параметр -s, позволяющий выполнять замещения на имена файлов перед чтением/записью файла из/в архив.: -)

Изменить: Марк Бейкер делает интересный момент (в комментариях), который я должен уточнить. pax создает архивы pax (которые являются расширением ustar и могут быть распакованы большинством программ tar) по умолчанию. Но с опцией -x можно создать архивы cpio и ustar архивы (эти два гарантированы стандартом). Некоторые реализации, такие как BSD, поддерживают создание еще большего числа типов, таких как архивы старого стиля (pre-ustar) tar.

Ответ 13

В Linux ip (из пакета iproute2) ведет себя более предсказуемо и дает более простой для анализа вывод, чем ifconfig/route.

Ответ 14

Можно сказать, что awk полностью устарел от perl.

Однако, поскольку я использовал awk, поскольку до того, как Perl существовал, я все еще использую его; что касается более серьезных сценариев, я использую python вместо perl.

Ответ 15

'rename' является хорошей альтернативой длинным oneliners, которые записывает для изменения имени в кучу файлов.

Ответ 16

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/

Ответ 17

dig является лучшей альтернативой nslookup.

Ответ 18

Не действительно замена устаревшей команды как таковой, но экран - отличная альтернатива открытию нескольких окон терминала и/или использованию bg и т.д.

Ответ 19

Если вы работаете в системе GNU, не используйте sed '1!G;h;$!d'; вместо этого используйте tac.

Ответ 20

bm (link), вместо popd и pushd или создания временных псевдонимов, действительно полезно.

Чтобы добавить каталог для вызова с тегом

bm -a /path/to/a/dir tag

Чтобы перейти в этот каталог

cdbm tag

Ответ 21

Где бы установить glibc, вы можете getent passwd foo вместо grep foo /etc/passwd (аналогично для aliases ethers group hosts netgroup networks protocols rpc services shadow) - он даже делает правильную вещь (TM) в настройке NIS.

Ответ 22

Зачем печатать 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) просто магически работает.

Ответ 23

Я не уверен, что это должен быть ответ или просто редактирование вопроса.

Прежде чем использовать меньшее значение в качестве замены хвоста, вы можете найти что-то "/search_string" и THEN вызвать команду "Выполнить" (shift-F). Теперь будут выделены любые "search_strings", которые прокручиваются. Это полезно, когда вы сканируете кучу выходных данных программы или журналов и ищете определенную строку или шаблон.

Не забывайте, что вы также можете использовать регулярные выражения!

Ответ 24

cfdisk - это простая в использовании утилита fdisk для разметки диска командной строки.

Ответ 25

Мне очень нравится искать в качестве замены для поиска - гораздо проще использовать "locate filepattern", чем "find/-name filepattern -print", и более эффективно, поскольку использует базу данных индексов.

Для обновления базы данных местоположения необходимо выполнить команду updatedb в расписании; проверьте информацию о своем дистрибутиве.

Ответ 26

ifconfig и iwconfig устарели в пользу ip, который является чрезвычайно мощным инструментом для отображения/управления маршрутизацией, устройствами, маршрутизации политики и тоннели.

Ответ 27

echo может по-прежнему использоваться только с тривиальными аргументами в противном случае, его поведение может быть непредсказуемым. Для всех других целей (управляющие символы, подавление новых строк, форматирование) он был устарел с помощью очень мощной и последовательной команды printf.

Ответ 28

Я нахожу, что wcalc - хорошая замена для bc

Ответ 29

Perl Pie: perl -pi -e 's/foo/bar/' вместо sed 's/foo/bar/', с гораздо более мощным perlre. (Это не совсем замещающая замена, поскольку в Perl-выражениях используются, например, ? вместо \?.)

Ответ 30

tmux над screen. tmux гораздо проще настроить, это даже не смешно.