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 ser888
la 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 correctamenteEDITOR
algo más, si está interesado en usar ed, esta es una gran introducción: sanctum.geek.nz/arabesque/actually-using-edRespuestas:
Eso es
ed
Por 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 ordenarq
nuevamente. 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
,wq
funcionan igual que vim.Los comandos como
i
,a
yc
entran 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+2
o-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 ed
lugar 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
h
oH
. 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 elinfo
manual. 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
EDITOR
oVISUAL
variables 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
export
en~/.profile
o/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-alternatives
comando. El editor predeterminado actual se puede ver conupdate-alternatives --display editor
, y puede usarupdate-alternatives --config editor
para configurarlo:fuente
h
para solicitarlos (oH
para habilitarlos permanentemente).%
parece ser un ex invención Oficialmente. Ed usos,
para significar todas las líneas, aunque algunas versiones aceptan%
también.)EDITOR
yVISUAL
variables de entorno.ed
son 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;)EDITOR
yVISUAL
realmente no son tan relevantes. La pregunta era básicamente: ¿qué es este editor y cómo lo uso? (¿Qué es esto0
y 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
ps
para ver qué procesos se están ejecutando en este terminal.bash
es el shell original,crontab
se espera,sh
es otro shell que debe haber sido invocado porcrontab
, yps
es elps
comando 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 26302
okill %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
0
se 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
crontab
comando, como la mayoría de los comandos que ejecutan un editor de texto, verifica las variables de entornoVISUAL
yEDITOR
(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-alternatives
para configurar una alternativa. Puede mostrar los editores disponibles y sus prioridades coned
tiene 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
ps
conpstree -sap $$
? (es más fácil saber qué editor se lanzó, ya que ahora está en formato de árbol)/usr/bin/editor
es un enlace simbólico a/etc/alternatives/editor
. El hecho de que las aplicaciones llamen/usr/bin/editor
es un detalle que omití.EDITOR
yVISUAL
. 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 quedarmeps
aquí 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
vim
Después de configurar el editor predeterminado para que se
vim
ejecute,crontab -e
se usarávim
como editor.Notas:
vim
forma permanente, que tendrá que añadir el comando anterior a su~/.bashrc
o~/.profile
o 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