it-swarm.dev

¿Qué comandos de Linux / Unix están desactualizados y tienen poderosas alternativas?

Hoy descubrí que puedes hacer menos actuar como cola -f.

less filename , luego presione Shift-F para iniciar el modo de seguimiento.

Al igual que la cola, pero tiene todas las funciones adicionales de menos, como el desplazamiento, la búsqueda y el resaltado de los resultados de búsqueda.

He estado viendo los archivos de registro con la cola durante años.

Esto me hizo reflexionar: ¿hay otros comandos que están desactualizados y tienen alternativas poderosas?

Por favor, comparta la dicha - un solo comando por publicación.

154
chickeninabiscuit

Me gusta señalar mi ack, una alternativa a grep para programadores.

http://betterthangrep.com/

Estoy sorprendido de que la gente (incluyéndome a mí) haya vivido con alias y guiones de Shell con find y xargs durante tanto tiempo.

57
Andy Lester

Pruebe htop - top con esteroides.

Pruebe multitail - tail con esteroides.

34
Arkady

Lo mas obvio:

menos es más

30
William

No exactamente reemplazos para nada, pero moreutils es una colección de pequeñas herramientas de Unixy, que básicamente están diseñadas para rellenar los agujeros en la caja de herramientas * nix.

Dado que, solo quería un comando por publicación, supongo que tendré que elegir esponja , que le permite guardar la salida de una tubería en uno de los archivos utilizados como entrada. IOW, le permite modificar archivos en el lugar, sin tener que preocuparse por archivos temporales.

Por ejemplo, si lo hace:

grep 'something' somefile.txt > somefile.txt

somefile.txt terminará vacío. Entonces, podrías usar una esponja:

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

Rsync reemplaza/complementa la mayoría de los métodos de transferencia de archivos (scp, rcp, comandos de canalización, etc. e incluso cp en muchos casos) de una manera eficiente y poderosa.

Debido a su versatilidad, tiene muchas opciones. Pero realmente recomiendo aprender al menos los conceptos básicos de rsync.

26
matli

mtr es un traceroute reemplazo (es una combinación de ping y traceroute).

A diferencia de traceroute, encuentra la ruta casi inmediatamente (ya que no espera una respuesta antes de pasar al siguiente salto).

La versión de línea de comandos se instala de forma predeterminada en Debian (paquete mtr-tiny).

21
Udi Meiri

Autocompletado sensible al contexto.

Bueno, lo sé, no es un comando y es poco probable que se encuentre en muchos Unices, pero en Linux. En mi Ubuntu Hardy, bash_completion ya está muy bien configurado, y eso significa no solo para archivos y direcotires! Por ejemplo si escribo

svn pr<TAB><TAB>

Yo obtengo:

praise    propdel   propedit  propget   proplist  propset

E incluso

svn propget svn:k<TAB>

Me pongo automaticamente

svn propget svn:keywords

¡Funciona también para ant y make leyendo automáticamente los archivos predeterminados o los especificados en la línea de comandos! Eso es un ahorro de tiempo real!

16
Davide

La pregunta y las etiquetas son contradictorias. Linux no es Unix (grupo abierto estúpido), y la mayoría de las cajas "reales" de Unix no tienen ningún lugar cerca del software que Linux tiene. Como ejemplo, en una instalación AIX 5.3pl6 bastante simple:

 $ menos 
 ksh: menos: no encontrado. 

Y sí, administro estos sistemas, pero acordamos no cargar componentes no esenciales en la mayoría de los casos, ya que los necesitamos para que coincidan con los sistemas implementados en el campo.

Es genial tener las herramientas más nuevas en su caja de herramientas, pero si no conoce la forma de la "vieja escuela", entonces estará en un mundo de problemas si alguna vez está en un AIX/Solaris/HP-UX. Sistema/etc que no tiene las herramientas más nuevas (y puede que ni siquiera tenga bash).

Tenga en cuenta que en nuestro desarrollo VM Tengo tantas herramientas modernas instaladas como puedo encontrar, simplemente porque si bien puedo trabajar en un entorno más simple, no significa que lo disfrute. Y hago el mayor trabajo posible en nuestro sistema Linux (CentOS 5), simplemente porque las herramientas que contiene son aún más nuevas que cualquier otra que pueda encontrar fácilmente empaquetada para AIX (Solaris es algo mejor; HP-UX es infinitamente peor).

15
Zathrus

rsh/rexec/rcp/etc. han sido suplantados por ssh/scp/etc.

15
ephemient

