Crontab tarafından açılan bu editör nedir?


41

Crontab'ı düzenlemek istiyorum. Vi olması gerekiyordu, ama görebileceğiniz gibi değil:

root@euve252628:~# crontab -e

0

0 * * * * /var/www/vhosts/nevemind-what-webs/httpdocs/megacronstunde.php

?

:wq

?

Evet, bana bir verdi ?. Ve neden bana sıfır veriyor?

A yazıp qtuşuna Enterbastığımda - çıkıyor. Nasıl kurtarılacağını bilmem gerekiyor, çünkü klasik Vi değil.


5
Büyük olasılıkla ed: varsayılan olarak, bir karakter sayımı verir (Debian tabanlı sistemlerde genellikle 888ilk kez, "boş" crontab şablonundaki karakter sayısıdır). 0 sayısını görüyorsanız, bunu değiştirmiş olmanız gerekir. Bkz crontab -e komutunu düzgün çalışmıyor
steeldriver

31
ed, dostum! ! man ed: gnu.org/fun/jokes/ed-msg.html
17:17

6
@juhist Aksine bir yorum daha bu olmalıdır cevap.
tatlı

1
Genellikle EDITORbaşka bir şeyi geçersiz kılmak istemenize rağmen , gerçekten ed kullanmakla ilgileniyorsanız, bu harika bir giriş: sanctum.geek.nz/arabesque/actually-using-ed
Xiong Chiamiov

@justme, bu arada, StackExchange'e hoş geldiniz! Sorunuzu en iyi cevaplayan bir cevap bulursanız, yanındaki onay işaretine tıklayarak kabul edebilirsiniz.
JoL,

Yanıtlar:


65

Yani en ed

Varsayılan olarak onun istemi boş dizedir. Çıkmak istiyorsanız, sadece girin q. Önek etmeyin :. Kaydedilmemiş değişiklikleriniz varsa, cevap verecektir ?. Bunu "emin misiniz?" Olarak yorumlayabilir ve qyeniden komut vererek onaylayabilirsiniz . Bu arada anlamadığı herhangi bir komut da cevap vermesine neden olacaktır ?. Bildiği tek hata mesajı bu.

Onun komutlar ne vim / vi / ex / sed dayanmaktadır komutlar gibi bu yüzden g/re/p, %s/vi/&m/g, 1,3d, /pattern/,$d, w, q, wqsadece vim gibi çalışır.

i, Gibi komutlar ave cekleme moduna gidin. Ekleme modundan çıkmak ve komut moduna geri dönmek için, sadece a olan bir satıra girin .. Başka bir satıra "taşımak" için, sadece satır numarasını, mevcut satırdan bir ofset +2veya -1o satıra gitmek için komut olarak bir regex girin. .komut modunda geçerli satır anlamına gelir. Nerede olduğunuzu bilmek için kullanabilirsiniz. $son satır anlamına gelir.

Bu arada, bu konuda daha fazla bilgi edinmek istiyorsanız, bu Linux'ta bir GNU programı olması, belgelerinin çoğu info edyerine man ed.

Yorum eklenmiş (ed tarafından kabul edilmez) örnek bir oturum:

$ ed
i                    # insert (on current line)
vi
.                    # end insert
%s/vi/&m/g           # substitute vi for vim globally in all lines
i                    # insert (on current line)
first line
.                    # end insert
$a                   # append on last line
last line
.                    # end insert
%p                   # print all lines
first line
vim
last line
2                    # move to line 2 and print it
vim
/line                # move forward to line matching /line/ and print it
last line
-1                   # move 1 line backwards and print it
vim
?line                # move backward to line matching /line/ and print it
first line
+1                   # move 1 line forward and print it
vim
g/line/p             # print lines matching /line/ (grep)
first line
last line
p                    # print (current line)
last line
.                    # move to current line and print it
last line
c                    # change (current line)
final line
.                    # end insert
%p                   # print all lines
first line
vim
final line
/vim/,$c             # change from line matching /vim/ to last line
that's all
.                    # end insert
%p                   # print all lines
first line
that's all
wq                   # write and quit
?                    # write what?
h                    # help with last error message
No current filename
wq                   # write and quit to check error message
?
H                    # help with all error messages
No current filename
wq                   # write and quit to check error message
?
No current filename
wq file.txt          # write file.txt and quit
22                   # wrote 22 bytes

DÜZENLEME: grawity bahseder gibi, daha yararlı hata iletileri ile aktif hale getirilebilir hveya H. Ayrıca, ,yerine %bir komut aralığı kısmında "bütün hatlar" başvurmak için resmi bir yoldur ed. GNU’da edbunun için kullanma imkanı %desteklenir ancak infokılavuzda belirtilmemiştir . Kullanımı %tüm hatlar için görünüşte tarafından icat edilmiştir ex, görünüşte çünkü orada, ,araçlar .,.yerine 1,$olduğu gibi ed.

EDIT2: Farklı bir editör belirlemek

