Perché il cmd.exe di Windows è limitato a 80 caratteri?


Answers

Se sei un fobico del mouse puoi anche solo digitare questo all'interno della finestra di cmd:

mode <cols>,<lines>
mode 80,25
mode 120,50
etc.
Question

Adoro allungare il mio terminale su Unix. Qual è la storia o la ragione dietro la riga di comando di Windows Lame?




Poiché la MS attribuisce la "retrocompatibilità" a un sacco di cose e in questo caso sospetto che sia una convinzione mal riposta che in qualche modo innervosirà le persone se non hanno la loro finestra standard 80 di larghezza.

Certo, potrebbe essere che fosse programmato per una larghezza fissa di 80 caratteri quando era praticamente universale, e le impostazioni di proprietà aggiuntive erano un po 'incisive.




Come altri hanno sottolineato, non è limitato a 80 caratteri di larghezza, ma la mia ipotesi sul perché il valore predefinito di 80 caratteri sarebbe che è rimasto dai giorni DOS in cui i display CRT erano 80 caratteri di larghezza.

Guarda anche




Dato che scorrerà da sinistra a destra e su e giù, la prima cosa che faccio su un sistema è definire la mia larghezza come 180 e salvarla. In genere è sufficiente in modo che le tracce dello stack non debbano essere avvolte per la maggior parte, ma non tanto per cui ci si aspetta un sacco di spazio.

Mentre ci sei, imposta la dimensione verticale (scrollback buffer) su tutti i 9. Sarai felice di averlo fatto un giorno.




Non conosco la storia dietro di esso, ma questo elemento della wishlist dell'autore di PuTTy è un post interessante che spiega gli ostacoli tecnici coinvolti con qualsiasi tipo di sostituzione di cmd.exe che non sia zoppa:

http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/win-command-prompt.html

Non parli del fatto che stai cercando un sostituto, ma in tal caso potresti anche controllare alcune delle sostituzioni di cmd.exe come Console 2 o il comando Take di JP Software, ecc. Ho anche avuto alcune buone esperienze con PuTTy- Cyg che ti permette di usare PuTTy come shell cygwin.




RE: Perché la MS attribuisce la "retrocompatibilità" a molte cose e in questo caso sospetto che sia una convinzione mal riposta che in qualche modo innervosirà le persone se non hanno la loro finestra standard 80 di larghezza.

Tuttavia, la compatibilità con le versioni precedenti funziona molto male. Non immagino che Microsoft sia stata abbastanza meticolosa riguardo alla loro implementazione, e credo che Microsoft sia il ragazzo dei poster per assicurarsi che le versioni più recenti non funzionino con le versioni precedenti. Molto non funziona correttamente sotto COMMAND.COM, che sabotizza considerevolmente l'utilità che possiede, per non parlare del fatto che devi entrare DOSONLY per far funzionare correttamente alcuni programmi, inoltre Microsoft ha rimosso i comandi utili. Onestamente, non riesco a immaginare che Microsoft detenga la "retrocompatibilità" in gran parte delle considerazioni.

Inoltre, ritengo che la vera ragione per cui la lunghezza della linea sia allo standard di 80 colonne è perché la maggior parte dei programmi da riga di comando, ecc., Operano presupponendo che l'utente abbia un limite su un prompt di 80 colonne, il che significa che l'aumento della larghezza può causare errori di formattazione o, peggio, possono eventualmente interrompere i programmi.

Come menzionato da jmucchiello, la MODALITÀ funzionerà correttamente per ridimensionare la finestra se ne hai voglia.

Configures system devices.

Serial port:       MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]
                                [to=on|off] [xon=on|off] [odsr=on|off]
                                [octs=on|off] [dtr=on|off|hs]
                                [rts=on|off|hs|tg] [idsr=on|off]

Device Status:     MODE [device] [/STATUS]

Redirect printing: MODE LPTn[:]=COMm[:]

Select code page:  MODE CON[:] CP SELECT=yyy

Code page status:  MODE CON[:] CP [/STATUS]

Display mode:      MODE CON[:] [COLS=c] [LINES=n]

Typematic rate:    MODE CON[:] [RATE=r DELAY=d]

Se si dispone di DOSONLY abilitato sul CONFIG.NT, tuttavia, quando si apre COMMAND.COM, erediterà una corretta risoluzione di linea in stile DOS da cmd.exe, ma non è possibile richiamare MODE da COMMAND.COM. Se si desidera ridimensionare all'interno di COMMAND.COM, sarà necessario utilizzare le istruzioni di assemblaggio a 16 bit, in questo modo:

