Category Archives: Linux

Dot files

C’è qualcuno che sta sbagliando su Twitter, siwoti per usare un termine tecnico.

Ma forse (anzi molto probabilmente) sono solo io che non sono più in sintonia con il mondo, in particolar modo con quelli che abbandonano i blogs (davvero stanno morendo questa volta?) e quelli che sui social-cosi (Twitter, il mio preferito, quasi l’unico che frequento) postano cose –corrette, non sto dicendo che non lo sono– che possono essere male interpretate dai ggiovani o dai nuovi (o dai possibili) linuxiani.

Come questo post di mcc che ha avuto ben 1600 retweets e tanti commenti interessanti:

  • Remember not to fix the bug or you will erase 50 years of unix history
  • I recently learned that 1. in Windows there are “super-hidden” files, and 2. Explorer has a VERY SIMILAR bug with filenames starting with ~
  • To be fair, every feature in Windows 10 is actually just a bug in NT4
  • Just learned that : has the same functionality on NTFS (albeit for a completely different reason) [pro tip, CIA, Vault7]

Molto interessante la McClure (111), molte cose ontehtoobz, anche un interesse simile (top secret, per ora).

Tornando invece ai dotfiles un paio di cose.

Sono un argomento ricorrente, di solito si cita questo post di Rob Pike (l’ho fatto anch’io tanti anni fa, in questo blog) e Rob ne parla per via che Plan 9 si comporta diversamente. Ma Plan 9 non è diventato come nelle intenzioni dei suoi creatori il successore di Unix. Conosco chi l’ha usato per qualche tempo ma, mi sembra, solo perché doveva; adesso usa qualcosa ancora di peggio, ma non posso contarvi (cioè non ne so niente, nada, zilch). Sono sicuro che Linux non sarà il sistema operativo definitivo, qualcuno riuscirà –incredibile ma vero– a fare di meglio. Android e Quello_della_Mela_Morsicata sono solo prove preliminari, vedrete (voi ggiovani) 😉

Di solito è comodo che siano nascosti, ma nel gestore dei files (Nautilus, Nemo o equivalenti) posso visualizzarli/nasconderli con Ctrl-H.

Ancora meglio per il terminale, esiste l’opzione -a (o --all): non nasconde le voci che iniziano con punto (.).
Di solito è OK che stiano nascosti, per esempio la mia home sarebbe troppo lunga:

E poi c’è il motivo vero, la ragione di questo post. I blogs forse stanno morendo (si dice da tempo, magari questa volta è vero) ma per me non vale. Continuerò (probabimente) a scrivere, cose che interessano me e (quasi sicuramente) solo me. Per esempio linguaggi di programmazione sexy, anche se non usati (come Coconut, l’anno scorso). È il mio hobby preferito.

:mrgreen:

Cinguettii dal Linux Day

ld16

Niente, me lo sono perso. In attesa di video che certo attiveranno ecco una rassegna di tweets catturati con una punta di rimpianto 😀

Davvero ora di guarire, tornare pimpante per poter esserci l’anno prossimo, nèh! 😉

Alias o funzione o script?

codiceatlantico_0010
OK, io sono poco metodico e quando mi accorgo di continuare a usare frequentemente un comando sono tentato di creare un alias.
Poi capita che compare su Twitter una cosa che sapevo già, questa: For almost every purpose, shell functions are preferred over aliases.

Forse è il caso di approfondire, finalmente, sono decenni che rimando, ho cominciato con Unix, anzi prima ancora con il Pr1me, dove c’era abbrev, abbreviabile in ab. E gli script (chiamati command files) si potevano fare sia in Primos che in CPL (command process language) quando diventavano più impegnativi (potevi usare le variabili).

Rapida googlata ed ecco cosa ho trovato:

Quindi…
mi sa che non sono poi messo così male.
Attualmente ho definito qualche funzione (risultano tutte piuttosto lunghe) e ~20 aliases in ~/.bashrc. Ho poi ~40 scripts in ~/bin.
Per compiti particolari ho scripts sparsi in altre directories che posso aggiungere a PATH via una combinazione di un alias:

alias agpa='source ~/bin/ag_pa'

e  uno script (~/bin/ag_pa):

#!/bin/bash
export PS1="* \e[1;33m\W $ \e[m"
export PATH=$PWD:$PATH
echo $PATH