Bahsedilen diğer cevaplar gibi, farklı bir editör belirlemek istiyorsanız, bunu EDITORveya VISUALortam değişkenlerini ayarlayarak yapabilirsiniz . İkisi arasındaki fark bu cevapta açıklanmıştır .

Tek bir komut için ayarlamak istiyorsanız, bunu yapabilirsiniz:

EDITOR=vi crontab -e

veya kabuk oturumunda başlatılan tüm programların kullanmasını istiyorsanız:

export EDITOR=vi
crontab -e

Sırasıyla, bash için kullanıcı veya sistem ayarı olmasını istediğinize bağlı olarak exportgirişi ~/.profileveya kaydedebilirsiniz /etc/profile. Bu, editörü ayarlamak için kullanılan unix taşınabilir yöntemidir; Bunu herhangi bir dağıtımda yapabilirsiniz.

Ubuntu'da ayrıca bir update-alternativeskomut var. Geçerli varsayılan düzenleyici ile görülebilir update-alternatives --display editorve update-alternatives --config editorayarlamak için kullanabilirsiniz :

$ sudo update-alternatives --config editor
There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode.

2
Modern versiyonlar İngilizce hata mesajlarını bilir, sadece honlardan istemek (veya Hkalıcı olarak etkinleştirmek) için kullanmanız gerekir .
Grawity

2
(Ayrıca, eski bir buluş %olarak görünmektedir . Resmi olarak ed , bazı sürümler de kabul etse bile, tüm satırları ifade eder .),%
Grawity

Bu doğru değil, aynı zamanda belirtmeliyiz EDITORve VISUALçevre değişkenleri.
chrylis -on grev-

Komutların çoğu edaynıdır vi":" İlk grafik düzenleme modundan çıkmak için, basına gerekmez hariç. "Gerçek programcılar" GUI'leri kullanarak zaman kaybetmediğinde Unix'i öğrendim - 80x25 "yeşil ekran" terminali, düzenleme için neredeyse bir IBM 029 kart delici gibi çalışıyor , fakat tam olarak değil;)
alephzero

@ chrylis EDITORve VISUALgerçekten o kadar alakalı değil. Asıl soru şuydu: Bu editör nedir ve nasıl kullanırım? (Bu 0ve bu nedir ?ve nasıl tasarruf edebilirim?).
JoL,

39

Bu editörün ne olduğunu nasıl öğrenebilirim?

Ctrl+ Tuşlarına basın Z. Bu editörü askıya alır ve size bir kabuk istemi verir. Komut isteminde, psbu terminalde hangi işlemlerin çalıştığını görmek için çalıştırın.

bash-4.3$ crontab -e
1077
^Z
[1]+  Stopped                 crontab -e
bash-4.3$ ps
  PID TTY          TIME CMD
26295 pts/10   00:00:00 bash
26297 pts/10   00:00:00 crontab
26298 pts/10   00:00:00 sh
26299 pts/10   00:00:00 ed
26302 pts/10   00:00:00 ps

bashOrijinal kabuk, olduğu crontabtahmin edilmektedir, shtarafından çağrılan olmalıdır başka kabuk crontabve psçalışır durumda pskomut. O bırakır ed( aynı adı taşıyan paket tarafından sağlanan ).

Editörden nasıl çıkılacağını bulamazsanız, bu noktada kill 26302veya ile öldürebilirsiniz kill %1.

Ed nedir?

Ed, monitörler (sıradan) bir şeydi. İnteraktif çıkış çevrebirimi bir teleprinter olan bilgisayarlar için tasarlanmıştır .

Başlangıçta 0görüntülenen dosyadaki satır sayısıdır. Açıkçası bu önemli bir bilgi.

?bu, Ed'in ne yazdığını anlamadığı anlamına gelir. Satır yazıcıları yavaştır, bu nedenle ed, hata mesajları gibi anlamsız bilgileri görüntülemek için zaman ve mürekkebi boşa harcamaz. Eski bir şaka (kaynağını bilmiyorum) gider:

Ken Thompson'ın tasarıma yardım ettiği bir arabası var. Çoğu otomobilden farklı olarak, ne hız ölçere, ne de gaz ölçere, ne de modern sürücüyü rahatsız eden diğer salak ışıklardan birine sahip değil. Aksine, sürücü bir hata yaparsa, gösterge panelinin ortasında dev bir “?” Yanar. “Tecrübeli sürücü,” diyor Thompson, “genellikle neyin yanlış olduğunu bilir.”

Tecrübesiz hissediyorsanız, komutu H(tüm komutlar ancak biri tek bir harftir (veri argümanlarını saymaz) çünkü) yazmayı sevebilirsiniz) ve hata mesajları alırsınız. Örneğin, sadece basarsanız Enter

?
H
Invalid address

Temizle, değil mi? (Boş bir satır boş komuttur - tek bir harf değildir. Boş komut bir sonraki satıra taşınır ve yazdırır. Dosyanın sonunda iseniz, her zaman boş bir durumda olan dosyada, sonraki satır yok, bu nedenle taşımak istediğiniz adres geçersiz.)

Başka bir editör nasıl alınır

crontabBir metin düzenleyicisi çalıştırmak en komutları gibi komut, çevre değişkenlerini kontrol VISUALve EDITOR(bu sırayla) bir sistem varsayılan geri düşen, kaçak hangi programı karar vermek. Bu değişkenlerden biri olarak ayarlanmışsa eddeğiştirin veya kaldırın.

Ubuntu'da (ve Debian ve diğerleri), sistem varsayılan editörü alternatif mekanizmalarla/etc/alternatives/editor yönetilir . Varsayılan olarak, yüklü olan “en iyi” düzenleyiciyi seçer, burada “en iyi” paket sağlayıcıları tarafından belirlenen öncelikler tarafından tanımlanır. Bir alternatif yapılandırmak için kullanın . Kullanılabilir editörleri ve öncelikleriniupdate-alternatives

update-alternatives --display editor

ed-100 önceliğine sahipken, diğer tüm "mantıklı" editörlerin pozitif bir önceliği vardır, bu nedenle varsayılan olarak kullanılmasının tek yolu herhangi bir editör kurulu değilsedir. Ubuntu'nun varsayılan kurulumu, öncelikli 400 olan varsayılan editör olarak nano'yu kullanır. Alternatif olarak ayarlanmışsa ed,

sudo update-alternatives --config editor

Gilles, Ubuntu’da (ve Debian ve diğerleri), sistem varsayılan editörü / etc / alternative / editörü On Ubuntu’ya (ve Debian ve diğerleri) yeniden yazılmalı mı , sistem varsayılan editörü / usr / bin / editor ?
heemayl

oldukça kapsamlı (EDITOR env değişkeninden bahsetmemek hariç mi? Ama belki bilerek, insanlar sisteme güncelleme alternatifleri kullanarak onu ayarlamak için doğru yolu kullanırlar). Belki de değişebilir: psile pstree -sap $$ ? (hangi düzenleyicinin başlatıldığını bulmak daha kolay, çünkü şimdi bir ağaç biçiminde)
Olivier Dulac

@heemayl /usr/bin/editorbir sembolik bağlantıdır /etc/alternatives/editor. Uygulamaların aradığı gerçeği, /usr/bin/editoratladığım bir detay.
Gilles 'SO- kötü olmaktan vazgeç'

3
@ OliverDulac bahsettim EDITORve VISUAL. Aslında bir editör seçmek için doğru yoldurlar çünkü bu bir sistem tercihi değil bir kullanıcı tercihidir. psİşleri basit tutmak için buraya yapışmayı tercih ederim .
Gilles 'SO- kötülük olmayı'

1
"... etkileşimli çıkışı çevrebirimi bir satır yazıcı olan bilgisayarlar." Bir satır yazıcısı etkileşimli bir cihaz değildi - büyük miktarlarda yazdırılmış çıktı üretmek için nispeten yüksek hızlı (ve pahalı) bir cihazdı. Bir teletip (ayrıca delikli kağıt kaset I / O cihazı olarak da çalışabilir) veya IBM "golfball" daktilo gibi "klavyeli bir baskı terminali" anlamına geliyor.
alephzero

12

Sorunuzdan, varsayılan EDITOR'nuz olmadığı gibi görünüyor vimve mevcut varsayılan editörle ilgili sorunlarınız var.

Aşağıdaki komut varsayılan EDITOR’u vim

export EDITOR=vim

Olmak varsayılan ayarı düzenleyicisi sonra vim, koşu crontab -ekullanacak vimeditörün olarak.

Notlar:

  1. İsterseniz varsayılan düzenleyiciniz olarak farklı EDITOR seçebilirsiniz.
  2. Eğer varsayılan düzenleyici ayarlamak istiyorsanız vimkalıcı, kendi yukarıdaki komut eklemek gerekecek ~/.bashrcya ~/.profileveya benzer dosyaya.

4

Crontab'ı düzenlemek için VI editörünü kullanmak için aşağıdaki komutu kullanın.

EDITOR="vi" crontab -e

veya, gedit, nano, etc. gibi başka bir editörle düzenlemek istiyorsanız, vi'yi editör ismi ile değiştirin.


Milyonlarca teşekkürler! EDITOR = "vi" crontab ile -e çalışır.
sadece

3
@gronostaj Bu, burada gönderilen diğer cevaplarla aynı değildir. Tek bir komutun tek bir çalışması için bir ortam değişkeni ayarlamak, onu geçerli kabuk örneğinden çalıştırılan sonraki tüm komutlar için dışa aktarma ile aynı değildir. Bu cevap , ayarı kalıcı olarak değiştirmek için faydalıdır, ancak çalışma başına editörü kontrol etmek için bu doğru cevaptır.
Eliah Kagan

3
Aslında, değişkenleri kalıcı olarak değiştirmek, komut satırındaki ortam değişkenlerinin nasıl hazırlanacağını bilmek çok önemlidir. * Nix mermilerin dikkat çeken güçlü yönlerinden biri, bunu bu kadar kolay yapabilme yeteneğidir.
Monty Harder
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.