Eu quero editar o crontab. Supõe-se que seja Vi, mas não é, como você pode ver:
root@euve252628:~# crontab -e
0
0 * * * * /var/www/vhosts/nevemind-what-webs/httpdocs/megacronstunde.php
?
:wq
?
Sim, isso me deu a ?
. E por que isso me dá um zero?
Quando digito a qe pressiono Enter- ele fecha. Eu preciso saber como economizar, porque não é um Vi clássico.
cron
text-editor
apenas eu
fonte
fonte
ed
: por padrão, fornece uma contagem de caracteres (que em sistemas baseados no Debian é tipicamente888
a primeira vez, sendo o número de caracteres no modelo "vazio" do crontab). Se você estiver vendo uma contagem de 0, deve ter modificado isso. Veja comando crontab -e não está funcionando corretamenteEDITOR
outra coisa, se estiver realmente interessado em usar ed, esta é uma ótima introdução: sanctum.geek.nz/arabesque/actually-using-edRespostas:
Isso é
ed
Por padrão, seu prompt é a string vazia. Se você quiser sair, basta entrar
q
. Não prefixe com:
. Se você tiver alterações não salvas, ele responderá com?
. Você pode interpretar isso como "você tem certeza?" E confirmar comandandoq
novamente. A propósito, qualquer comando que ele não entenda também fará com que ele responda?
. Essa é a única mensagem de erro que ele conhece.Seus comandos são o que vim / vi / ex / sed baseia-se, por isso, comandos como
g/re/p
,%s/vi/&m/g
,1,3d
,/pattern/,$d
,w
,q
,wq
funcionam como vim.Comandos gosto
i
,a
ec
entrar em modo de inserção. Para sair do modo de inserção e voltar ao modo de comando, basta inserir uma linha que possui apenas a.
. Para "mover" para outra linha, basta digitar o número da linha, um deslocamento da linha atual como+2
or-1
ou um regex como um comando para ir para essa linha..
significa linha atual no modo de comando. Você pode usá-lo para saber onde você está.$
significa última linha.A propósito, se você quiser aprender mais sobre isso, como este é um programa GNU no linux, a maioria de sua documentação está no
info ed
lugar deman ed
.Aqui está uma sessão de exemplo, com comentários adicionados (não aceitos pelo ed):
EDIT: Como menciona grawity, mensagens de erro mais úteis podem ser ativadas com
h
ouH
. Além disso, em,
vez de%
no intervalo, parte de um comando é a maneira oficial de se referir a "todas as linhas" emed
. No GNUed
, a possibilidade de usar%
para isso é suportada, mas não mencionada noinfo
manual.%
Aparentementeex
, o uso de para todas as linhas foi inventado , aparentemente porque, ali,,
significa.,.
mais do que1,$
gostared
.EDIT2: Definindo um editor diferente
Como outras respostas mencionadas, se você desejar especificar um editor diferente, poderá fazê-lo configurando as variáveis de ambiente
EDITOR
ouVISUAL
. A diferença entre os dois é explicada nesta resposta .Você pode fazer isso assim se desejar configurá-lo para um único comando:
ou assim, se você quiser que todos os programas iniciados na sessão shell o usem:
Você pode salvar o
export
in~/.profile
ou/etc/profile
, dependendo se desejar que ele seja uma configuração de usuário ou sistema para o bash, respectivamente. Essa é a maneira portátil unix de definir o editor; você pode fazer isso em qualquer distribuição.No Ubuntu, também há o
update-alternatives
comando. O editor padrão atual pode ser visto comupdate-alternatives --display editor
, e você pode usáupdate-alternatives --config editor
-lo para configurá-lo:fonte
h
pedir para solicitá-las (ouH
ativá-las permanentemente).%
parece ser um ex invenção oficialmente. Ed usos,
para significar todas as linhas, mesmo que algumas versões aceitar%
bem.)EDITOR
eVISUAL
.ed
é igual a invi
, exceto que você não precisa pressionar ":" primeiro para sair do modo de edição gráfica. Eu aprendi Unix quando "programadores reais" não perdeu tempo usando GUIs - um 80x25 "tela verde" funciona terminais quase , bem como um perfurador cartão de IBM 029 para editar, mas não completamente;)EDITOR
eVISUAL
não são realmente relevantes. A questão era basicamente: o que é esse editor e como eu o uso? (o que é isso0
e isso?
, e como eu salvo?).Como descobrir o que é este editor
Pressione Ctrl+ Z. Isso suspende o editor e fornece um prompt de shell. No prompt, execute
ps
para ver quais processos estão em execução neste terminal.bash
é o shell original,crontab
é esperado,sh
é outro shell que deve ter sido chamadocrontab
eps
é ops
comando running . Isso saied
(fornecido pelo pacote com o mesmo nome ).Se você não conseguir descobrir como sair do editor, poderá matá-lo neste momento, com
kill 26302
oukill %1
.O que é ed?
Ed é um editor antigo, que data de antes dos monitores serem uma coisa (comum). Foi projetado para computadores cujo periférico de saída interativa era um teleprinter .
O que
0
é exibido no início é o número de linhas no arquivo. Evidentemente, essa é uma informação importante.?
significa que ed não entendeu o que você digitou. As impressoras em linha são lentas, portanto, a edição não desperdiça tempo e tinta para exibir informações inúteis, como mensagens de erro. Uma piada antiga (não sei a origem) diz:Se você se sentir inexperiente, poderá emitir o comando
H
(todos os comandos, exceto um, são uma única letra (sem contar os argumentos dos dados), porque quem gosta de digitar) e receberá mensagens de erro. Por exemplo, se você pressionar Enter…Claro, não é? (Uma linha vazia é o comando vazio - aquele que não é uma única letra. O comando vazio passa para a próxima linha e a imprime. Se você estiver no final do arquivo, que é sempre o caso em um vazio arquivo, não há linha seguinte; portanto, o endereço para o qual você solicitou a mudança é inválido.)
Como obter outro editor
O
crontab
comando, como a maioria dos comandos que executam um editor de texto, verifica as variáveis de ambienteVISUAL
eEDITOR
(nessa ordem) para decidir qual programa executar, retornando ao padrão do sistema. Se uma dessas variáveis estiver configurada comoed
, altere-a ou remova-a.No Ubuntu (e Debian e outros), o editor padrão do sistema é
/etc/alternatives/editor
, que é gerenciado através do mecanismo de alternativas . Por padrão, ele escolhe o melhor editor instalado, onde o melhor é definido pelas prioridades definidas pelos mantenedores de pacotes. Useupdate-alternatives
para configurar uma alternativa. Você pode exibir os editores disponíveis e suas prioridades comed
tem a prioridade -100, enquanto todos os outros editores “sensíveis” têm uma prioridade positiva, portanto, a única maneira de ser usada por padrão é se nenhum editor tiver sido instalado. Uma instalação padrão do Ubuntu usa o nano como editor padrão, com prioridade 400. Se a alternativa foi definida comoed
, você pode alterá-lo comfonte
ps
compstree -sap $$
? (mais fácil de descobrir qual o editor foi lançado, como é agora em formato de árvore)/usr/bin/editor
é um link simbólico para/etc/alternatives/editor
. O fato de os aplicativos ligarem/usr/bin/editor
é um detalhe que eu pulei.EDITOR
eVISUAL
. Na verdade, eles são a maneira correta de escolher um editor, pois essa é uma preferência do usuário, não uma preferência do sistema. Eu prefiro ficarps
aqui para manter as coisas simples.Da sua pergunta, parece que o seu EDITOR padrão não é
vim
e você tem problemas com o editor padrão atual.O comando abaixo definirá o EDITOR padrão como
vim
Depois de definir o editor padrão
vim
, a execuçãocrontab -e
será usadavim
como seu editor.Notas:
vim
permanentemente, precisará adicionar o comando acima ao seu arquivo~/.bashrc
ou~/.profile
ou similar.fonte
Para usar o editor VI para editar o crontab, use o comando abaixo.
ou, se você quiser editar com outro editor, como gedit, nano, etc., basta substituir vi pelo nome do editor.
fonte