Ma il post non sarebbe completo se non lo personalizzassi.
La funzione di cui sono più orgoglioso l’ho raccontata qui: J una nuova utility vecchia di 30+ anni.

Da allora è un po’ cambiata, nuove opzioni. L’aggiornamento principale è per il caso di default:

*) cat ~/.Jd ;;

Oltre che spostarsi su e giù per le directories fa anche altre cose, per esempio

yt) xdg-open https://www.youtube.com/ ;;

apre un tab con YouTube nel browser.

Per gli scripts la situazione è più complessa. Sono un seguace da sempre di un lavoro fondamentale di John Ousterhout, Scripting: Higher Level Programming for the 21st Century, vecchio, dello scorso millennio addirittura, ma sempre attuale (secondo me) 😀

Più della metà degli script in ~/bin non sono scripts Bash bensì Python, Racket (1, copiato), newLISP (2, superstiti, una volta erano di più), altri Lisp (mezza dozzina), AWK, … Il meccanismo della shebang, la prima riga, quella che per Bash è #!/bin/bash è una cosa fantastica di quelle che mancano a Windows. Ecco Windows: per ragioni di compatiilità spesso uso Python al posto di Bash, sed, AWK, grep per averlo anche di là (con modifiche). Sono atipico? fregaca who cares! 😀

Ah gli aliases: sono molto comodi, per esempio

alias ipy='ipython3 --no-banner --no-confirm-exit'
alias roc='octave -q --no-gui'
alias rre='racket -il xrepl'

Ah! ‘na roba che non tutti sanno: come tutti (kwasy) ho

alias ls='ls --color=auto'

ma alle volte il colore può essere inappropriato; e allora:

no-al

Ah! ‘ncora na roba: certe operazioni si possono fare solo con le funzioni (o sono comunque molto più semplici). Per esempio cambiare directory (come in J) perché la funzione viene eseguita nell’ambiente  corrente mentre lo script ne crea uno nuovo che termina con la fine dello script. Tutto raccontato negli URL elencati.

:mrgreen:

L’ecosistema, Racket e un tutorial

Tin_Woodman
Un post che ho scritto e poi riscritto (stravolgendolo) in seguito a un colloquio con un ex-collega Mr.X che rockz 😀
Inizialmente c’era solo la parte Racket –una delle mie passioni– ma quando Mr.X ha letto la bozza mi ha indotto a cambiare qualcosa, adesso vi conto.

Ci sono cose belle (sexy) ma spesso capita di doverne usare altre perché si usano quelle; cioè dove lavori tutti usano quelle.
Mr.X parla in questo caso di ecosistema. E per lui l’ecosistema e Windows, sempre più 10 ma con ancora qualche 7. E per i linguaggi quelli ammessi sono pochissimi, in funzione del task, si potrebbe parlare di sub-ecosistema. Per esempio per il Web solo HTML, CSS, JavaScript. JavaScript (come NodeJs) potrebbe essere usato anche da se. Altrimenti Java. O il VisualBasic. Assolutamente niente altro, meno che mai Lisp, linguaggi funzionali di moda solo nei blog ma non nella pratica. Ah! niente Python, a meno che usi solo quello, ma non per il Web.
E siccome tutti usano Windows niente Linux.

Ovviamente non sono d’accordo ma riporto questa opinione, credo anzi di approfondire l’argomento in futuro.
Altrettanto ovviamente continuerò peraltro a occuparmi anche delle cose che i piacciono, anche –e specie se– sono fuori della lista delle cose approvate. Per esempio Coconut, Haskell (forse, in futuro) e Racket. Ecco ero partito con Racket, questo che segue.

prl
Twitter vi fornisce consigli e suggerimenti che voi non tweeps non potete minimamente immaginare. Tutto sta nella scelta a chi followare e poi la magia segue, gratis 😀

Comincio dal suggerimento più semplice (e fondamentale): il blog Inside PRL è da seguire. Obbligatorio (se volete, nèh!). Forse non tutti sanno che PRL sta per Programming Research Laboratory e fa parte del College of Computer and Information Science della Northeastern University, quella di Racket, nella città più sexy del Universo.

