Just nu i M3-nätverket
Gå till innehåll

Att köra cat på binärfil


squarehead

Rekommendera Poster

Jag har åter börjat intressera mig för Linux och har därför installerat en övningsdistribution kallad Floppix. Den består av 2 disketter, dras igång från DOS-läge och installerar sig sedan i RAMDISK.

 

Hursomhelst.. läste att kommandot cat kunde åstadkomma oberäkneliga resultat om man körde det på en binärfil. Jag var naturligtvis tvungen att testa detta, nyfiken som jag är. Jag hade räknat med att ett vattenfall av konstiga tecken skulle rasa fram över skärmen. På den punkten fick jag rätt. Vattenfallet ackompanjerades också av några pip från systemhögtalaren. Så långt är jag med. Men när kommandot exekverat klart är mitt shell (bash) helt förstört. Alla tecken är helt vanställda. Jag kan skriva kommandon precis som vanligt, men alla bokstäver som skrivs ut på skärmen (både de jag matar in från tangentbordet och utdata från program) är ersatta av andra flummiga tecken.

 

Min fråga är... Hur kan detta ske?? cat har väl bara till uppgift att skriva ut filens innehåll, inte att på något sätt _köra_ innehållet och låta det påverka "moderprocessen" bash på det här sättet.

 

Om någon känner till en bättre övningsdist. som kan bootas direkt från diskett (utan omvägen via DOS) är jag tacksam. Min gamla dator klarar tyvärr inte att boota från CD-ROM, så jag vet inte hur jag ska lyckas med en ordentlig installation framöver. Men det är en senare fråga.

 

Länk till kommentar
Dela på andra webbplatser

Ett shell emulerar en "terminal" och denna terminal reagerar på vissa sekvenser av koder.

 

En sak som kan hjälpa är att skriva

 

stty sane[CTRL-J]

 

D v s skriv "stty sane" och tryck CTRL-J.

 

När du skriver ut en fils innehåll till terminalen kan du göra precis samma sak som du kan göra från tangentbordet. Ställa om terminalen, flytta markören o s v. En terminal styr man genom att skriva ut kontrolltecken. En viss sekvens för att flytta markören, en viss sekvens för att rensa skärmen. En binärfil kan ju innehålla i princip vilka sekvenser (=terminalkommandon) som helst.

 

Istället för cat rekommenderar jag att använda "less" för att titta på filer. Fast det blir inte lika "roligt" som cat ;)

 

Fotnot: Terminaler och dess användning (t ex pseudoterminaler) är ett STORT kapitel i *NIX (bl a Linux). Inte alls samma sak som kommandoraden i Windows. :)

 

[inlägget ändrat 2005-06-23 03:32:07 av lizardKng]

Länk till kommentar
Dela på andra webbplatser

Tack för svaret.

 

Så stty är ett kommando för att ställa in egenskaperna hos terminalen. Har inte riktigt greppat skillanden mellan shell och terminal. Jag får läsa på lite mer om det.

 

Varför just Ctrl-J? Är det också ett kontrolltecken och vilken funktion har det i så fall?

 

Länk till kommentar
Dela på andra webbplatser

CTRL-J = LF = Line feed = radmatning = det som avslutar en rad i Linux. Om terminalen blivit konstig kan returtangenten skicka knasiga saker och att trycka CTRL-J blir det enda sätt man har kvar att köra kommandot.

 

Länk till kommentar
Dela på andra webbplatser

Okej. Testade förresten att göra om experimentet, men stty sane [Ctrl-J] gjorde ingen skillnad i just det här fallet.

 

Länk till kommentar
Dela på andra webbplatser

Intressant...min gnome-terminal fick spel, en xterm klarade sig fint. 'reset' brukar normalt klara biffen, men iaf i gnome-terminal så har det ingen effekt.

 

 

==Coleburn==

 

--------------------

"It takes a lot of knowledge to

really mess something up!"

 

Länk till kommentar
Dela på andra webbplatser

  • 2 months later...

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...