netcat debe reemplazarse universalmente por socat .

13
ephemient

En Linux, ip (del paquete iproute2) se comporta de manera más predecible y da un resultado más fácil de analizar que ifconfig/route.

11
ephemient

Vale la pena echar un vistazo a las versiones GNU de algunos comandos comunes, ya que han adquirido refinamientos útiles más allá de las versiones estándar (XPG4, etc.).

Por ejemplo, grep recursivo es mucho mejor que find | xargs grep.

Además, find ... -print0 | xargs -0 ... maneja el horrible problema de comillas que hace que xargs no logre manejar los nombres de archivos rellenos de espacio funky correctamente.

GNU tar toma las banderas 'j' y 'z' para manejar archivos comprimidos comprimidos y comprimidos directamente.

Y la alternativa de bash $() a backticks hace que la expresión anidada entre comillas anidadas sea más fácil de leer y escribir.

11
fcw

pax reemplaza a tar y cpio, con un conjunto sensato de opciones de línea de comandos: -r para leer un archivo, -w para escribir en un archivo, -rw para hacer copias de árbol a árbol. También proporciona una opción -s para permitirle realizar sustituciones en los nombres de archivo antes de leer/escribir un archivo desde/a un archivo. :-)

Edit: Mark Baker hace un punto interesante (en comentarios) que debo aclarar. pax crea pax archives (que son una extensión de ustar, y la mayoría de los programas de tar pueden desempaquetar). Pero, con la opción -x, se puede hacer para crear archivos cpio y archivos ustar (estos dos están garantizados por la norma). Algunas implementaciones, como la de BSD, admiten la creación de incluso más tipos, como los archivos de estilo antiguo (pre -ustar) tar.

11
Chris Jester-Young

Se podría decir que awk ha sido completamente obsoleto por Perl.

Sin embargo, como estuve usando awk desde antes de que existiera Perl, todavía lo uso; En cuanto a los scripts más serios, uso python en lugar de Perl.

10
tzot

atool : manejo de archivos sin dolores de cabeza

Algunos ejemplos:

  • aunpack archive.tgz Desempaqueta todos los archivos en el archivo. Si el autor del archivo fue tan poco atento como para colocar múltiples archivos en la raíz del archivo, el comando crea automáticamente un directorio y mueve los archivos dentro.
  • aunpack -e archive1.tgz archive2.Zip Desempaqueta cada archivo.
  • apack archive.tar.bz2 * .txt Crea un nuevo archivo comprimido que contiene todos los archivos de texto en el directorio de trabajo actual.
  • als archive.rar Muestra los nombres de los archivos contenidos en el archivo.

Los ejemplos son de: http://debaday.debian.net/2008/12/28/atool-handling-archives-without-headaches/

10
Tarnay Kálmán

Dig es una mejor alternativa a nslookup.

9
dave1010

'renombrar' es una buena alternativa a los oneliners largos que uno escribe para cambiar el nombre a un grupo de archivos.

8

No es realmente un reemplazo para un comando desactualizado, pero la pantalla es una excelente alternativa para abrir múltiples ventanas de terminal y/o usar bg, etc.

8
mmacaulay

Si estás en un GNU sistema, no uses sed '1!G;h;$!d'; en su lugar, use tac.

6
ephemient

bm (enlace) , en lugar de popd y pushd o crear alias temporales, es realmente útil.

Para agregar un directorio para ser llamado con etiqueta

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

Ir a este directorio

cdbm tag
5
HoboBen

cfdisk es una actualización fácil de usar de la utilidad de partición de la línea de comandos fdisk.

5
Colin

Dondequiera que se instale glibc, puede getent passwd foo en lugar de grep foo /etc/passwd (de manera similar para aliases ethers group hosts netgroup networks protocols rpc services shadow) - incluso hace The Right Thing (TM) en una configuración NIS.

5
ephemient

¿Por qué molestarse en escribir gzip -dc foo.tar.gz | tar xf - cuando tar xzf foo.tar.gz generará el descompresor para usted?

Yendo aún más lejos ... ¿por qué molestarse en escribir tar xzf foo.tar.gz o tar xjf foo.tar.bz2 cuando GNUtar detectará automáticamente la compresión? tar xf foo.tar.(gz|bz2) simplemente funciona mágicamente.

5
ephemient

No estoy seguro de si esto debería ser una respuesta o simplemente una edición de la pregunta.

Antes de usar menos como reemplazo de la cola, puede buscar algo "/ search_string" y luego invocar el comando Seguir (shift-F). Ahora se resaltará cualquier "search_strings" que se desplace por. Esto es útil para cuando está escaneando un grupo de resultados de programa o registros y está buscando una cadena o patrón en particular.

