Fråga om kommando cd /&[mapp]

Permalänk
Medlem

Fråga om kommando cd /&[mapp]

Hej.

Jag slog in kommandon lite för snabbt i linux och råkade slå cd /&mapp istället för cd /mapp. Det stod typ att "command excecuted", minns inte exakt.

Vad har jag gjort egentligen?

Permalänk
Medlem

& kör ett till program på samma rad, egentligen som en logisk AND(returnerar sant om och endast om båda delar var sanna) men resultatet är att du kör båda två. Så det du gjort i detta fall är helt enkelt att du kört "cd /" och sen "mapp".

Ett tips är att använda command completion - Nästan överallt i Linux-terminalen kan du använda Tab-knappen för att skriva färdigt ett ord som du börjat på. Trycker du två gånger får du en lista på möjliga kompletteringar som går att göra på just det stället i kommandot. Detta är ett bra sätt att skriva både snabbare och säkrare.

Skickades från m.sweclockers.com

Permalänk
Legendarisk

@milky81: & instruerar ditt shell att köra kommandot i bakgrunden. Din rad har sett ut som två separata kommandon där cd / har körts i bakgrunden (och inte påverkat ditt första shell) och mapp som vanligt. Såvida inte mapp även var ett annat giltigt kommando i din path har du inte gjort något farligt.

http://www.gnu.org/software/bash/manual/bashref.html#index-co...
http://www.gnu.org/software/bash/manual/bashref.html#Job-Cont...

@dagbro: Du tänker nog på &&. Vill man att båda kommandon ska utföras oberoende av hur det första avslutades så bör man dock använda ; istället:

kommando1 && kommando2 # kommando2 körs om kommando1 avslutas med status = 0 kommando1 || kommando2 # kommando2 körs om kommando1 avslutas med status <> 0 kommando1; kommando2 # kommando2 körs oavsett

Permalänk
Medlem
Skrivet av dagbro:

& kör ett till program på samma rad, egentligen som en logisk AND(returnerar sant om och endast om båda delar var sanna) men resultatet är att du kör båda två. Så det du gjort i detta fall är helt enkelt att du kört "cd /" och sen "mapp".

Nja, du blandar ihop & med &&. && fungerar som du säger att den kör det andra kommandot endast om det första lyckas. Ett ensamt & avslutar däremot ett asynkront kommando, på samma sätt som ny rad eller ; avslutar ett synkront kommando. Så & efter ett kommando kommer att köra det kommandot i bakgrunden och genast returnera. I detta fallet blir alltså resultatet att "cd /" börjar köras i bakgrunden, och därefter körs "mapp" oavsett om "cd /" är klart eller inte.

Och eftersom "cd /" körs i ett separat sub-skal så kommer det inte att påverka skalet som du använder. Så "cd /&mapp" kommer rent praktiskt att köra "mapp" utan att ändra vilken mapp du befinner dig i, medan "cd / && mapp" kommer att gå till / och därefter köra "mapp" om "cd /" utfördes korrekt. "cd /&&mapp" är jag dock lite osäker på hur det tolkas.

Permalänk
Medlem
Skrivet av dagbro:
Skrivet av Tunnelsork:
Skrivet av perost:

Ok, tackar för alla svar!