Quiero editar crontab. Se supone que es Vi, pero no lo es, como puede ver:
root@euve252628:~# crontab -e
0
0 * * * * /var/www/vhosts/nevemind-what-webs/httpdocs/megacronstunde.php
?
:wq
?
Sí, me dio un ?. ¿Y por qué me da un cero?  
Cuando escribo a qy presiono Enter, se cierra. Necesito saber cómo ahorrar, porque no es Vi clásico.
                    
                        cron
                                text-editor
                                
                    
                    
                        solo yo
fuente
                
                fuente

ed: de forma predeterminada, proporciona un recuento de caracteres (que en los sistemas basados en Debian suele ser888la primera vez, es el número de caracteres en la plantilla crontab "vacía"). Si está viendo un recuento de 0, debe haber modificado eso. Ver comando crontab -e no funciona correctamenteEDITORalgo más, si está interesado en usar ed, esta es una gran introducción: sanctum.geek.nz/arabesque/actually-using-edRespuestas:
Eso es
edPor defecto, su mensaje es la cadena vacía. Si desea dejar de fumar, simplemente ingrese
q. No prefijas con:. Si tiene cambios sin guardar, responderá con?. Puede interpretar eso como "¿está seguro?" Y confirmar al ordenarqnuevamente. Por cierto, cualquier comando que no entienda también hará que responda?. Ese es el único mensaje de error que conoce.Sus comandos son lo que vim / vi / ex / SED se basa en, por lo que los comandos como
g/re/p,%s/vi/&m/g,1,3d,/pattern/,$d,w,q,wqfuncionan igual que vim.Los comandos como
i,aycentran en modo de inserción. Para abandonar el modo de inserción y volver al modo de comando, introduzca una línea que tiene sólo una.. Para "moverse" a otra línea, simplemente ingrese el número de línea, un desplazamiento de la línea actual como+2o-1, o una expresión regular como un comando para ir a esa línea..significa línea actual en modo comando. Puedes usarlo para saber dónde estás.$significa última línea.Por cierto, si desea obtener más información al respecto, al tratarse de un programa GNU en Linux, la mayor parte de su documentación se encuentra en
info edlugar deman ed.Aquí hay una sesión de ejemplo, con comentarios agregados (no aceptados por ed):
EDITAR: como menciona Grawity, se pueden activar mensajes de error más útiles con
hoH. Además, en,lugar de%en el rango, la parte de un comando es la forma oficial de referirse a "todas las líneas" ened. En GNUed, la posibilidad de usar%para esto es compatible pero no se menciona en elinfomanual. El uso de%para todas las líneas aparentemente fue inventado porex, aparentemente porque, allí,,significa.,.más que1,$como ened.EDIT2: configuración de un editor diferente
Al igual que otras respuestas mencionan, si desea especificar un editor diferente, puede hacerlo mediante el establecimiento de las
EDITORoVISUALvariables de entorno. La diferencia entre los dos se explica en esta respuesta .Puede hacerlo así si desea configurarlo para un solo comando:
o de esta manera si desea que todos los programas iniciados en la sesión de shell lo usen:
Puede guardar el
exporten~/.profileo/etc/profile, dependiendo de si usted quiere que sea un ajuste de usuario o sistema para bash, respectivamente. Esa es la forma portátil de Unix de configurar el editor; Puedes hacer esto en cualquier distribución.En Ubuntu, también existe el
update-alternativescomando. El editor predeterminado actual se puede ver conupdate-alternatives --display editor, y puede usarupdate-alternatives --config editorpara configurarlo:fuente
hpara solicitarlos (oHpara habilitarlos permanentemente).%parece ser un ex invención Oficialmente. Ed usos,para significar todas las líneas, aunque algunas versiones aceptan%también.)EDITORyVISUALvariables de entorno.edson los mismos que envi, excepto que no tiene que presionar ":" primero para salir del modo de edición gráfica. Aprendí Unix cuando los "programadores reales" no perdieron el tiempo usando interfaces gráficas de usuario: un terminal de "pantalla verde" de 80x25 funciona casi tan bien como un punzón de tarjeta IBM 029 para la edición, pero no del todo;)EDITORyVISUALrealmente no son tan relevantes. La pregunta era básicamente: ¿qué es este editor y cómo lo uso? (¿Qué es esto0y esto?, y cómo ahorro?).Cómo averiguar qué es este editor
Presione Ctrl+ Z. Esto suspende el editor y le da un indicador de shell. En el indicador, ejecute
pspara ver qué procesos se están ejecutando en este terminal.bashes el shell original,crontabse espera,shes otro shell que debe haber sido invocado porcrontab, ypses elpscomando en ejecución . Eso se vaed(proporcionado por el paquete del mismo nombre ).Si no puede encontrar la manera de salir del editor, puede eliminarlo en este momento, con
kill 26302okill %1.¿Qué es ed?
Ed es un editor antiguo, que data de antes de que los monitores fueran algo (común). Fue diseñado para computadoras cuyo periférico de salida interactivo era una teleimpresora .
El que
0se muestra al principio es el número de líneas en el archivo. Evidentemente, esa es información importante.?significa que ed no entendió lo que escribiste. Las impresoras lineales son lentas, por lo que ed no pierde tiempo ni tinta para mostrar información inútil, como mensajes de error. Un viejo chiste (no sé el origen) dice:Si no tiene experiencia, puede emitir el comando
H(todos los comandos menos uno son una sola letra (sin contar los argumentos de datos), porque a quién le gusta escribir), y recibirá mensajes de error. Por ejemplo, si solo presiona Enter...Claro, ¿no es así? (Una línea vacía es el comando vacío, el que no es una sola letra. El comando vacío se mueve a la siguiente línea y la imprime. Si está al final del archivo, que siempre es el caso en un vacío archivo, no hay una línea siguiente, por lo que la dirección a la que solicitó moverse no es válida).
Cómo conseguir otro editor
El
crontabcomando, como la mayoría de los comandos que ejecutan un editor de texto, verifica las variables de entornoVISUALyEDITOR(en ese orden) decide qué programa ejecutar, volviendo a los valores predeterminados del sistema. Si alguna de estas variables está establecida ened, cámbiela o elimínela.En Ubuntu (y Debian y otros), el editor predeterminado del sistema es
/etc/alternatives/editor, que se administra a través del mecanismo de alternativas . Por defecto, elige el "mejor" editor que está instalado, donde "mejor" se define por las prioridades establecidas por los encargados del mantenimiento del paquete. Useupdate-alternativespara configurar una alternativa. Puede mostrar los editores disponibles y sus prioridades conedtiene la prioridad -100, mientras que todos los demás editores "sensibles" tienen una prioridad positiva, por lo que la única forma en que se usaría por defecto es si no se ha instalado ningún editor. Una instalación predeterminada de Ubuntu usa nano como editor predeterminado, con prioridad 400. Si la alternativa se ha configurado ened, puede cambiarlo confuente
psconpstree -sap $$? (es más fácil saber qué editor se lanzó, ya que ahora está en formato de árbol)/usr/bin/editores un enlace simbólico a/etc/alternatives/editor. El hecho de que las aplicaciones llamen/usr/bin/editores un detalle que omití.EDITORyVISUAL. De hecho, son la forma correcta de elegir un editor ya que esta es una preferencia del usuario, no una preferencia de todo el sistema. Prefiero quedarmepsaquí para mantener las cosas simples.Según su pregunta, parece que su EDITOR predeterminado no lo es
vim, y tiene problemas con el editor predeterminado actual.El siguiente comando establecerá el EDITOR predeterminado como
vimDespués de configurar el editor predeterminado para que se
vimejecute,crontab -ese usarávimcomo editor.Notas:
vimforma permanente, que tendrá que añadir el comando anterior a su~/.bashrco~/.profileo similares archivo.fuente
Para usar el editor VI para editar crontab, use el siguiente comando.
o, si desea editar con otro editor como gedit, nano, etc., simplemente reemplace vi con el nombre del editor.
fuente