Cat i / lub echo kilku rzeczy w jednym pliku w „jednym wierszu poleceń”

0

Wiem, że możemy robić takie rzeczy:

stat -f%z mybigfile > RELEASENOTES.txt

i

echo "bytes" >> RELEASENOTES.txt

Teraz RELEASENOTES.txt będzie wyglądać następująco:

47556304
bytes

Jak mogę uzyskać „bajty” w tej samej linii? To jest mój cel, ale gdybym tylko wiedział, jak połączyć łańcuchy w wierszu poleceń terminalu OS X, mógłbym to zrobić. Jakakolwiek odpowiedź jest dobra :-)

Jonny
źródło

Odpowiedzi:

0

Stan obecny:

BIGFILE=myverybigfile
echo File size: $(stat -f%z ${BIGFILE}) bytes > RELEASENOTES
echo ${whatissnewinthisbuild} >> RELEASENOTES

Rozumiem! Coś takiego: (stary)

BIGFILE="myverybigfile"
echo "File size:" `stat -f%z ${BIGFILE}` "bytes" > RELEASENOTES
echo "${whatissnewinthisbuild}" >> RELEASENOTES
Jonny
źródło
1
Dobra robota. Właśnie miałem opublikować odpowiedź. W każdym razie $(stat -f%z ${BIGFILE}jest zalecane zamiast używania tyknięć. Nie potrzebujesz również podwójnych cudzysłowów.
Anthony Geoghegan
1
W tym przypadku możesz uniknąć ucieczki od cytatów, ponieważ masz do czynienia z względnie łagodnymi poleceniami i masz dużą kontrolę nad sytuacją. Powinieneś jednak ogólnie cytować wszystko oprócz literalnych ciągów, chyba że masz ku temu dobry powód i na pewno wiesz, co robisz. Na przykład spróbuj printf "foo %b bar\n" "\052"; następnie spróbuj echo File size: $(printf "foo %b bar\n" "\052") bytes. … (Ciąg dalszy)
G-Man
1
(Ciąg dalszy)… Powiedzenie ${BIGFILE} to nie to samo, co zacytowanie . Jeśli istnieje jakakolwiek możliwość, że nazwa pliku zawiera znaki specjalne, powinieneś powiedzieć stat -f%z "$BIGFILE". I tak, w sytuacjach takich jak to ( OK), można umieszczać cudzysłowy w cudzysłowieecho "File size: $(stat -f%z "$BIGFILE") bytes" .
G-Man