# ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ "*" Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠΌΠ΅Π½Π°, Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ "/".
do n=`echo "$filename/" | tr '[:upper:]' '[:lower:]'`
# ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ POSIX.
# ΠΠ°Π²Π΅ΡΡΠ°ΡΡΠΈΠΉ ΡΠ»ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ
# Π½Π΅ Π±ΡΠ» ΡΠ΄Π°Π»Π΅Π½ ΠΏΡΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
# ΠΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
n=${n%/} # Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅.
[[ $filename == $n ]] || mv "$filename" "$n"
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° -- Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°.
done
exit 0
ΠΡΠΈΠΌΠ΅Ρ 12-16. du: ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ· ΡΠΎΡΠΌΠ°ΡΠ° DOS Π² ΡΠΎΡΠΌΠ°Ρ UNIX.
#!/bin/bash
# du.sh: ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ· ΡΠΎΡΠΌΠ°ΡΠ° DOS Π² ΡΠΎΡΠΌΠ°Ρ UNIX.
E_WRONGARGS=65
if [ -z "$1" ]
then
echo "ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: `basename $0` filename-to-convert"
exit $E_WRONGARGS
fi
NEWFILENAME=$1.unx
CR='\015' # ΠΠΎΠ·Π²ΡΠ°Ρ ΠΊΠ°ΡΠ΅ΡΠΊΠΈ.
# Π‘ΡΡΠΎΠΊΠΈ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»Π°Ρ DOS Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² CR-LF.
tr -d $CR < $1 > $NEWFILENAME
# Π£Π΄Π°Π»ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ CR ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ».
echo "ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ»: \"$1\"."
echo "ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ»: \"$NEWFILENAME\"."
exit 0
ΠΡΠΈΠΌΠ΅Ρ 12-17. rot13: Π‘Π²Π΅ΡΡ ΡΠ»Π°Π±ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ rot13.
#!/bin/bash
# rot13.sh: ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ rot13,
# ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ "ΡΠ°ΡΠΊΠΎΠ»ΠΎΡΡ" Π΄Π°ΠΆΠ΅ 3-Ρ Π»Π΅ΡΠ½ΠΈΠΉ ΡΠ΅Π±Π΅Π½ΠΎΠΊ.
# ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: ./rot13.sh filename
# ΠΈΠ»ΠΈ ./rot13.sh <filename
# ΠΈΠ»ΠΈ ./rot13.sh ΠΈ Π²Π²Π΅ΡΡΠΈ ΡΠ΅ΠΊΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ (stdin)
cat " [email protected]" | tr 'a-zA-Z' 'n-za-mN-ZA-M' # "a" Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° "n", "b" Π½Π° "o", ΠΈ Ρ.Π΄.
# ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ 'cat " [email protected]"'
#+ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ ΡΠΎ stdin, ΡΠ°ΠΊ ΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
exit 0
ΠΡΠΈΠΌΠ΅Ρ 12-18. ΠΠΎΠ»Π΅Π΅ "ΡΠ»ΠΎΠΆΠ½ΡΠΉ" ΡΠΈΡΡ
#!/bin/bash
# crypto-quote.sh: ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅
# Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΠΎΠ΄Π½ΠΈΡ Π°Π»ΡΠ°Π²ΠΈΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π΄ΡΡΠ³ΠΈΠΌΠΈ.
# Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΠΈΡΡΡ-Π·Π°Π³Π°Π΄ΠΊΠΈ
key=ETAOINSHRDLUBCFGJMQPVWZYXK
# ΠΠ΄Π΅ΡΡ, "key" -- Π½ΠΈ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ "ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π½Π½ΡΠΉ" Π°Π»ΡΠ°Π²ΠΈΡ.
# ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° "key" ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΈΡΡΠ°.
# ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ 'cat " [email protected]"' ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ ΡΠΎ stdin, ΡΠ°ΠΊ ΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
# ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ stdin, ΡΠΎ Π²Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ Control-D.
# ΠΠ½Π°ΡΠ΅, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΡΡΠ΅Π½Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°.
cat " [email protected]" | tr "a-z" "A-Z" | tr "A-Z" "$key"
# | Π² Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ | ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅
# Π’Π°ΠΊΠΎΠΉ ΠΏΡΠΈΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅, ΡΠ°ΠΊ ΠΈ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ.
# ΠΠ΅Π°Π»ΡΠ°Π²ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΎΡΡΠ°ΡΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
# ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΡΠ΅ΠΊΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
# "Nothing so needs reforming as other people's habits."
# --Mark Twain
#
# Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ:
# "CFPHRCS QF CIIOQ MINFMBRCS EQ FPHIM GIFGUI'Q HETRPQ."
# --BEML PZERC
# ΠΠ»Ρ Π΄Π΅ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ:
# cat " [email protected]" | tr "$key" "A-Z"
# ΠΡΠΎΡ Π½Π΅Ρ ΠΈΡΡΡΠΉ ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ "Π²Π·Π»ΠΎΠΌΠ°Π½" 12-ΡΠΈ Π»Π΅ΡΠ½ΠΈΠΌ ΡΠ΅Π±Π΅Π½ΠΊΠΎΠΌ
#+ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΡΠ°Π½Π΄Π°ΡΠ° ΠΈ Π±ΡΠΌΠ°Π³ΠΈ.
exit 0
Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ tr
Π£ΡΠΈΠ»ΠΈΡΠ° tr ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π΅, ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠΈΠ²ΡΠΈΠ΅ΡΡ, Π²Π΅ΡΡΠΈΠΈ. BSD-Π²Π΅ΡΡΠΈΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ (tr a-z A-Z), Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ SysV-Π²Π΅ΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΡ (tr '[a-z]' '[A-Z]'). GNU-Π²Π΅ΡΡΠΈΡ ΡΡΠΈΠ»ΠΈΡΡ tr Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π²Π΅ΡΡΠΈΡ BSD, Π½ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ.
fold
ΠΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡ ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅, ΡΠ°Π·ΡΡΠ²Π°Ρ, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΠ»ΠΎΠ²Π°. ΠΡΠΎΠ±ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ»ΡΡ -s, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΡΠΎΠΊ ΠΏΠΎ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌ, ΡΡΠ°ΡΠ°ΡΡΡ Π½Π΅ ΡΠ°Π·ΡΡΠ²Π°ΡΡ ΡΠ»ΠΎΠ²Π°. (ΡΠΌ. ΠΡΠΈΠΌΠ΅Ρ 12-19 ΠΈ ΠΡΠΈΠΌΠ΅Ρ A-2).
fmt
ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ ΡΡΠΈΠ»ΠΈΡΠ° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ°, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΊΠ°ΠΊ ΡΠΈΠ»ΡΡΡ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ "ΠΏΠ΅ΡΠ΅Π½ΠΎΡ" Π΄Π»ΠΈΠ½Π½ΡΡ ΡΡΡΠΎΠΊ ΡΠ΅ΠΊΡΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ 12-19. ΠΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ².
#!/bin/bash
WIDTH=40 # 40 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΡΡΠΎΠΊΠ΅.
b=`ls /usr/local/bin` # ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²...
echo $b | fmt -w $WIDTH
# Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
# echo $b | fold - -s -w $WIDTH
exit 0
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΠΡΠΈΠΌΠ΅Ρ 12-4.
ΠΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠ΅ fmt, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠΈΠ»ΠΈΡΠ° par (Π°Π²ΡΠΎΡ Kamil Toman), ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π½Π° http://www.cs.berkeley.edu/~amc/Par/.
col
ΠΡΠ° ΡΡΠΈΠ»ΠΈΡΠ° Ρ ΠΎΠ±ΠΌΠ°Π½ΡΠΈΠ²ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΈΠ· Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π°ΡΠΈ Π±ΡΠΌΠ°Π³ΠΈ (ΠΊΠΎΠ΄ ESC 7). ΠΠ½Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΡΠ°Π΅ΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ Π½Π° ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΈΠ»ΠΈΡΡ col -- ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ°, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ groff ΠΈ tbl.
column
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ. ΠΡΠ° ΡΡΠΈΠ»ΠΈΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠ΅ΠΊΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΡΠΏΠΈΡΠΎΠΊ, Π² ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ΅, Π±ΠΎΠ»Π΅Π΅ "ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΠ΅", ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π²ΡΡΠ°Π²Π»ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 12-20. ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅
#!/bin/bash
# ΠΠ° ΠΎΡΠ½ΠΎΠ²Ρ ΡΡΠ΅Π½Π°ΡΠΈΡ Π²Π·ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ "man column".
(printf "PERMISSIONS LINKS OWNER GROUP SIZE DATE TIME PROG-NAME\n" \
; ls -l | sed 1d) | column -t
# ΠΠΎΠΌΠ°Π½Π΄Π° "sed 1d" ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΠΎΠΊΡ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ls,
#+ (Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΠΈ "Π‘" ΡΡΠΎ ΡΡΡΠΎΠΊΠ°: "total N",
#+ Π³Π΄Π΅ "N" -- ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ².
# ΠΠ»ΡΡ -t, ΠΊΠΎΠΌΠ°Π½Π΄Ρ "column", ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ "ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ΅" ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
exit 0
colrm
Π£ΡΠΈΠ»ΠΈΡΠ° ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. Π£Π΄Π°Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ (ΡΡΠΎΠ»Π±ΡΡ) ΡΠΈΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° stdout. colrm 2 4 <filename -- ΡΠ΄Π°Π»ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠΎ 2-Π³ΠΎ ΠΏΠΎ 4-ΠΉ Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ filename.
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ ΠΈΠ»ΠΈ Π½Π΅ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΡΠ°ΠΌΡΠΌ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠΈΠ»ΠΈΡΡ colrm, Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ΅, ΠΎΠΊΡΡΠΆΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ expand ΠΈ unexpand.
nl
ΠΡΠΌΠ΅ΡΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅. nl filename -- Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ°ΠΉΠ» filename Π½Π° stdout, ΠΈ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π²ΡΡΠ°Π²ΠΈΡ Π΅Π΅ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ, ΡΡΠ΅Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π½Π΅ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π²Π²ΠΎΠ΄ ΡΠΎ stdin.
ΠΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ nl ΠΎΡΠ΅Π½Ρ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ cat -n, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ nl Π½Π΅ Π½ΡΠΌΠ΅ΡΡΠ΅Ρ ΠΏΡΡΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 12-21. nl: Π‘Π°ΠΌΠΎΠ½ΡΠΌΠ΅ΡΡΡΡΠΈΠΉΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ.
#!/bin/bash
# Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅Π±Ρ ΡΠ°ΠΌ Π½Π° stdout Π΄Π²Π°ΠΆΠ΄Ρ, Π½ΡΠΌΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΈ ΡΡΠ΅Π½Π°ΡΠΈΡ.
# 'nl' Π²ΡΡΠ°Π²ΠΈΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½ΠΎΠΌΠ΅Ρ 3, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π½Π΅ Π½ΡΠΌΠ΅ΡΡΠ΅Ρ ΠΏΡΡΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ.
# 'cat -n' Π²ΡΡΠ°Π²ΠΈΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½ΠΎΠΌΠ΅Ρ 5.
nl `basename $0`
echo; echo # Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠ΅ΠΊΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ 'cat -n'
cat -n `basename $0`
# Π Π°Π·Π»ΠΈΡΠΈΡ ΡΠΎΡΡΠΎΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ 'cat -n' Π½ΡΠΌΠ΅ΡΡΠ΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ.
# ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: 'nl -ba' -- ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
exit 0
pr
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΡΠ°ΠΉΠ»Π° ΠΊ ΠΏΠ΅ΡΠ°ΡΠΈ. Π£ΡΠΈΠ»ΠΈΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠ°Π·Π±ΠΈΠ²ΠΊΡ ΡΠ°ΠΉΠ»Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ, ΠΏΡΠΈΠ²ΠΎΠ΄Ρ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΉ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΈΠ»ΠΈ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½. Π Π°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π½Π°Π΄ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡ ΡΡΡΠΎΠΊΠΈ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΠΎΠ»Ρ, Π½ΡΠΌΠ΅ΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠΎΠ»ΠΎΠ½ΡΠΈΡΡΠ»Ρ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅, ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. Π£ΡΠΈΠ»ΠΈΡΠ° pr ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΠ°ΠΊΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠ°ΠΊ nl, paste, fold, column ΠΈ expand.
pr -o 5 --width=65 fileZZZ | more -- Π²ΡΠ΄Π°ΡΡ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΠΎΠ΅ ΠΈ ΡΠ°Π·Π±ΠΈΡΠΎΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° fileZZZ.
Π₯ΠΎΡΡ ΠΎΡΠΎΠ±ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΊΠ»ΡΡ -d, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΠΈ Ρ Π΄Π²ΠΎΠΉΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ (ΡΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ, ΡΡΠΎ ΠΈ sed -G).
gettext
GNU ΡΡΠΈΠ»ΠΈΡΠ°, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ Π½ΡΠΆΠ΄ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΡ Π½Π° ΡΠΊΡΠ°Π½, Π½Π° ΡΠ·ΡΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ, ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ C, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ gettext Ρ ΡΡΠΏΠ΅Ρ ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠ΅Ρ ΠΆΠ΅ ΡΠ΅Π»Π΅ΠΉ. Π‘ΠΌ. info page.
iconv
Π£ΡΠΈΠ»ΠΈΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ Π² Π΄ΡΡΠ³ΡΡ. Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½ΡΠΆΠ΄ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
recode
ΠΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ»Π½ΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ iconv, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π²ΡΡΠ΅. Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ.