ed

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare
Ed
Ed first lines of man page.png
GNU Ed — primul ecran al paginii sale de manual (pe un sistem de operare GNU/Linux)
Ultima versiune: 0.2 /
Lansarea anterioară: 0.1 /
SO: Unix, GNU/Linux
Tip Editor de text
Licență GPL
Website: http://www.gnu.org

Editorul de texte ed a fost editorul standard pentru sistemul de operare Unix. La origine, ed a fost scris de către Ken Thompson și conține una dintre primele implementări ale expresiilor regulate. Înainte de această implementare, conceptul de expresie regulată a existat doar pe hârtie ca formalism matematic, pe care Ken Thompson l-a citit. ed a fost influențat de un editor mai vechi de la Universitatea Berkeley din California unde a studiat și Ken Thompson, cunoscut sub numele de QED. ed a influențat mai departe editorul ex care la rândul lui a stat la baza editorului vi. Comenzile Unix neinteractive grep și sed au fost și ele inspirate de folosirea comenzilor ed; influența acestor comenzi este vizibilă în felul în care a fost proiectat programul AWK, ce a influențat în anumite aspecte Perl.

Faimos pentru concizia sa, ed aproape că nu are nici un feedback vizual. De exemplu, mesajul produs de ed în cazul unei erori sau când ed avertizează asupra ieșirii fără salvarea modificărilor este „?”. Nu afișează numele fișierului curent și nici numărul liniei curente, nici chiar rezultatele unei schimbări asupra textului, decât dacă i se cere acest lucru. Această concizie era potrivită cu primele versiuni de Unix când consolele erau teleimprimatoare, modemurile erau lente, iar hard discurile și memoriile erau foarte mici. Pe măsură ce aceste „avantaje” evoluau sau ieșau din uz, editoare mai interactive au devenit standard.

În practica uzuală ed este rareori folosit interactiv, dar își găsește utilitatea în unele scripturi pentru interpretoare de comenzi (shell scripturi). Pentru uzul interactiv, ed a fost înglobat în sam, vi și Emacs editoare din anii 1980. Practic, ed poate fi găsit pe fiecare versiune de Unix sau GNU/Linux, fiind astfel folositor pentru aceia care trebuie să lucreze pe diverse versiuni de Unix. Dacă ceva nu merge bine (depanarea sistemului), atunci ed este uneori singurul editor disponibil. Aceasta este adesea singura situație în care ed este folosit interactiv.

Comenzile ed au fost imitate adesea de alte editoare care lucrează linie cu linie. De exemplu, EDLIN în primele versiuni de MS-DOS avea o sintaxă pe undeva asemănătoare sau editoarele de texte din multe jocuri MUD (LPMud și descendenții săi, de exemplu) foloseau o sintaxă de tipul aceleia din ed. Oricum aceste editoare sunt mult mai limitate ca funcționalitate.

Example[modificare | modificare sursă]

Iată un exemplu de sesiune în ed:

Sesiunea de lucru în ed pe un terminal X (sub Linux)
a
ed este editorul de texte standard pentru Unix.
Aceasta este a doua linie.
.
2i
  
.
1,$l
ed este editorul de texte standard pentru Unix.$
$
Aceasta este a doua linie.$
3s/doua/treia/
1,$l
ed este editorul de texte standard pentru Unix.$
$
Aceasta este a treia linie.$
w text
77
q

Rezultatul final este un simplu fișier text care conține următorul text:

ed este editorul de texte standard în Unix.
  
Aceasta este a treia linie.
Verificarea sesiunii de lucru în ed pe un terminal X (sub Linux)

Începând un fișier gol (fără nume), comanda „a” va adăuga text (de la append). De remarcat faptul că toate comenzile ed sunt formate dintr-o singură literă. Comanda „a” pune ed în modul inserare (insert mode), inserând caracterele care urmează până la linia care conține doar un singur punct. Cele două linii care sunt introduse înainte de punctul singur pe linie ajung în fișierul tampon. Comanda „2i” apelează de asemenea modul inserare și va insera textul introdus (în acest caz o singură linie goală) înainte de linia a doua. Toate comenzile pot fi prefixate de un număr de linie pentru a opera pe acea linie.

În comanda „1,$l”, l vine de la comanda de listare (list). Comanda este prefixată de un interval, două numere de linii separate de virgulă („$” înseamnă ultima linie). În schimb, ed va lista toate liniile, de la prima la ultima. Aceste linii sunt terminate cu semnul dolar, pentru a fi clar vizibil spațiul liber de la sfârșitul liniilor (dacă ar fi cazul).

Eroarea din linia 3 este corectată prin comanda „3s/doua/treia/” prin comanda „s” de la substituție (substitution). „3” va aplica această comandă la linia corespunzătoare, iar după comandă urmează textul care trebuie înlocuit, iar apoi textul cu care va fi înlocuit. Sunt listate apoi toate liniile cu comanda „1,$l”, astfel că acum este arătat textul corect.

„w text” scrie conținutul din tampon în fișierul text. Acestei comenzi i se răspunde cu 77 numărul caracterelor scrise în fișier. „q” va termina sesiunea ed.

Bill Joy, vi și ed[modificare | modificare sursă]

În războiul editoarelor, susținătorii Emacs obișnuiau să spună „până și Bill Joy nu mai folosește vi.”

Într-un interviu din 1985 Bill Joy a explicat că la Sun el folosea un program de publicat pentru desktop aflat la începuturi, numit Interleaf; când a vizitat laboratoarele din afara firmei Sun, a folosit vechiul ed. Deși vi era bun aproape la orice, nu se putea baza pe versiunea locală pentru a lucra așa cum era obișnuit. În schimb ed nu a fost niciodată modificat, astfel că putea conta pe el că merge fără să se facă de râs.

Vezi și[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]

 v  d  m  Programe în linia de comandă pentru Unix (mai multe)
Management de fișiere: cat | cd | chmod | chown | chgrp | cksum | cmp | cp | du | df | file | fsck | ln | ls | lsof | mkdir | mount | mv | pwd | rm | rmdir | split | touch
Management de procese: at | chroot | cron | exit | kill | killall | nice | pgrep | pidof | pkill | ps | pstree | sleep | time | top | wait
Management utilizator/mediu: env | finger | id | mesg | passwd | su | sudo | uname | uptime | w | wall | who | whoami | write
Procesare text: awk | comm | cut | ed | ex | fmt | head | iconv | join | less | more | paste | sed | sort | tac | tail | tr | uniq | wc | xargs
Programare Shell: basename | echo | expr | false | printf | test | true | unset Imprimare:
lp
Communicații:
inetd | netstat | ping | rlogin | traceroute
Căutare:
find | grep | strings
Diverse:
banner | bc | cal | dd | man | size | yes