Nel blog –c’è altro ma devo ancora perlustrare– c’è questo Tutorial: Zero to Sixty in Racket. È per via di questo post che ho scoperto il blog, via questo cinguettio.
Uh! a proposito di @racketlang per me ha 17 Followers you know (su un totale di 220 (circa, numero soggetto a variazioni come il meteo).

OK, vengo al post di Ben Greenman: Racket is excellent for incrementally growing scripts into full-fledged programs. This post steps through the evolution of one small program and highlights the Racket tools that enable incremental advances… E continua, mica posso copiare tutto 😳

Il compito che si pone è un indice KWIC (se non sapete cos’è un motivo in più per andarci, e protrete dire TIL KWIC), roba che secondo la letteratura richiede parecchio tempo (e poi ci sarebbe la Legge di Hofstadter che Ben colpevolmente non cita) ma c’è anche Yannis e –OK, 20 minuti dice Ben.

Siccome Ben è OK da per scontato che l’aspirante racketeer usi l’ambiente integrato, Dr Racket, manco sta a ricordarvelo. Io di solito uso la REPL, quella di una volta, mi sono pure fatto l’alias, alias rre='racket -il xrepl' ma solo perché sono vecchio (però non tanto vecchio da rientrare nella classe “non puoi insegnare un gioco nuovo a un cane vecchio”, nèh!), ma in questo cas è OK.

Nel codice trovate subito un’altra nerdata: λ invece di scrivere lambda. Il codice Unicode di λ è 03BB, per ottenerlo con Linux si sua Ctrl-Maiusc-U, compare una u sottolineata e si scrive il codice voluto. Con Windows chissà… (googlate). Ma potete benissimo scrivere lambda, come facevano i nostri vecchi (e me).

Poi basta seguire Ben, rockz! 😀 Costruisce le funzioni che gli servono, spiegando quello che fa, visualizza il codice completo dello script, 79 righe compresi i commenti. Eseguendolo (tasto run) si ottiene test.txt ma è solo il primo passo.

Ben crea un submodule, lo esegue con raco, passa alla versione typed, aggiunge l’interfaccia per la command-line e testa il tutto. E continuerà –promette– con la documentazione e la creazione del package per condividerlo (shararlo).

I tempi? forse Ben è un po’ troppo ottimista c’è la legge di Hofstadter, io non sono così smart) ma OK: Racket & Ben rockzs 😀
Io sono occupato con cose promesse da finire ma il blog l’ho RSSato subito.

:mrgreen:

Una risposta & una domanda

woz

Una risposta a Jilla, forse se lo saranno chiesto anche altri: Coconut è nuovo ma promette bene. E l’uso che immediatamente viene in mente è quello di creare moduli con dentro le costanti e le funzioni che si intende usare, visto che permette di scrivere chiaramente e sinteticamente cose che con Python sono meno immediate, p.es. case.
Ecco un esempio (banalissimo, certamente nessuno scriverebbe cose così per davvero) di quali sono le mie intenzioni.

Il modulo coco_module.coco:

risposta = 42

def ciao(nome):
    print("Ehi", nome, "ciao!")

def doppio(n):
    return 2 * n

Che compilo ottenendo il modulo Python

r0

Non importa che coco_module.py sia lungo 298 righe, non devo editarlo, solo usarlo, nello script uso_c_m.py:

from coco_module import *

ciao("Juhan")
print(risposta, doppio(doppio(doppio(risposta))))

r1

Ovviamente –come già detto– quando il gioco si fa duro (inizio-cit.).

OK, lo ammetto: Coconut mi piace per i suoi aspetti funzionali che adesso pare siano trendyassay, quasi fossero pokémons. Forse perché contemporaneamente sto vedendo quell’altro linguaggio, di cui al momento non ricordo il nome, molto più tradizionale (nato come alternativa semplice del Fortran).


Siccome ho risposto, spero esaurientemente, alla domanda fattami ne avrei una anch’io (me). Chissà se…
Viene da un tweet, Why Linux sucks and will never compete with Windows or OSX.

Non so chi l’ha retwittato ma ho voluto vedere cos’è che non va con Linux.
Inizialmente ho classificato non tanto bene il post, l’autore del post, il titolare del blog, il retwittatore &co. poi però –in modo non esattamente razionale– ci ho rimuginato su. Non ho capito se l’autore sta lollando o cosa. Non ho capito cosa non gli va di Linux, sa usarlo, lo usa da tempo. Viene anche il dubbio che sia al servizio di NWO o Bilderberg o anche peggio (M$).