Risoluzione di linea 80x50 (nessun framebuffer, nessun SVGA, virtualmente universalmente supportato).

DEBUG
A100
MOV AX,1112
INT 10
INT 20

G
Q

Risoluzione linea 132x60 (nessun framebuffer, richiede SVGA. Non funziona su schede ATI gfx, di solito funziona su schede nVidia gfx, afaict funziona sempre su schede gfx integrate Intel).

DEBUG
A100
MOV AX,4F02
MOV BX,010C
INT 10
INT 20

G Q

Se inserisci questo sul tuo COMMAND.COM, ti darà la risoluzione specificata. (Attenzione: se il tuo monitor è abbastanza antico da non supportare la modalità, potresti finire per distruggerlo.) Nota a margine: se riesci a eseguire Windows, il tuo monitor dovrebbe andare bene. Disclaimer: l'accento dovrebbe essere, e sei stato avvisato , quindi non è un mio problema se il tuo monitor è in frittura. ;-) Tuttavia, se lo usi senza DOSONLY abilitato, COMMAND.COM ridimensiona le dimensioni precedenti non appena l'applicazione (in questo caso, a meno che tu non l'abbia scritta in un file ed eseguito, DEBUG).

In alternativa, è possibile utilizzare MODE.COM di FreeDOS, che verrà eseguito correttamente in COMMAND.COM impostato su DOSONLY. Puoi estrarlo dall'immagine del disco sul sito ufficiale (freedos.org) o scaricarlo all'indirizzo http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mode/2005/ .

New FreeDOS MODE by Eric Auer 2003-2005. License: GPL.   (version 12may2005)
MODE [device] [/STA[TUS]]                (show status of one or all devices)
MODE LPTn[:] cols[,[lines][,retry]]     (cols or cpi, 6/8 lpi, retry p or n)
MODE LPTn[:] [COLS=...] [LINES=...] [RETRY=...] (retry: p infinite / n none)
MODE LPTn[:]=[COMn[:]|NUL]     (redirect printer data to serial port or NUL)
MODE COMn[:] baud,parity,data,stop,retry              (empty values allowed)
MODE COMn[:] [BAUD[HARD]=...] [PARITY=...] [DATA=...] [STOP=...] [RETRY=...]
  Baud can be abbreviated to unique prefix,  parity can be o/e/n/s/m,  the
  latter 2 mean space/mark, data can be 5..8, stop 1..2. Retry is IGNORED!
  PLANNED: Retry b/e/r -> busy/error/ready if busy, p/n infinite/no retry.
MODE CON[:] [CP|CODEPAGE] [/STA[TUS]]       (FreeDOS DISPLAY must be loaded)
MODE CON[:] [CP|CODEPAGE] REF[RESH]                          (needs DISPLAY)
MODE CON[:] [CP|CODEPAGE] SEL[ECT]=number                    (needs DISPLAY)
MODE CON[:] [CP|CODEPAGE] PREP[ARE]=((codepage) filename)    (needs DISPLAY)
  Use PREP=((,cp2,cp3,,cp5) ...) to prep codepages in other buffers.
MODE [40|80|BW40|BW80|CO40|CO80|MONO][,rows]  (rows can be 25, 28, 43 or 50)
  Use 8, 14 or 16 as 'rows' value if you only want to change the font.
MODE [CO40|CO80|...],[R|L][,T] (shift CGA left/right, T is interactive mode)
MODE CON[:] [NUMLOCK|CAPSLOCK|SCROLLLOCK|SWITCHAR]=value
  Value can be: + or - for the locks or a character for switchar.
MODE CON[:] [COLS=...] [LINES=...] (possible values depend on your hardware)
MODE CON[:] [RATE=...] [DELAY=...]        (default rate 20, default delay 1)
  Rate can be 1..32 for 2..30 char/sec,  delay can be 1..4 for 1/4..4/4 sec.

Per gli stessi motivi con il codice ASM che ho fornito, a meno che non lo si esegua in COMMAND.COM con DOSONLY aggiunto al file CONFIG.NT, la finestra rimbalzerà immediatamente alla dimensione precedente dopo l'uscita da MODE.COM.

Infine, come altri hanno affermato, è anche possibile modificare queste impostazioni semplicemente facendo clic destro sulla barra del titolo del prompt dei comandi e modificando Proprietà -> Layout. Allo stesso modo, è possibile impostare la risoluzione per eventuali collegamenti a CMD.EXE e file batch (fare clic con il pulsante destro del mouse sul collegamento -> Proprietà -> Layout). Ciò funziona solo per CMD.EXE, tuttavia, non COMMAND.COM.





Tags