jargong fil definitionEdit
jargong filversion 4.4.7 listar detta som definitionen av cat
:
- för att spjuta en hel fil på skärmen eller någon annan utgång diskbänk utan paus (syn. Blast).
- i förlängningen, att dumpa stora mängder data på en oförberedd mål eller utan avsikt att surfa det noggrant. Användning: anses dumt. Sällsynta utanför Unix platser. Se även dd, BLT.,
bland Unix-fans anses cat(1) vara ett utmärkt exempel på användargränssnitt, eftersom det levererar filinnehållet utan sådan verbositet som avstånd eller rubriker mellan filerna, och eftersom det inte kräver att filerna ska bestå av textrader, men fungerar med någon form av data.
bland Unix kritiker, cat(1) anses vara den kanoniska exempel på dålig användargränssnitt design, på grund av dess bedrövligt unobvious namn. Det är mycket oftare används för att spränga en enda fil till standard utgång än att sammanfoga två eller flera filer., Namnet cat för den tidigare operationen är lika ointuitivt som Lisps cdr.
värdelös användning av catEdit
värdelös användning av cat (UUOC) är vanligt Unix jargong för kommandoradskonstruktioner som bara ger en funktion av bekvämlighet för användaren. Detta kallas också ”kattmissbruk”. Aktiviteten för att fixera instanser av UUOC kallas ibland demoggifiering., Exempel på en vanlig cat
missbruk ges i priset:
cat filename | command arg1 arg2 argn
detta kan skrivas om med omdirigering av stdin istället, i någon av följande former (den första är mer traditionell):
command arg1 arg2 argn < filename <filename command arg1 arg2 argn
utöver andra fördelar tillåter inmatningsomriktningsformerna kommandot att utföra slumpmässig åtkomst på filen, medan
command arg1 arg2 argn < filename <filename command arg1 arg2 argn
div id = ”bc6147d498” >
exempel gör det inte., Detta beror på att omdirigeringsformuläret öppnar filen som stdin-fildeskriptorn vilket kommando som helt kan komma åt, medancat
– formuläret helt enkelt ger data som en ström av byte.
ett annat vanligt fall där cat
är onödigt är där ett kommando som standard fungerar på stdin, men kommer att läsa från en fil, om filnamnet ges som ett argument., Detta är fallet för många vanliga kommandon; följande exempel
cat "$file" | grep "$pattern" cat "$file" | less
kan istället skrivas som
grep "$pattern" "$file" less "$file"
en gemensam interaktiv användning avcat
för en enda fil är att mata ut innehållet i en fil till standardutmatning. Om utmatningen leds eller omdirigeras är dockcat
onödigt.
acat
skrivet med UUOC kan fortfarande vara att föredra av läsbarhetsskäl, eftersom det kan vara lättare att konceptualisera att läsa en piped stream från vänster till höger., Dessutom kan en felaktig användning av omdirigeringssymbolen ”>” istället för ”<” (ofta intill tangentbord) permanent ta bort innehållet i en fil, med andra ord clobbering, och ett sätt att undvika detta är att använda cat
med rör. Jämför:
command < in | command2 > out <in command | command2 > out
med:
cat in | command | command2 > out