Sperando di non fargli pubblicità (segue 3 ed è seguito da 4 ma ha un blog) la mia domanda è: che dire del tipo e del tipo che ha linkato?

:mrgreen:

Certe cose non si possono fare

CZw-KD5WEAIW0AD

Ci sono cose che con Windows si possono fare, cose che ho fatto anch’io, quando ero giovane, ne parlo qui.
Ma se poi si passa a un Sistema Operativo serio diverso si deve essere disposti a cambiare qualcosa.

Lo so che mi sto ripetendo a distanza di meno di due settimane ma metti che capita come recentemente che qualcuno twitta, magari a sua insaputa (cit.), una soluzione migliore della mia. Sarebbe über-bellissimissimo 😀
Se invece questo non dovesse succedere (non è che ci spero davvero) ho comunque fatto vedere che ce l’ho messa tutta a fare tutto quello che sapevo fare 😳
Un solo avvertimento: l’esempio è minimale, il caso reale è molto più complesso, ma credo sia sufficiente a illustrare il problema.

Posso eseguire un eseguibile da penna o disco USB?

Con Windows si può:

Cattura

come si vede i 2 scripts (batches nel mondo DOS|Windows) vengono eseguiti correttamente.

Ecco e.bat:

@echo ciao!
@echo sono  nella cartella %cd%
@echo e sono il file %0%

e la variante f.bat:

@echo off
echo ciao!
echo sono  nella cartella %cd%
echo e sono il file %0%

Li ho costruiti con notevole difficoltà 😦 e.bat l’ho scritto con Gedit su Linux e –naturalmente– ho dimenticato che l’a-capo cambia per Windows. Avevo anche dimenticato di iniziare i comandi con @ per sopprimere l’echo, prima di ricordarmi di @echo off; ma a questo punto mica potevo distruggere quanto costruito con grande fatica! 😉

OK, funziona tutto, come previsto, come da sempre.
Resta da fare la versione Linux (in particolare Ubuntu ma non è influente). Io ci provo, ecco e.sh:

#!/bin/bash

echo ciao!
echo sono $0 in $PWD

che eseguo:

lx

Uhmmm… problemi 😦
Se lo lancio come bash e.sh funziona ma se lo lancio nel modo normale no. E non è questione di permessi. Per uno script interpretato non c’è problema ma per un compilato non c’è speranza. Secondo me, se poi qualcuno mi smentisce ben contento, anzi grazie mille anticipate.

Proposta, vecchia, scontata, lo so che mi ripeto: spostare l’eseguibile in /tmp, è apposta per le cose temporanee:

lx1

Devo riabilitarlo ma non dovrebbe essere un problema. E pensa te che io sono talmente abituato alla ditectory temporanea tmp che ne ho una perso, tutta mia:

tmp

Ma forse la questione è un’altra: cambiando OS devo adeguarmi a qualche nuova convenzione. Oltretutto questa è ampiamente giustificata per motivi di sicurezza.

:mrgreen:

Dov’è? ovvero differenze con Windows

n2Ieri ho scoperto che un piccolo tool che avevo scritto nel 2006 e completamente dimenticato è ancora vivo e usato 😀

w1
È una cosa semplicissima, rileva la lista dei dischi montati (quelli con una lettera seguita da due-punti) e restituisce quello che nella radice ha il file con il nome specificato. Siccome allora ero giovane l’avevo scritto in Delphi e dev’essere stata una cosa volante, l’ho completamente dimenticato. Fino a ieri.

Ora per cose normali con Linux c’è whereis:

w2

che potrebbe anche essere configurato per casi speciali:

w3

Cose che con Windows sono (o erano?) possibili qui sono giustamente vietate, per elementari ragioni di sicurezza:

w4

Per il resto non dovrebbero esserci problemi

w5

e il nome dell’utente corrente può essere rilevato con uno di questi due modi (o altri ancora, forse)

w6

Programmatically (or scrptically), disks.py:

import os

mdir = "/media/" + os.getenv("USER")
print("mdir =", mdir)
disks = os.listdir(mdir)
print("disks =", disks)

w7

:mrgreen:

Linux facile ma non so raccontarlo

difference-engineNei giorni scorsi sono stato alle prese con un nuovo utente Linux. Yep 😀 stiamo crescendo!
Adesso non è che racconto tutto, anche perché:

  • non ce la faccio davvero più con Windows, eredi Bill mi arrendo 😦
  • quel che si deve fare varia in funzione di quel che si vuole fare.

