Revisione traduzione bash [parte 1]

Luca Vercelli luca.vercelli.to@gmail.com
Mar 13 Maggio 2025 09:43:28 CEST


Grazie mille.  Ammetto che io ho solo lavorato sulle traduzioni fuzzy o
mancanti, non ho rivisto tutte quelle vecchie.
Accetterò molti dei tuoi consigli, tranne:
1. Sulla traduzione di "array" con "vettore" ho ancora qualche dubbio, mi
pare più universale la prima.
2. Per quanto riguarda le virgolette, mi sembra che l'usanza fosse di
tradurre sempre  `xxx' con "xxx", tranne nei casi in cui si sarebbe
generata palese confusione, nel qual caso «xxx» (e quindi il famoso `"'
sarebbe stato da tradurre con «"» e non con """ ). Io preferirei attenermi
a questa regola, anche perchè in generale trovo un po' fuori moda le «».
3. Infine, io cerco sempre di evitare il "a me", "me stesso", mi sembra che
in italiano si cerchino sempre delle forme più neutre, vediamo come riesco
a girare le frasi. (per inciso quel "I have no name" è una stringa usata
come nome utente in assenza del nome effettivo! lo renderei come "Senza
nome").

Luca

Il giorno dom 11 mag 2025 alle ore 15:35 Giuseppe Sacco <giuseppe@sguazz.it>
ha scritto:

> Luca,
> il testo è lungo e non ho ancora finito, ma ti passo questa prima parte
> di commenti. L'ultima traduzione che ho commentato è l'ultima che ho
> controllato. Cercherò di vedere le altre stringhe nei prossimi giorni.
>
> Vedrai che a volte ci sono dei commenti che avrebbero un grosso
> impatto, come ad esempio quello sulle virgolette o sulla traduzione di
> ARRAY. Ovviamente le mie sono solo proposte.
>
> Vale poi quanto già scritto in questo thread riguardo all'uso del
> doppio spazio: io userei lo spazio singolo.
>
> Ciao,
> Giuseppe
>
> Il giorno gio, 08/05/2025 alle 09.08 +0200, Luca Vercelli ha scritto:
> [...]
> > #: arrayfunc.c:63
> > msgid "bad array subscript"
> > msgstr "indice dell'array errato"
>
> In generale io credo che avrei tradotto dappertutto «array» con
> «vettore». Lo so che il termine è sicuramente accettato da tutti anche
> in Italia, ma è una di quelle parole per le quali anche la traduzione
> italiana è sufficientemente diffusa.
>
> [...]
> > #: bashline.c:4628
> > msgid "bash_execute_unix_command: cannot find keymap for command"
> > msgstr ""
> > "bash_execute_unix_command: impossibile trovare una mappatura per il
> comando"
>
> qui si perde un po' il riferimento alla tastiera. «mappatura» è forse
> troppo generico. Potrebbe andare bene qualcosa come
> «combinazione/sequenza di tasti», oppure cercare di usare
> «scorciatoia»?
>
> [...]
> > #: bashline.c:4799
> > #, c-format
> > msgid "%s: first non-whitespace character is not `\"'"
> > msgstr "%s: il primo carattere non spazio non è \"\"\""
>
> nell'originale si ha qualcosa del tipo `"', mentre in italiano
> diventa """, che non è chiarissimo. Forse potresti provare a tradurre tutte
> le occorrenze del virgolettato `' con «», quindi in questo caso sarebbe
> «"».
> Invece lascerei invariata la traduzione quando l'originale usa già le
> doppie
> virgolette, come per \"%s\" che è usato in altri punti e che manterrei
> uguale.
>
> > #: bashline.c:4828
> > #, c-format
> > msgid "no closing `%c' in %s"
> > msgstr "carattere di chiusura \"%c\" non presente in %s"
>
> Nel caso che prima avessi scelto di usare «», allora anche in tutti gli
> altri punti, come questo qui, dovresti tradurre `' in «».
>
> [...]
>
> > #: builtins/common.c:190
> > #, c-format
> > msgid "%s: not found"
> > msgstr "%s: non trovata"
>
> al femminile? Si riferisce sempre alle opzioni?
>
> [...]
> > #: builtins/common.c:236
> > #, c-format
> > msgid "`%s': not a pid or valid job spec"
> > msgstr "\"%s\": non è un pid o un numero di job valido"
>
> Qui non userei "numero" per la parte del job perché si tratta di un
> jobspec. Normalmente è con un numero, tipo %4, ma può anche essere %+,
> oppure %?while, eccetera. In altri posti hai usato «specifica dei job»
>
> [...]
> > #: builtins/common.c:271
> > #, c-format
> > msgid "%s: no job control"
> > msgstr "%s: nessun controllo dei job"
> >
> > #: builtins/common.c:273
> > msgid "no job control"
> > msgstr "nessun controllo dei job"
>
> In queste due non capisco bene il contesto. Il controllo in questione è
> una cosa che si attiva nella bash se il sistema operativo lo consente,
> e vale per tutti i job, non è una cosa dei singoli job, ma «nessuno» fa
> pensare a qualcosa che potrebbe essere attivo o meno per ciascun job.
> Inoltre in inglese è al singolare. Mi spiace, ma non saprei bene come
> tradurlo.
>
> [...]
> > #: builtins/common.c:1028 builtins/set.def:964 variables.c:3868
> > #, c-format
> > msgid "%s: cannot unset: readonly %s"
> > msgstr "%s: impossibile azzerare: %s in sola lettura"
> >
> > #: builtins/common.c:1033 builtins/set.def:930
> > variables.c:3873
> > #, c-format
> > msgid "%s: cannot unset"
> > msgstr "%s: impossibile azzerare"
>
> In queste due non userei «azzerare» che, almeno a me, fa capire che il
> valore della variabile viene «svuotato» lasciando la variabile senza
> valore. Invece «unset» dovrebbe eliminare del tutto la variabile
> dall'ambiente di lavoro. In questo senso credo che userei «annullare» o
> «cancellare» o «rimuovere».
>
> [...]
> > #: builtins/complete.def:501 builtins/complete.def:644
> > #: builtins/complete.def:899
> > #, c-format
> > msgid "%s: no completion specification"
> > msgstr "%s: nessun completamento specificato"
>
> Credo che dovrebbe essere «nessuna specifica di completamento»
>
> [...]
> >
> > #: builtins/declare.def:567 variables.c:3346
> > #, c-format
> > msgid "%s: nameref variable self references not allowed"
> > msgstr "%s: riferimento a nome autoreferenziale non permesso"
>
> qui la frase inglese è comprensibile, ma non capisco quella italiana 🙂
> Non ho capito come hai deciso di tradurre nameref, ma la frase completa
> potrebbe essere qualcosa del tipo «non si può usare un nameref che
> punti a se stesso».
>
> [...]
> > #: builtins/declare.def:572 variables.c:2035 variables.c:3343
> > #, c-format
> > msgid "%s: circular name reference"
> > msgstr "%s: riferimento a nome circolare"
>
> qui la frase è ambigua, ma immagino che ad essere circolare sia il
> riferimento più che il nome. «riferimento circolare a nome» potrebbe
> risolvere l'ambiguità.
>
> [...]
> > #: builtins/evalfile.c:143
> > #, c-format
> > msgid "%s: not a regular file"
> > msgstr "%s: non è un file regolare"
>
> «regolare» è molto americano; magari potresti scrivere «normale»,
> oppure non capito bene il contesto.
>
> [...]
> >
> > #: builtins/exit.def:116
> > #, c-format
> > msgid ""
> > "There are stopped jobs.\n"
> > msgstr ""
> > "Sono presenti job interrotti.\n"
> >
> > #: builtins/exit.def:118
> > #, c-format
> > msgid ""
> > "There are running jobs.\n"
> > msgstr ""
> > "Ci sono job in esecuzione.\n"
>
> «there are» è tradotto diversamente nelle due frasi, ma credo che
> andrebbero invece omologate.
>
> [...]
> > #: builtins/getopt.c:110
> > #, c-format
> > msgid ""
> > "%s: illegal option -- %c\n"
> > msgstr ""
> > "%s: opzione illecita -- %c\n"
>
> Non ho mai visto tradurre illegal con illecito nel contesto
> informatico, sicché a me suona un po' strano. Avrei messo un classico
> «non consentita», ma i gusti sono gusti :-)
>
> [...]
> > #: builtins/hash.def:144
> > #, c-format
> > msgid ""
> > "%s: hash table empty\n"
> > msgstr ""
> > "%s tabella di hash vuota\n"
>
> qui manca il «:». Non so se sia importante.
>
> [...]
> > #: expr.c:586
> > msgid "bug: bad expassign token"
> > msgstr "bug: token di expassign errato"
>
> Ci ho messo un po' e non sono ancora sicuro del risultato, ma credo che
> «expassign» sia un assegnamento che ha una espressione a destra del
> simbolo «=». Se così fosse, io cercherei di rendere più comprensibile
> questo messaggio, almeno in italiano, ma non mi è chiaro il contesto.
>
> [...]
> > #: expr.c:1450 expr.c:1471
> > msgid "--: assignment requires lvalue"
> > msgstr "--: l'assegnazione richiede un valore a sinistra"
> >
> > #: expr.c:1452 expr.c:1473
> > msgid "++: assignment requires lvalue"
> > msgstr "++: l'assegnazione richiede un valore a sinistra"
>
> non credo che si possa tradurre «lvalue» con «valore a sinistra», difatti
> per definizione un lvalue non è un valore, ma un qualcosa che ha un posto
> in memoria (puoi pensarlo come una «L»ocazione), in genere è una variabile.
> Giustamente sta a sinistra dell'uguale, in un assegnamento, e quindi
> diventa
> lvalue, ma qui parliamo di pre- e post-incremento, ad esempio di
> espressioni
> come VAR++ o ++VAR. Non è quindi corretto dire valore a sinistra. Se non
> capisco male questo messaggio appare quando si scrive una espressione
> del tipo 5++ che ha in effetti un valore a sinistra, ma non è un
> lvalue, cioè non identifica un posto in memoria nel quale mettere il
> risultato.
>
> Non so se lvalue abbia una traduzione italiana, ma in caso contrario
> lascerei la parola invariata.
>
> [...]
> > #: jobs.c:1974 jobs.c:2000
> > msgid "Done"
> > msgstr "Completato"
> [...]
> > #: jobs.c:2004
> > #, c-format
> > msgid "Done(%d)"
> > msgstr "Eseguito(%d)"
>
> questi due sono effettivamente diversi?
>
> [...]
> > #: lib/malloc/malloc.c:364
> > #, c-format
> > msgid ""
> > "malloc: failed assertion: %s\n"
> > msgstr ""
> > "malloc: asserzione non riuscita: %s\n"
>
> L'ho sempre tradotto con «fallita». «Non riuscita» è una traduzione
> diffusa per questo contesto?
>
> [...]
> > #: lib/malloc/malloc.c:876
> > msgid "malloc: block on free list clobbered"
> > msgstr "malloc: blocco eliminato nell'elenco dei
> > disponibili"
>
> credo che «clobbered» voglia dire «rovinato». Nel caso di malloc capita
> ad esempio quando si tenti fare una free() con un puntatore che non è
> stato restituito da malloc(). Ad esempio se faccio p=malloc(n) e poi
> free(&p[4]).
>
> [...]
> > #: lib/sh/netopen.c:332
> > msgid "network operations not supported"
> > msgstr "operazione di rete non supportata"
>
> qui la frase è al plurale in inglese e al singolare in italiano.
>
> [...]
> > # (ndt) pretty print?
> > #: shell.c:827
> > msgid "pretty-printing mode ignored in interactive shells"
> > msgstr "modalità di stampa elegante ignorata nelle shell interattive"
>
> Si tratta di una modalità di bash che prende in input un file shell e lo
> stampa indentato per bene e senza commenti. Va chiamata così:
> $ bash --pretty-print nomefile.sh
>
> non saprei dire se tradurre «pretty» con «elegante» sia la scelta migliore,
> ma non ho suggerimenti buoni.
>
> [...]
> > #: shell.c:1891
> > msgid "I have no name!"
> > msgstr "Manca il nome"
>
> credo che ne manchi un pezzetto: «Manca il mio nome»
>
> [...]
> > #: shell.c:2088
> > #, c-format
> > msgid ""
> > "Type `%s -c \"help set\"' for more information about shell options.\n"
> > msgstr ""
> > "Digitare «%s -c \"help set\"» per ulteriori informazioni sulle opzioni
> di "
> > "shell.\n"
>
> Ecco, questo è un esempio dell'utilizzo delle varie virgolette.
>
> [...]
> > #: siglist.c:183
> > msgid "HFT input data pending"
> > msgstr "Dati di input HTF in sospeso"
>
> HFT è diventato HTF. Non so cosa voglia dire ma nelle stringhe successive
> non
> l'hai cambiato come hai fatto qui.
>
> [...]
> > #: siglist.c:195
> > msgid "migrate process to another CPU"
> > msgstr "processo spostato su un'altra CPU"
>
> Qui la frase in inglese non è al passato. Qual è il contesto? Potrebbe
> essere «migra processo su altra CPU»?
>
> [...]
> > #: subst.c:7929 subst.c:8097
> > msgid "%s: invalid variable name"
> > msgstr "\"%s\": nome di variabile non valido"
>
> Qui ci sono delle virgolette aggiuntive in italiano. È una svista?
>
> [...]
> > #: subst.c:11552
> > #, c-format
> > msgid "bad substitution: no closing \"`\" in %s"
> > msgstr "sostituzione errata: manca «\"» di chiusura in %s"
>
> Mi pare di capire che il carattere mancante sia «`» e non «"». Potresti
> controllare?
>
> [...]
> > #: trap.c:459
> > #, c-format
> > msgid ""
> > "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to
> myself"
> > msgstr ""
> > "run_pending_traps: il gestore dei segnali è SIG_DFL, viene inviato "
> > "nuovamente %d (%s)"
>
> forse manca un «a me stesso» finale.
>
> [...]
> > #: builtins.c:184
> > msgid "! PIPELINE"
> > msgstr ""
>
> Questa non è tradotta.
>
> [...]
> > #: builtins.c:447
> > msgid ""
> > "Null command.\n"
> > "    \n"
> > "    No effect; the command does nothing.\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    Always succeeds."
> > msgstr ""
> > "Comando nullo.\n"
> > "    \n"
> > "    Nessun effetto; il comando non esegue nulla.\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    ha sempre successo."
>
> Io qui non direi «non esegue» perché eseguire mi fa venire in mente una
> azione esterna, come eseguire un programma esterno; lo tradurrei invece con
> «non fa nulla».
>
> [...]
> > #: builtins.c:495
> > msgid ""
> > "Set variable values and attributes.\n"
> > "    \n"
> > "    Declare variables and give them attributes.  If no NAMEs are
> given,\n"
> > "    display the attributes and values of all variables.\n"
> > "    \n"
> > "    Options:\n"
> > "      -f\trestrict action or display to function names and
> definitions\n"
> > "      -F\trestrict display to function names only (plus line number
> and\n"
> > "    \t\tsource file when debugging)\n"
> > "      -g\tcreate global variables when used in a shell function;
> otherwise\n"
> > "    \t\tignored\n"
> > "      -I\tif creating a local variable, inherit the attributes and
> value\n"
> > "    \t\tof a variable with the same name at a previous scope\n"
> > "      -p\tdisplay the attributes and value of each NAME\n"
> > "    \n"
> > "    Options which set attributes:\n"
> > "      -a\tto make NAMEs indexed arrays (if supported)\n"
> > "      -A\tto make NAMEs associative arrays (if supported)\n"
> > "      -i\tto make NAMEs have the `integer' attribute\n"
> > "      -l\tto convert the value of each NAME to lower case on
> assignment\n"
> > "      -n\tmake NAME a reference to the variable named by its value\n"
> > "      -r\tto make NAMEs readonly\n"
> > "      -t\tto make NAMEs have the `trace' attribute\n"
> > "      -u\tto convert the value of each NAME to upper case on
> assignment\n"
> > "      -x\tto make NAMEs export\n"
> > "    \n"
> > "    Using `+' instead of `-' turns off the given attribute, except for
> a,\n"
> > "    A, and r.\n"
> > "    \n"
> > "    Variables with the integer attribute have arithmetic evaluation
> (see\n"
> > "    the `let' command) performed when the variable is assigned a
> value.\n"
> > "    \n"
> > "    When used in a function, `declare' makes NAMEs local, as with the "
> > "`local'\n"
> > "    command.  The `-g' option suppresses this behavior.\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    Returns success unless an invalid option is supplied or a
> variable\n"
> > "    assignment error occurs."
> > msgstr ""
> > "Imposta i valori e gli attributi delle variabili.\n"
> > "    \n"
> > "    Dichiara le variabili e fornisce loro attributi. Se non vengono
> forniti "
> > "NOMI,\n"
> > "    visualizza gli attributi e i valori di tutte le variabili.\n"
> > "    \n"
> > "    Opzioni:\n"
> > "      -f\tlimita l'azione o la visualizzazione ai nomi e alle
> definizioni di "
> > "funzione\n"
> > "      -F\tlimita la visualizzazione ai soli nomi di funzione (più
> numero di "
> > "riga e\n"
> > "    \t\tfile sorgente durante il debug)\n"
> > "      -g\tCrea variabili globali quando usato in una funzione di shell;
> "
> > "altrimenti\n"
> > "    \t\tè ignorato\n"
> > "      -I\tcreando una variabile locale, eredita attributi e valore\n"
> > "    \t\tdi una variable con stesso nome in uno scope precedente\n"
> > "      -p\tvisualizza gli attributi e i valori di ciascun NOME\n"
> > "    \n"
> > "    Opzioni che impostano gli attributi:\n"
> > "      -a\tRende i NOMI array indicizzati (se supportata)\n"
> > "      -A\tRende i NOMI array associativi (se supportata)\n"
> > "      -i\tFornisce ai NOMI l'attributo \"integer\"\n"
> > "      -l\tConverte i valori dei NOMI in lettere minuscole in fase di
> assegnazione\n"
> > "      -n\tmake NAME a reference to the variable named by its value\n"
> > "      -r\tImposta i NOMI in sola lettura\n"
> > "      -t\tFornisce ai NOMI l'attributo \"trace\"\n"
> > "      -u\tConverte i valori dei NOMI in lettere maiuscole in fase di
> assegnazione\n"
> > "      -x\tImposta i NOMI come esportabili\n"
> > "    \n"
> > "    Usando \"+\" al posto di \"-\" disattiva l'attributo fornito, ad\n"
> > "    eccezione di a, A e r.\n"
> > "    \n"
> > "    Le variabili con attributo intero vengono valutate aritmeticamente "
> > "(vedere\n"
> > "    il comando \"let\") quando alla variabile è assegnato un valore.\n"
> > "    \n"
> > "    Quando viene usato in una funzione, \"declare\" rende locali i
> NOMI, "
> > "come con\n"
> > "    il comando \"local\".\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    Restituisce successo a meno che non sia fornita una opzione non
> valida o "
> > "si riscontri un errore nell'assegnazione di variabili."
>
> Qui c'è una parte non tradotta «make NAME a reference to the variable
> named by its value»
> e poi è rimasto un «variable» nella parte italiana.
>
> [...]
> > #: builtins.c:566
> > msgid ""
> > "Write arguments to the standard output.\n"
> > "    \n"
> > "    Display the ARGs, separated by a single space character and
> followed by "
> > "a\n"
> > "    newline, on the standard output.\n"
> > "    \n"
> > "    Options:\n"
> > "      -n\tdo not append a newline\n"
> > "      -e\tenable interpretation of the following backslash escapes\n"
> > "      -E\texplicitly suppress interpretation of backslash escapes\n"
> > "    \n"
> > "    `echo' interprets the following backslash-escaped characters:\n"
> > "      \\a\talert (bell)\n"
> > "      \\b\tbackspace\n"
> > "      \\c\tsuppress further output\n"
> > "      \\e\tescape character\n"
> > "      \\E\tescape character\n"
> > "      \\f\tform feed\n"
> > "      \\n\tnew line\n"
> > "      \\r\tcarriage return\n"
> > "      \\t\thorizontal tab\n"
> > "      \\v\tvertical tab\n"
> > "      \\\\\tbackslash\n"
> > "      \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can
> be\n"
> > "    \t\t0 to 3 octal digits\n"
> > "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).
> HH\n"
> > "    \t\tcan be one or two hex digits\n"
> > "      \\uHHHH\tthe Unicode character whose value is the hexadecimal
> value "
> > "HHHH.\n"
> > "    \t\tHHHH can be one to four hex digits.\n"
> > "      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
> > "value\n"
> > "    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    Returns success unless a write error occurs."
> > msgstr ""
> > "Scrive argomenti sullo standard output.\n"
> > "    \n"
> > "    Visualizza gli ARG sullo standard output, separati da un singolo
> carattere\n"
> > "    spazio, e seguiti da un ritorno a capo.\n"
> > "    \n"
> > "    Opzioni:\n"
> > "      -n\tNon accoda un carattere di ritorno a capo\n"
> > "      -e\tAbilita l'interpretazione dei seguenti caratteri backslash di
> "
> > "escape\n"
> > "      -E\tDisabilita esplicitamente l'interpretazione dei caratteri "
> > "backslash di escape\n"
> > "    \n"
> > "    \"echo\" interpreta i seguenti caratteri backslash di escape:\n"
> > "      \\a\tavviso (campanello)\n"
> > "      \\b\tbackspace\n"
> > "      \\c\telimina ulteriore output\n"
> > "      \\e\tcarattere di escape\n"
> > "      \\E\tcarattere di escape\n"
> > "      \\f\tavanzamento pagina\n"
> > "      \\n\tritorno a capo\n"
> > "      \\r\tritorno carrello\n"
> > "      \\t\ttabulazione orizzontale\n"
> > "      \\v\ttabulazione verticale\n"
> > "      \\\\\tbackslash\n"
> > "      \\0nnn\til carattere il cui codice ASCII è NNN (ottale). NNN può "
> > "avere\n"
> > "    \t\tda 0 a 3 cifre ottali\n"
> > "      \\xHH\til carattere otto bit il cui valore è HH (esadecimale).
> HH "
> > "può\n"
> > "    \t\tavere una o due cifre esadecimali\n"
> > "    \t\tHHHH può avere da una a quattro cifre esadecimali.\n"
> > "      \\UHHHHHHHH il carattere Unicode il cui valore è HHHH
> (esadecimale).\n"
> > "    \t\tHHHHHHHH. HHHHHHHH può avere da una a otto cifre esadecimali.\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    Restituisce successo a meno che non venga riscontrato un errore di "
> > "scrittura."
>
> Nella parte italiana manca questa specifica:
>  "      \\uHHHH\tthe Unicode character whose value is the hexadecimal
> value "
>  "HHHH.\n"
>
> [...]
> > #: builtins.c:666
> > msgid ""
> > "Parse option arguments.\n"
> > "    \n"
> > "    Getopts is used by shell procedures to parse positional
> parameters\n"
> > "    as options.\n"
> > "    \n"
> > "    OPTSTRING contains the option letters to be recognized; if a
> letter\n"
> > "    is followed by a colon, the option is expected to have an
> argument,\n"
> > "    which should be separated from it by white space.\n"
> > "    \n"
> > "    Each time it is invoked, getopts will place the next option in
> the\n"
> > "    shell variable $name, initializing name if it does not exist, and\n"
> > "    the index of the next argument to be processed into the shell\n"
> > "    variable OPTIND.  OPTIND is initialized to 1 each time the shell
> or\n"
> > "    a shell script is invoked.  When an option requires an argument,\n"
> > "    getopts places that argument into the shell variable OPTARG.\n"
> > "    \n"
> > "    getopts reports errors in one of two ways.  If the first
> character\n"
> > "    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n"
> > "    this mode, no error messages are printed.  If an invalid option
> is\n"
> > "    seen, getopts places the option character found into OPTARG.  If
> a\n"
> > "    required argument is not found, getopts places a ':' into NAME
> and\n"
> > "    sets OPTARG to the option character found.  If getopts is not in\n"
> > "    silent mode, and an invalid option is seen, getopts places '?'
> into\n"
> > "    NAME and unsets OPTARG.  If a required argument is not found, a
> '?'\n"
> > "    is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
> > "    printed.\n"
> > "    \n"
> > "    If the shell variable OPTERR has the value 0, getopts disables
> the\n"
> > "    printing of error messages, even if the first character of\n"
> > "    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n"
> > "    \n"
> > "    Getopts normally parses the positional parameters, but if
> arguments\n"
> > "    are supplied as ARG values, they are parsed instead.\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    Returns success if an option is found; fails if the end of options
> is\n"
> > "    encountered or an error occurs."
> > msgstr ""
> > "Analizza gli argomenti di opzione.\n"
> > "    \n"
> > "    Getopts è usato dalle procedure di shell per analizzare i
> parametri\n"
> > "    posizionali come opzioni.\n"
> > "    \n"
> > "    STRINGAOPZ contiene le lettere di opzione da riconoscere; se una "
> > "lettera\n"
> > "    è seguita da un due punti, ci si aspetta che l'opzione abbia un "
> > "argomento,\n"
> > "    che dovrebbe essere separato da uno spazio.\n"
> > "    \n"
> > "    Ogni volta che viene evocato getopts posiziona l'opzione
> successiva\n"
> > "    nella variabile di shell $nome inizializzando il nome, se non
> esiste,\n"
> > "    e l'indice dell'argomento successivo da elaborare nella variabile
> di\n"
> > "    shell OPTIND.  OPTIND è inizializzata a 1 ogni volta che viene
> invocata\n"
> > "    la shell o uno script di shell.  Quando una opzione richiede un "
> > "argomento,\n"
> > "    getopts posiziona tale argomento nella variabile di shell OPTARG.\n"
> > "    \n"
> > "    getopts riporta gli errori in uno o due modi.  Se il primo
> carattere "
> > "della\n"
> > "    STRINGAOPZ è un due punti, riporta gli errori in silenzio.  In
> questa\n"
> > "    modalità non vengono stampati messaggi di errore.  Se viene
> riscontrata "
> > "una\n"
> > "    opzione non valida, getopts posiziona il carattere di opzione
> trovato "
> > "in\n"
> > "    ARGOPZ.  Se un argomento richiesto non viene trovato, getopts
> posiziona\n"
> > "    un \":\" nel NOME e imposta ARGOPZ al carattere di opzione
> trovato.  Se "
> > "getopts\n"
> > "    non è in modalità silenziosa e viene riscontrata una opzione non
> valida, "
> > "getopts\n"
> > "    posiziona \"?\" nel NOME e azzera ARGOPZ.  Se un argomento
> richiesto non "
> > "viene\n"
> > "    trovato, viene posizionato un \"?\" nel NOME, ARGOPZ viene azzerato
> e "
> > "viene stampato\n"
> > "    un messaggio diagnostico.\n"
> > "    \n"
> > "    Se il valore della variabile di shell ERROPZ è pari a 0, getopts "
> > "disabilita\n"
> > "    la stampa dei messaggi di errore anche se il primo carattere della "
> > "STRINGAOPZ\n"
> > "    non è un due punti.  Il valore predefinito di ERROPZ è pari a 1.\n"
> > "    \n"
> > "    Getopts normalmente analizza i parametri posizionali, ma se
> vengono\n"
> > "    forniti degli argomenti come valori ARG, vengono analizzati questi
> ultimi.\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    Restituisce successo se viene trovata una opzione, insuccesso se
> viene "
> > "raggiunta\n"
> > "    la fine delle opzioni o viene riscontrato un errore."
>
> Nella riga:
> "    Ogni volta che viene evocato getopts posiziona l'opzione successiva\n"
> non userei evocare, ma invocare.
>
> Nella riga:
> "    nella variabile di shell $nome inizializzando il nome, se non
> esiste,\n"
> io toglierei «il» perché non si riferisce al nome ma alla variabile
> chiamata nome.
> Farei lo stesso anche per «nel NOME» che è presente più volte e che
> cambierei in «in NOME»
>
> Infine, c'è la traduzione dei nomi di variabile OPTARG, OPTIND e OPTERR
> che credo siano
> fissi, quindi non andrebbero tradotti.
>
> [...]
> > #: builtins.c:748
> > msgid ""
> > "Display or execute commands from the history list.\n"
> > "    \n"
> > "    fc is used to list or edit and re-execute commands from the history
> list."
> > "\n"
> > "    FIRST and LAST can be numbers specifying the range, or FIRST can be
> a\n"
> > "    string, which means the most recent command beginning with that\n"
> > "    string.\n"
> > "    \n"
> > "    Options:\n"
> > "      -e ENAME\tselect which editor to use.  Default is FCEDIT, then
> EDITOR,"
> > "\n"
> > "    \t\tthen vi\n"
> > "      -l \tlist lines instead of editing\n"
> > "      -n\tomit line numbers when listing\n"
> > "      -r\treverse the order of the lines (newest listed first)\n"
> > "    \n"
> > "    With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n"
> > "    re-executed after the substitution OLD=NEW is performed.\n"
> > "    \n"
> > "    A useful alias to use with this is r='fc -s', so that typing `r
> cc'\n"
> > "    runs the last command beginning with `cc' and typing `r'
> re-executes\n"
> > "    the last command.\n"
> > "    \n"
> > "    The history builtin also operates on the history list.\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    Returns success or status of executed command; non-zero if an error
> "
> > "occurs."
> > msgstr ""
> > "Visualizza o esegue comandi dall'elenco della cronologia.\n"
> > "    \n"
> > "    fc è usato per elencare, modificare e rieseguire comandi
> dall'elenco "
> > "della cronologia.\n"
> > "    PRIMO e ULTIMO possono essere numeri che specificano l'intervallo
> oppure "
> > "PRIMO può\n"
> > "    essere una stringa, nel qual caso significa il comando più recente
> che "
> > "inizia con\n"
> > "    quella stringa.\n"
> > "    \n"
> > "    Opzioni:\n"
> > "      -e EDITOR\tSeleziona l'editor da usare.  Il predefinito è FCEDIT,
> "
> > "quindi EDITOR,\n"
> > "    \t\tinfine vi\n"
> > "      -l \tElenca le righe invece di modificarle\n"
> > "      -n\tOmette i numeri di riga nell'elencare i comandi\n"
> > "      -r\tInverte l'ordine delle righe (elenca prima le più recenti)\n"
> > "    \n"
> > "    Con il formato \"fc -s [pat=rep ...] [comando]\", il COMANDO è\n"
> > "    rieseguito dopo aver effettuato la sostituzione VECCHIO=NUOVO.\n"
> > "    \n"
> > "    Un alias utile da usare insieme è r=\"fc -s\", in modo che
> digitando \"r "
> > "cc\"\n"
> > "    viene eseguito l'ultimo comando che inizia con \"cc\" e digitando
> \"r\" "
> > "riesegue\n"
> > "    l'ultimo comando.\n"
> > "    \n"
> > "    Il comando interno history opera anche sull'elenco della
> cronologia.\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    Restituisce successo o lo stato del comando eseguito, non zero se
> si "
> > "riscontra un errore."
>
> Alla riga
> "      -e EDITOR\tSeleziona l'editor da usare.  Il predefinito è FCEDIT, "
> credo che EDITOR debba invece essere «ENAME» oppure «NOMEEDITOR». Se però
> non
> metti ENAME dovresti cambiare anche la corrispondente traduzione che
> riporto sotto:
>
> #: builtins.c:105
> msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
> msgstr "fc [-e ename] [-lnr] [primo] [ultimo] oppure fc -s
> [pat=rep][comando]"
>
> [...]
> > #: builtins.c:795
> > msgid ""
> > "Move jobs to the background.\n"
> > "    \n"
> > "    Place the jobs identified by each JOB_SPEC in the background, as if
> "
> > "they\n"
> > "    had been started with `&'.  If JOB_SPEC is not present, the shell's
> "
> > "notion\n"
> > "    of the current job is used.\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    Returns success unless job control is not enabled or an error
> occurs."
> > msgstr ""
> > "Sposta i job in background.\n"
> > "    \n"
> > "    Mette il  jobs identificato da ogni SPEC_JOB in background, come
> se\n"
> > "    fossero stati avviati con \"&\". Se SPEC_JOB non è presente,
> viene\n"
> > "    usata la nozione di job corrente della shell.\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    Restituisce successo a meno che il controllo dei job non sia
> abilitato o "
> > "si riscontri un errore."
>
> Altrove background è stato tradotto con «sullo sfondo», qui invece no.
> Inoltre «Mette il jobs identificato» dovrebbe essere tutto al
> plurale: «Mette i job identificati»
>
> [...]
> > #: builtins.c:858
> > msgid ""
> > "Display or manipulate the history list.\n"
> > "    \n"
> > "    Display the history list with line numbers, prefixing each
> modified\n"
> > "    entry with a `*'.  An argument of N lists only the last N
> entries.\n"
> > "    \n"
> > "    Options:\n"
> > "      -c\tclear the history list by deleting all of the entries\n"
> > "      -d offset\tdelete the history entry at position OFFSET.
> Negative\n"
> > "    \t\toffsets count back from the end of the history list\n"
> > "    \n"
> > "      -a\tappend history lines from this session to the history file\n"
> > "      -n\tread all history lines not already read from the history
> file\n"
> > "    \t\tand append them to the history list\n"
> > "      -r\tread the history file and append the contents to the
> history\n"
> > "    \t\tlist\n"
> > "      -w\twrite the current history to the history> file\n"
> > "    \n"
> > "      -p\tperform history expansion on each ARG and display the
> result\n"
> > "    \t\twithout storing it in the history list\n"
> > "      -s\tappend the ARGs to the history list as a single entry\n"
> > "    \n"
> > "    If FILENAME is given, it is used as the history file. Otherwise,\n"
> > "    if HISTFILE has a value, that is used. If FILENAME is not
> supplied\n"
> > "    and HISTFILE is unset or null, the -a, -n, -r, and -w options
> have\n"
> > "    no effect and return success.\n"
> > "    \n"
> > "    The fc builtin also operates on the history list.\n"
> > "    \n"
> > "    If the HISTTIMEFORMAT variable is set and not null, its value is
> used\n"
> > "    as a format string for strftime(3) to print the time stamp>
> associated\n"
> > "    with each displayed history entry.  No time stamps are printed
> otherwise."
> > "\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    Returns success unless an invalid option is given or an error
> occurs."
> > msgstr ""
> > "Visualizza o manipola l'elenco della cronologia.\n"
> > "    \n"
> > "    Visualizza l'elenco della cronologia con i numeri di riga,
> aggiungendo a "
> > "ciascuna voce\n"
> > "    modificata il prefisso \"*\".  Un argomento pari a N elenca solo le
> "
> > "ultime N voci.\n"
> > "    \n"
> > "    Opzioni:\n"
> > "      -c\tPulisce la cronologia eliminando tutte le voci\n"
> > "      -d posiz\tElimina la voce della cronologia alla posizione
> POSIZ.\n"
> > "    \t\tPosizioni negative indicano di contare all'indietro dalla
> fine\n"
> > "    \t\tdell'elenco della cronologia.\n"
> > "    \n"
> > "      -a\tAccoda righe al file della cronologia relative alla sessione "
> > "attuale\n"
> > "      -n\tLegge tutte le righe non ancora lette dal file della
> cronologia\n"
> > "    \t\te le accodano all'elenco della cronologia\n"
> > "      -r\tLegge il file della cronologia e ne accoda il contenuto
> all'elenco\n"
> > "    \t\tdella cronologia\n"
> > "      -w\tScrive la cronologia corrente nel file della cronologia\n"
> > "    \n"
> > "      -p\tEffettua l'espansione della cronologia su ciascun ARG e
> visualizza "
> > "il\n"
> > "    \t\trisultato senza memorizzarlo nell'elenco della cronologia\n"
> > "      -s\tAccoda gli ARG all'elenco della cronologia come una voce
> singola\n"
> > "    \n"
> > "    Se viene fornito il NOMEFILE, viene usato come file della
> cronologia. \n"
> > "    Altrimenti, se HISTFILE è valorizzato, viene usato quest'ultimo.
> Se\n\n"
> > "    NOMEFILE non viene fornito, e HISTFILE non è settato oppure è null,
> le\n"
> > "    opzioni -a, -n, -r e -w non hanno effetto e termina con successo.\n"
> > "    \n"
> > "    Se la variabile $HISTTIMEFORMAT è impostata e non è nulla, il suo
> valore "
> > "viene usato\n"
> > "    come una stringa di formato per strftime(3) per stampare l'orario "
> > "associato a ciascuna\n"
> > "    voce di cronologia visualizzata.  Altrimenti non viene stampato
> alcun "
> > "orario.\n"
> > "    \n"
> > "    Il comando interno fc opera anche sull'elenco della cronologia.\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    Restituisce successo a meno che non sia fornita una opzione non
> valida o "
> > "si riscontri un errore."
>
> Alla riga
> "    \t\te le accodano all'elenco della cronologia\n"
> credo che accodare vada declinato al singolare.
>
> Alla riga:
> "    Altrimenti, se HISTFILE è valorizzato, viene usato quest'ultimo.
> Se\n\n"
> c'è un ritorno a capo di troppo, credo.
>
> [...]
> > #: builtins.c:926
> > msgid ""
> > "Remove jobs from current shell.\n"
> > "    \n"
> > "    Removes each JOBSPEC argument from the table of active jobs.
> Without\n"
> > "    any JOBSPECs, the shell uses its notion of the current job.\n"
> > "    \n"
> > "    Options:\n"
> > "      -a\tremove all jobs if JOBSPEC is not supplied\n"
> > "      -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if
> the\n"
> > "    \t\tshell receives a SIGHUP\n"
> > "      -r\tremove only running jobs\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    Returns success unless an invalid option or JOBSPEC is given."
> > msgstr ""
> > "Rimuove job dalla shell corrente.\n"
> > "    \n"
> > "    Rimuove ciascun argomento SPECJOB dalla tabella dei job attivi.
> Senza "
> > "alcun\n"
> > "    SPECJOB, la shell usa la sua nozione del job corrente.\n"
> > "    \n"
> > "    Opzioni:\n"
> > "      -a\tRimuove tutti i job se non viene fornito uno SPECJOB\n"
> > "      -h\tMarca ciascun SPECJOB in modo che non venga inviato un SIGHUP
> al\n"
> > "    \t\tjob se la shell lo riceve\n"
> > "      -r\tRimuove solo i job in esecuzione\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    Restituisce successo a meno che non venga fornita una opzione non
> valida\n"
> > "    o uno SPECJOB."
>
> Cambierei le ultime due righe perché sembra che ci sia un errore nel caso
> di opzione non valida,
> oppure se viene fornito un qualsiasi SPECJOB; invece deve dare errore se
> c'è una opzione o una
> SPECJOB non valida.
>
> [...]
> > #: builtins.c:945
> > msgid ""
> > "Send a signal to a job.\n"
> > "    \n"
> > "    Send the processes identified by PID or JOBSPEC the signal named
> by\n"
> > "    SIGSPEC or SIGNUM.  If neither SIGSPEC nor SIGNUM is present,
> then\n"
> > "    SIGTERM is assumed.\n"
> > "    \n"
> > "    Options:\n"
> > "      -s sig\tSIG is a signal name\n"
> > "      -n sig\tSIG is a signal number\n"
> > "      -l\tlist the signal names; if arguments follow `-l' they are\n"
> > "    \t\tassumed to be signal numbers for which names should be listed\n"
> > "      -L\tsynonym for -l\n"
> > "    \n"
> > "    Kill is a shell builtin for two reasons: it allows job IDs to be
> used\n"
> > "    instead of process IDs, and allows processes to be killed if the
> limit\n"
> > "    on processes that you can create is reached.\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    Returns success unless an invalid option is given or an error
> occurs."
> > msgstr ""
> > "Invia un segnale a un job.\n"
> > "    \n"
> > "    Invia il segnale chiamato dallo SPECSEGN o dal NUMSEGN ai processi "
> > "identificati\n"
> > "    dal PID o dallo SPECJOB.  Se non è presente né lo SPECSEGN né il
> NUMSEGN,"
> > " viene\n"
> > "    allora considerato SIGTERM.\n"
> > "    \n"
> > "    Opzioni:\n"
> > "      -s segn\tSEGN è il nome di un segnale\n"
> > "      -n segn\tSEGN è il numero di un segnale\n"
> > "      -l\telenca i nomi dei segnali; se ci sono argomenti dopo \"-l\"\n"
> > "    \t\tvengono considerati come numeri di segnale di cui elencare i
> nomi\n"
> > "      -L\tsinonimo di -l\n"
> > "    \n"
> > "    Kill è un comando interno di shell per due ragioni: permette di
> usare\n"
> > "    gli ID dei job invece degli ID dei processi e permette di uccidere
> quei\n"
> > "    processi che abbiano raggiunto un numero limite prefissato di
> processi\n"
> > "    creabili.\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    Restituisce successo a meno che non sia fornita una opzione non
> valida o "
> > "si riscontri un errore."
>
> Alla riga
> "    Invia il segnale chiamato dallo SPECSEGN o dal NUMSEGN ai processi "
> togliere la preposizione articolata in questo modo:
> "    Invia il segnale chiamato SPECSEGN o NUMSEGN ai processi "
>
> e lo stessa anche dopo, ad esempio:
> "    dal PID o dallo SPECJOB.  Se non è presente né lo SPECSEGN né il
> NUMSEGN,"
> diventerebbe:
> "    dal PID o dallo SPECJOB. Se non è presente né SPECSEGN né NUMSEGN,"
>
> Questa parte invece è sbagliata:
> "    Kill è un comando interno di shell per due ragioni: permette di
> usare\n"
> "    gli ID dei job invece degli ID dei processi e permette di uccidere
> quei\n"
> "    processi che abbiano raggiunto un numero limite prefissato di
> processi\n"
> "    creabili.\n"
>
> il limite di processi non è una caratteristica del processo, ma dell'utente
> (o del container, ma quella è un'altra storia). Vale a dire che non può
> capitare che un processo abbia raggiunto il limite di processi. Invece
> capita
> che l'utente abbia un limite e lo raggiunga. In questo caso, se kill fosse
> un
> comando esterno, la bash dovrebbe creare un processo per eseguirlo, ma
> questo
> fallirebbe a causa del limite. Invece in quanto comando interno, viene
> eseguito dallo stesso processo della bash, senza incappare nel limite di
> processi.
>
> [...]
> > #: builtins.c:969
> > msgid ""
> > "Evaluate arithmetic expressions.\n"
> > "    \n"
> > "    Evaluate each ARG as an arithmetic expression. Evaluation is done
> in\n"
> > "    fixed-width integers with no check for overflow, though division by
> 0\n"
> > "    is trapped and flagged as an error.  The following list of
> operators is\n"
> > "    grouped into levels of equal-precedence operators.  The levels are "
> > "listed\n"
> > "    in order of decreasing precedence.\n"
> > "    \n"
> > "    \tid++, id--\tvariable post-increment, post-decrement\n"
> > "    \t++id, --id\tvariable pre-increment, pre- decrement\n"
> > "    \t-, +\t\tunary minus, plus\n"
> > "    \t!, ~\t\tlogical and bitwise negation\n"
> > "    \t**\t\texponentiation\n"
> > "    \t*, /, %\t\tmultiplication, division, remainder\n"
> > "    \t+, -\t\taddition, subtraction\n"
> > "    \t<<, >>\t\tleft and right bitwise shifts\n"
> > "    \t<=, >=, <, >\tcomparison\n"
> > "    \t==, !=\t\tequality, inequality\n"
> > "    \t&\t\tbitwise AND\n"
> > "    \t^\t\tbitwise XOR\n"
> > "    \t|\t\tbitwise OR\n"
> > "    \t&&\t\tlogical AND\n"
> > "    \t||\t\tlogical OR\n"
> > "    \texpr ? expr : expr\n"
> > "    \t\t\tconditional operator\n"
> > "    \t=, *=, /=, %=,\n"
> > "    \t+=, -=, <<=, >>=,\n"
> > "    \t&=, ^=, |=\tassignment\n"
> > "    \n"
> > "    Shell variables are allowed as operands.  The name of the
> variable\n"
> > "    is replaced by its value (coerced to a fixed-width integer)
> within\n"
> > "    an expression.  The variable need not have its integer attribute\n"
> > "    turned on to be used in an expression.\n"
> > "    \n"
> > "    Operators are evaluated in order of precedence.  Sub-expressions
> in\n"
> > "    parentheses are evaluated first and may override the precedence\n"
> > "    rules above.\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    If the last ARG evaluates to 0, let returns 1; let returns 0
> otherwise."
> > msgstr ""
> > "Valuta espressioni aritmetiche.\n"
> > "    \n"
> > "    Valuta ciascun ARG come una espressione aritmetica.  La valutazione
> è\n"
> > "    effettuata con interi a larghezza fissa senza alcun controllo
> sull'overflow,\n"
> > "    sebbene la divisione per 0 sia catturata e contrassegnata come un
> errore.\n"
> > "    Il seguente elenco di operatori è raggruppato per livelli di
> operatore\n"
> > "    di uguale precedenza.  I livelli sono elencati in ordine di
> precedenza\n"
> > "    decrescente.\n"
> > "    \n"
> > "    \tid++, id--\tIncremento e decremento successivo di variabile\n"
> > "    \t++id, --id\tIncremento e decremento precedente di variabile\n"
> > "    \t-, +\t\tMeno e più unari\n"
> > "    \t!, ~\t\tNegazione logica e bit a bit\n"
> > "    \t**\t\tEsponenziazione\n"
> > "    \t*, /, %\t\tMoltiplicazione, divisione, resto\n"
> > "    \t+, -\t\tAddizione, sottrazione\n"
> > "    \t<<, >>\t\tScorrimento bit a bit sinistro e destro\n"
> > "    \t<=, >=, <, >\tComparazione\n"
> > "    \t==, !=\t\tUguaglianza, disuguaglianza\n"
> > "    \t&\t\tAND bit a bit\n"
> > "    \t^\t\tXOR bit a bit\n"
> > "    \t|\t\tOR bit a bit\n"
> > "    \t&&\t\tAND logico\n"
> > "    \t||\t\tOR logico\n"
> > "    \tespr ? espr : espr\n"
> > "    \t\t\tOperatore condizionale\n"
> > "    \t=, *=, /=, %=,\n"
> > "    \t+=, -=, <<=, >>=,\n"
> > "    \t&=, ^=, |=\tAssegnazione\n"
> > "    \n"
> > "    Le variabili di shell sono ammesse come operandi. Il nome della "
> > "variabile è\n"
> > "    sostituito dal suo valore (forzato a un intero a larghezza fissa) "
> > "all'interno\n"
> > "    di una espressione.  Non è necessario che la variabile abbia il
> proprio "
> > "attributo\n"
> > "    intero abilitato per essere usata in una espressione.\n"
> > "    \n"
> > "    Gli operatori sono valutati in ordine di precedenza.  Le
> sottoespressioni\n"
> > "    tra parentesi sono valutate per prime e possono avere la precedenza
> sulle\n"
> > "    regole sopradescritte.\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    Se l'ultimo ARG viene valutato pari a 0 restituisce 1, altrimenti "
> > "restituisce 0."
>
> alla riga:
> "    Il seguente elenco di operatori è raggruppato per livelli di
> operatore\n"
> credo che la parola finale vada al plurale.
>
> alle righe:
> "    \tid++, id--\tIncremento e decremento successivo di variabile\n"
> "    \t++id, --id\tIncremento e decremento precedente di variabile\n"
> io non ho mai sentito parlare di incremento e decremento precedente o
> successivo, ma magari è uso comune e io non lo so. Quello che ho sempre
> sentito e letto è l'utilizzo delle formule latine pre- e post-, esattamente
> come inglese.
>
> [...]
> > #: builtins.c:1014
> > msgid ""
> > "Read a line from the standard input and split it into fields.\n"
> > "    \n"
> > "    Reads a single line from the standard input, or from file
> descriptor FD\n"
> > "    if the -u option is supplied.  The line is split into fields as
> with "
> > "word\n"
> > "    splitting, and the first word is assigned to the first NAME, the
> second\n"
> > "    word to the second NAME, and so on, with any leftover words
> assigned to\n"
> > "    the last NAME.  Only the characters found in $IFS are recognized as
> "
> > "word\n"
> > "    delimiters. By default, the backslash character escapes delimiter "
> > "characters\n"
> > "    and newline.\n"
> > "    \n"
> > "    If no NAMEs are supplied, the line read is stored in the REPLY
> variable."
> > "\n"
> > "    \n"
> > "    Options:\n"
> > "      -a array\tassign the words read to sequential indices of the
> array\n"
> > "    \t\tvariable ARRAY, starting at zero\n"
> > "      -d delim\tcontinue until the first character of DELIM is read,
> rather\n"
> > "    \t\tthan newline\n"
> > "      -e\tuse Readline to obtain the line\n"
> > "      -E\tuse Readline to obtain the line and use the bash default\n"
> > "    \t\tcompletion instead of Readline's default completion\n"
> > "      -i text\tuse TEXT as the initial text for Readline\n"
> > "      -n nchars\treturn after reading NCHARS characters rather than
> waiting\n"
> > "    \t\tfor a newline, but honor a delimiter if fewer than\n"
> > "    \t\tNCHARS characters are read before the delimiter\n"
> > "      -N nchars\treturn only after reading exactly NCHARS characters, "
> > "unless\n"
> > "    \t\tEOF is encountered or read times out, ignoring any\n"
> > "    \t\tdelimiter\n"
> > "      -p prompt\toutput the string PROMPT without a trailing newline
> before\n"
> > "    \t\tattempting to read\n"
> > "      -r\tdo not allow backslashes to escape any characters\n"
> > "      -s\tdo not echo input coming from a terminal\n"
> > "      -t timeout\ttime out and return failure if a complete line of\n"
> > "    \t\tinput is not read within TIMEOUT seconds.  The value of the\n"
> > "    \t\tTMOUT variable is the default timeout.  TIMEOUT may be a\n"
> > "    \t\tfractional number.  If TIMEOUT is 0, read returns\n"
> > "    \t\timmediately, without trying to read any data, returning\n"
> > "    \t\tsuccess only if input is available on the specified\n"
> > "    \t\tfile descriptor.  The exit status is greater than 128\n"
> > "    \t\tif the timeout is exceeded\n"
> > "      -u fd\tread from file descriptor FD instead of the standard
> input\n"
> > "    \n"
> > "    Exit Status:\n"
> > "    The return code is zero, unless end-of-file is encountered, read
> times "
> > "out\n"
> > "    (in which case it's greater than 128), a variable assignment error "
> > "occurs,\n"
> > "    or an invalid file descriptor is supplied as the argument to -u."
> > msgstr ""
> > "Legge una riga dallo standard input e la divide in campi.\n"
> > "    \n"
> > "    Legge una singola riga dallo standard input o, se viene fornita "
> > "l'opzione -u,\n"
> > "    dal descrittore di file FD.  La riga è divisa in campi
> corrispondenti a\n"
> > "    parole dove la prima parola è assegnata al primo NOME, la seconda "
> > "parola\n"
> > "    al secondo NOME e così via, con ciascuna parola rimanente assegnata
> al\n"
> > "    corrispondente ultimo NOME. Sono riconosciuti come delimitatori di "
> > "parola\n"
> > "    solo quelli presenti in $IFS. Come impostazione predefinita, il
> carattere\n"
> > "    backslash viene usato come escape per i caratteri delimitatore e\n"
> > "    \"a capo\".\n"
> > "    \n"
> > "    Se non viene fornito alcun NOME, la riga letta è memorizzata nella "
> > "variabile REPLY.\n"
> > "    \n"
> > "    Opzioni:\n"
> > "      -a array\tAssegna le parole lette agli indici sequenziali della "
> > "variabile\n"
> > "    \t\tdi ARRAY, iniziando da zero\n"
> > "      -d delim\tContinua fino alla lettura del primo carattere di
> DELIM, "
> > "invece\n"
> > "    \t\tdi un ritorno a capo \n"
> > "      -e\tUsa Readline per ottenere la riga\n"
> > "      -E\tUsa Readline per ottenere la riga, e utilizza il
> completamento\n"
> > "    \t\tpredefinito d bash anziché quello predefinito di Readline\n"
> > "      -i testo\tUsa TESTO come testo iniziale per Readline\n"
> > "      -n ncarat\tRitorna dopo la lettura di NCARAT caratteri invece di "
> > "attendere\n"
> > "    \t\tun a capo, ma rispetta un delimitatore se vengono letti meno
> di\n"
> > "    \t\tNCARAT caratteri prima del delimitatore stesso\n"
> > "      -N ncarat\tRitorna solo dopo la lettura di NCARAT caratteri
> esatti, a "
> > "meno che non si\n"
> > "    \t\triscontri un EOF o un time out di lettura, ignorando
> qualsiasi\n"
> > "    \t\tdelimitatore\n"
> > "      -p stringa\tVisualizza la stringa PROMPT senza un a capo finale
> prima\n"
> > "    \t\tdel tentativo di lettura\n"
> > "      -r\t\tNon ammette backslash per fare l'escape dei caratteri\n"
> > "      -s\t\tNon fa l'echo dell'input proveniente da un terminale\n"
> > "      -t secondi\tVa in timeout e restituisce insuccesso se non viene
> letta\n"
> > "    \t\tuna riga di input completa entro i SECONDI forniti. Il valore
> della\n"
> > "    \t\tvariabile TMOUT è il timeout predefinito.  SECONDI può essere\n"
> > "    \t\tuna frazione. Se SECONDI è pari a 0, la lettura termina
> immediata-\n"
> > "    \t\tmente, senza provare a leggere dati, restituendo successo\n"
> > "    \t\tsolo se l'input è disponibile sul descrittore di file
> specificato.\n"
> > "    \t\tSe viene superato il timeout lo stato di uscita è maggiore di
> 128\n"
> > "      -u fd\t\tLegge dal descrittore di file FD invece che dallo
> standard "
> > "input\n"
> > "    \n"
> > "    Stato di uscita:\n"
> > "    Il codice restituito è zero a meno che non sia riscontrato un EOF,
> un\n"
> > "    timeout in lettura (nel qual caso sarà maggiore di 128), un errore
> di\n"
> > "    assegnazione di variabili, o venga fornito un descrittore di file
> non\n"
> > "    valido come argomento per -u."
>
> Alle righe:
> "    al secondo NOME e così via, con ciascuna parola rimanente assegnata
> al\n"
> "    corrispondente ultimo NOME. Sono riconosciuti come delimitatori di "
> credo che in questo caso non ci sia una corrispondenza degli argomenti
> rimasti,
> appunto, senza variabile corrispondente. Quindi cambierei la frase in
> questo modo:
> "    al secondo NOME e così via, con ciascuna parola rimanente assegnata\n"
> "    all'ultimo NOME. Sono riconosciuti come delimitatori di "
>
> Alle righe:
> "      -a array\tAssegna le parole lette agli indici sequenziali della "
> "variabile\n"
> "    \t\tdi ARRAY, iniziando da zero\n"
> se non ho capito male, ARRAY è un segnaposto per una variabile di tipo
> vettore.
> In questo caso non direi «variabile di ARRAY», ma «variabile ARRAY».
>
> Inoltre, hai usato varie volte NCARAT come segnaposto, ma nell'altra
> stringa
> tradotta, che riporto qui, hai usato, due volte, ncaratt con due «t»:
>
> msgid ""
> "read [-Eers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
> "prompt] [-t timeout] [-u fd] [name ...]"
> msgstr ""
> "read [-Eers] [-a array] [-d delim] [-i testo] [-n ncaratt] [-N ncaratt]
> [-p "
> "stringa] [-t secondi] [-u fd] [nome ...]"
>
> [...]
>
>
> --
> principale: http://www.linux.it/tp/
> ausiliaria: http://fly.cnuce.cnr.it/gnu/tp/ausiliaria.html
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.linux.it/pipermail/tp/attachments/20250513/dc12033d/attachment-0001.htm>


Maggiori informazioni sulla lista tp