¡No olvides que también puedes usar expresiones regulares!

5
Harvey

ifconfig y iwconfig están en desuso a favor de ip que es una herramienta extremadamente poderosa para mostrar/manipular enrutamiento, dispositivos, enrutamiento de políticas y túneles.

5
Federico

Realmente me gusta localizar como sustituto de find, que es mucho más fácil de usar "localizar filepattern" que "find/-name filepattern -print", y más eficiente porque usa una base de datos de índice.

Debe tener el comando updatedb ejecutado en un horario para actualizar la base de datos de localización; Verifique la página del manual de su distro para detalles.

4
gareth_bowles

tmux sobre screen. tmux es mucho más fácil de configurar, ni siquiera es divertido.

4
bajafresh4life

echo podría seguir usándose solo con argumentos triviales, de lo contrario, su comportamiento podría ser impredecible. Para todos los demás fines (caracteres de control, supresión de nueva línea, formato), ha sido obsoleto por el comando printf muy poderoso y consistente.

4
jlliagre

La Perl Pie : Perl -pi -e 's/foo/bar/' en lugar de sed 's/foo/bar/', con la mucho más potente perlre sintaxis. (No es un reemplazo total, ya que las expresiones regulares de Perl se usan, por ejemplo, ? en lugar de \?.)

4
Jo Liss

Me parece que wcalc es un buen reemplazo para bc

3
Draemon

innotail

Como la cola, pero usa la notificación de cambio de archivo inotify en lugar de sondear el sistema de archivos. Hace que el desplazamiento se vea más suave.

2
jds

Pero, menos aún no es un reemplazo para 'tail -f'. Si necesita filtrar un registro en tiempo real para una prueba en vivo, menos no vencerá 'tail -f | grep xxxxx '.

2
MadCoder

No estoy seguro de si es un reemplazo perfecto, pero "xtail" es una mejora realmente agradable en "tail".
Puede monitorear múltiples archivos al mismo tiempo. Pulsar la tecla de interrupción (comúnmente CTRL + C) le dará un resumen de qué archivos cambiaron por cuánto.

1
Daisuke Shimamoto

Personalmente estaba enfermo al escribir tail -n 1000 ... | cut ... | sort | uniq -c | sort -gr | head para obtener un "top 10 de algo", así que creé logtop, funciona igual, pero está activo: tail -f ... | cut ... | logtop.

Ejemplo típico con registros con la novena columna que es el código de respuesta HTTP:

$ tail -f /var/log/varnish/varnishncsa.log  | awk '{print $9}' | logtop
4096 elements in 6 seconds (682.67 elements/s)
   1 3914 652.33/s 200
   2   74 12.33/s 304
   3   38 6.33/s 301
   4   36 6.00/s 204
   5   15 2.50/s 206
   6    7 1.17/s 302
   7    6 1.00/s 404
   8    5 0.83/s 403
   9    1 0.17/s 401
1
Julien Palard

No sé si esto califica como "desactualizado", pero en mi opinión, awk hace que sed sea completamente redundante.

1
JCCyC

ar (1) archivos; tar casi siempre se usa en su lugar. ar continúa teniendo algunos usos limitados; Los archivos de paquete .deb son en realidad ar archivos, por ejemplo, y las bibliotecas .a utilizadas para la compilación estática son en realidad ar archivos que contienen un montón de archivos de objetos .o.

Esencialmente, en los pocos lugares donde se usa ar, su existencia está oculta.

1
Simon Howard

comprimir: reemplazado por gzip (incluso ahora está disponible en los sistemas Unix tradicionales por defecto). Puede manejar archivos .Z. Más importante aún, gzip es más rápido y crea una salida más pequeña que la compresión.

1
Zathrus

Estoy de acuerdo con MadCoder en que `tail -f 'te permite conectar cosas usando una tubería mientras que menos no puede. Pero menos es más fácil para las sesiones interactivas, que es para lo que está diseñado. Así que estrictamente hablando esto no es un reemplazo.

Pero otras cosas pueden ser. Por ejemplo, vim reemplazó vi y ed virtualmente en cualquier parte del mundo de la PC, nano reemplaza pico (no porque sea mejor sino porque es gratis), mutt y pine básicamente reemplazaron cosas como `mail 'en muchos lugares. Bash ahora es dominante y reemplazado sh. La lista puede seguir y seguir para siempre :)

0
PolyThinker