per cui mi limito a qualcosa di generico (e per molti scontato), portate passiensa pazienza 😳
Non è colpa della scuola (cioè sì ma sarebbe un discorso lungo) e poi non fate come me: probabilmente (anzi quasi certamente) continuerete a dover trafficare con Windows. E con i telefoni e roba simile, dove sono super-niubbo, ma essendo vecchio posso ignorarli.

OK, questo è l’inizio di una bozza che non posterò; poi ho la scaletta (lo chiamate così anche voi il proto-indice delle cose da scrivere?) di altri due ma non mi piacciono.

E pensare che avevo (appena buttati) gli appunti del nuovo linuxiano 😀
Troppo specifici, personali, varierebbero moltissimo con altri.
Questo vuol dire che devo cambiare cose nel blog, certi argomenti non sono per me.
Intanto una cosa che forse non tutti sanno ancora: installare Linux è semplicissimo, tanto da non doverlo dire.
E poi installate parecchie cose che avete di là: Office è lo stesso, tranne per quelli ricchi o copioni che continuano ad avere l’M$ invece di Libre. Il browser idem, tranne Edge (ma si suppone che –OK, niente, non lo dico). Se usavate Photoshop adesso vi serve Gimp. E potrei continuare ma entrerei nello specifico.
Ci sono differenze, certo, per esempio i nomi dei documenti. Se condividete attraverso la rete roba con Windows può capitare che i nomi vadano in conflitto, usate solo lettere minuscole e numeri, attenti ai fonts, …
Altri programmi –specifici– sono monopiattaforma ma esistono alternative, magari meno sexy ma basta valutare quello che davvero serve.
Un’altra cosa che continuo a sentire (ehi! siamo nel 2016! (il punto esclamativo non indica il fattoriale, nèh)): l’ambiente è simile, anzi con Linux è più facile. E poi come la mettiamo con i telefoni? nessuno si lamente che non c’è Windows con il pulsante Start –per fortuna mancano 😀

Insomma in conclusione: i post promessi della serie “vi presento Linux” non li farò, non ne sono capace. E forse non servono, ma se ci saranno suggerimenti nei commenti saranno benvenuti.
E –speranza segreta– spero nessuno si accorga del mio pasticcio 😉

:mrgreen:

Calc, Gedit e Racket – memo per niubbi ubunteros come me

mandelOrmai ci sono abituato: ogni volta che c’è una nuova versione da installare sono sia eccitatato [che bello chissà le nuove novità nuove di pakka e quelle rinnovate] e presentivato [ma poi devo reinstallare tutta quella roba che nel tempo ho adottato e ne sono dipendente (atticto terminale (nel senso di perso (non nel senso di personale ma di perso propriamente detto)))].

Perché so benissimo che la grande maggioranza delle cose filano via lisce, manco conta di dirle, fatto. Ma c’è ogni volta qualcosa che richiede googlate, tentativi, e altro che io condisco con un crescendo di psicopatologismo e non-ce-la-posso-farismo. Mi vengono anche fastidiose eruzioni cutanee e disordini al sistema intestinale.

Capace che ne ho già anche parlato, anche su questo blog, ma la memoria sapete…

Allora lo ripeto qui, non so se serve ma ci provo.

Calc
Calc è la mia calcolatrice preferita, anzi l’unica. Non conviene seguire le indicazioni del sito (How to Install), c’è un modo molto più semplice:

sudo apt install apcalc

Ecco! il nome è apcalc, non calc! Lo ripeto qui chissà se…
Poi sì so che apt* è roba del passato, adesso c’è snap, ma nel panico di cui sopra; da domani mi adeguo, promesso; forse.

snap

OK, Calc, c’è 😀

Gedit
Gedit è cambiato; è sparita la toolbar, OK, poco male, ma manca (sembrerebbe) l’opzione per cambiare il caso (che sarebbe convertire i caratteri maiuscoli/minuscoli, un po’ quello che fa tr). Opzione sparita dal menu Modifica e non c’è da nessuna parte, nessun plugin. Poi disperatamente seleziono un pezzo di testo e, contrariamente a quello che faccio sempre uso il tasto destro del mouse per dire copia e miracolo (nel suo piccolo):

gedit

Ma dimmi te! Dubbio: magari era così anche prima, non lo saprò mai 😉
Lo scrivo qui perché di sicuro me lo dimentico, sapete la mia memoria…

Aggiornamento: medeoTL (rockz!) ha appena twittato, qui, una dritta che funziona, pratica, meglio di quella indicata da me. Quindi per cambiare MAIUSC|minusc per il testo selezionato ci sono le scorciatoie:

C-u converte in maiuscolo
C-l converte in minuscolo
C-~ inverte M/m

Dove C-u sta per Ctrl+u, come usano i saputi.
Nota aggiuntiva per quelli come me che dimenticano le cose: ~ è nascosto sulla tastiera italiana; si ottiene con AltGr+ì.

Racket
Qui tutto Ok, quasi, c’è la pagina Download Racket dove si può scaricare uno script di 120MB, da eseguire con sudo bash, anzi snap (prossimamente).
Ora la versione che ho scaricato e installato è quella per mamma Debian; funziona ma c’è anche quella per ‘buntu, anche se per una versione non recentissima, anzi (Precise Pangolin, 12.04). Anche questa nota potrebbe servire per il futuro chissà…

Aggiornamento: oggi, 29 aprile c’è la versione 6.5; sparita la distinzione tra Debian e Ubuntu, adesso l’indicazione è Linux 64 😀
Installazione velocissima 😀
Racket rockz! 😀

Ah, un’ultima nota: per gli screenshots uso —com’è già che si chiama…–, a sì: xfce4-screenshooter, da installare con sudo apt install; anzi snap.

Tutto questo perché adesso è prematuro parlarne ma

yy

Uh! yakkety, yakkety, yakkety Yak!

ott

Il 20 è giovedì, di solito l’installazione la faccio la domenica. Pre-panico per domenica 23 ottobre 2016. Quel giorno non ci sono per nessuno; non vi conviene. E mancano solo sei mesi, scarsi 😦

:mrgreen:

Edit della command line

m1

Tutti sanno di history e dei tasti freccia, vero?
Naturalmente sto parlando di quelli che usano il terminale e alle volte devono scrivere comandi lunghi (tar escluso, quello è senza speranza), ripetendoli più volte con variazioni, come modificare il nome del file o inserire --color in grep (sia per metterlo che per toglierlo).
Mica ci spostiamo un carattere per volta, Bash (ma tutte le shells) hanno dei comandi di editing.

Adesso (OK, tra un po’) anche gli utenti di Windows potranno usarla (forse) con profitto (davvero!) e scoprire tutto un mondo finora ignorato.
Nel mio caso questo post arriva come aiuto a un niubbo che –ne sono certo– diventerà presto un über-nerd (e mi prenderà il posto).

Esiste un modo molto veloce per affrontare questo tema, trovate tutto qui: Bourne Shell Style Features.
Fine del post. No ‘spetta troppo corto e poco mio, continuo; il bello viene adesso 😀

Che ne dite di una tabella riassuntiva dei comandi principali, quelli che uso io? Si usa la notazione di Emacs per cui C-b vale controlB e M-f metaF (il tasto meta è quello labellato Alt).

Basics for editing the text of an input

C-b  Move back one character. 
C-f  Move forward one character. 
DEL  Delete the character to the left of the cursor. 
C-d  Delete the character underneath the cursor. 
C-_  Undo the last thing that you did. You can undo 
     all the way back to an empty line.

Printing characters insert the character into the line at the cursor.

Commands for moving more rapidly about the line

C-a  Move to the start of the line. 
C-e  Move to the end of the line. 
M-f  Move forward a word. 
M-b  Move backward a word. 
C-l  Clear the screen, reprinting the current line at the top.

Commands for killing text

C-k   Kill the text from the current cursor position to the end of the line.
M-d   Kill from the cursor to the end of the current word, or if
      between words, to the end of the next word.
M-DEL Kill from the cursor the start of the previous word, or if
      between words, to the start of the previous word.
C-w   Kill from the cursor to the previous whitespace. This is
      different than M-DEL because the word boundaries differ.

How to yank the text back into the line. Yanking means to copy the most-recently-killed text from the kill buffer.

C-y  Yank the most recently killed text back into the buffer at the cursor.
M-y  Rotate the kill-ring, and yank the new top. You can only do this
     if the prior command is C-y or M-y.

Poi quando i vostri diti li avranno fatti propri ce ne sono altri (comandi, non diti) :mrgreen: