ΠΡΠ²ΠΎΠ΄ ΠΎΡ sq ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ ΡΡΠΈΠ»ΠΈΡΠ΅ gzip, Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠΆΠ°ΡΠΈΡ.
zip, unzip
ΠΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΆΠ°ΡΠΈΡ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ°Ρ, ΠΏΠΎ ΡΠΎΡΠΌΠ°ΡΡ Π°ΡΡ ΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Ρ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ DOS -- pkzip.exe. "Zip"-Π°ΡΡ ΠΈΠ²Ρ, ΠΏΠΎ-ΠΌΠΎΠ΅ΠΌΡ, Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΠ΅Π· Internet, ΡΠ΅ΠΌ "tarballs" (ΡΠ°ΡΠ±ΠΎΠ»Π»Ρ, ΠΈΠ»ΠΈ tar-Π°ΡΡ ΠΈΠ²Ρ).
unarc, unarj, unrar
ΠΡΠΎΡ Π½Π°Π±ΠΎΡ ΡΡΠΈΠ»ΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π°ΡΡ ΠΈΠ²ΠΎΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ DOS Π°ΡΡ ΠΈΠ²Π°ΡΠΎΡΠΎΠ² -- arc.exe, arj.exe ΠΈ rar.exe.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΡΠ°ΠΉΠ»Π°Ρ
file
Π£ΡΠΈΠ»ΠΈΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠΎΠΌΠ°Π½Π΄Π° file file-name Π²Π΅ΡΠ½Π΅ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π° file-name, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ascii text ΠΈΠ»ΠΈ data. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ½Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΈΠ³Π½Π°ΡΡΡΡ, ΠΈΠ»ΠΈ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΅Π΅ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠΈΠ³Π½Π°ΡΡΡ ΠΈΠ· /usr/share/magic, /etc/magic ΠΈΠ»ΠΈ /usr/lib/magic (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Linux/UNIX).
-f -- ΠΊΠ»ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΡΡΠΈΠ»ΠΈΡΡ file, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΈΠ»ΠΈΡΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌΡΡ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠ»ΡΡ -z ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π°ΡΡ ΠΈΠ²Π΅.
bash$ file test.tar.gz
test.tar.gz: gzip compressed data, deflated, last modified: Sun Sep 16 13:34:51 2001, os: Unix
bash file -z test.tar.gz
test.tar.gz: GNU tar archive (gzip compressed data, deflated, last modified: Sun Sep 16 13:34:51 2001, os: Unix)
ΠΡΠΈΠΌΠ΅Ρ 12-24. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΈΠ· ΡΠ°ΠΉΠ»Π° Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C
#!/bin/bash
# strip-comment.sh: Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² (/* COMMENT */) ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ C.
E_NOARGS=65
E_ARGERROR=66
E_WRONG_FILE_TYPE=67
if [ $# -eq "$E_NOARGS" ]
then
echo "ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: `basename $0` C-program-file" >&2 # ΠΡΠ²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° stderr.
exit $E_ARGERROR
fi
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠ° ΡΠ°ΠΉΠ»Π°.
type=`eval file $1 | awk '{ print $2, $3, $4, $5 }'`
# "file $1" -- Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π°...
# Π·Π°ΡΠ΅ΠΌ awk ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°...
# ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ "type".
correct_type="ASCII C program text"
if [ "$type" != "$correct_type" ]
then
echo
echo "ΠΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ C."
echo
exit $E_WRONG_FILE_TYPE
fi
# ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π·Π°ΠΌΡΡΠ»ΠΎΠ²Π°ΡΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ sed :
#--------
sed '
/^\/\*/d
/.*\/\*/d
' $1
#--------
# ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΡΠ°ΡΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² Π½Π° ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ² sed, ΡΠΎ ΠΎΠ½ ΡΡΠ°Π½Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅.
# Π‘Π»Π΅Π΄ΠΎΠ²Π°Π»ΠΎ Π±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
#+ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ.
# ΠΡΡΠ°Π²Π»ΡΡ ΡΡΠΎ Π²Π°ΠΌ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ.
# ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ΄Π°Π»ΠΈΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² "*/" ΠΈΠ»ΠΈ "/*",
# Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
exit 0
# ----------------------------------------------------------------
# Π‘ΡΡΠΎΠΊΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΈΠ·-Π·Π° ΡΡΠΎΡΡΠ΅ΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 'exit 0'.
# Stephane Chazelas ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» Π΄ΡΡΠ³ΠΎΠΉ, Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ:
usage() {
echo "ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: `basename $0` C-program-file" >&2
exit 1
}
WEIRD=`echo -n -e '\377'` # ΠΈΠ»ΠΈ WEIRD=$'\377'
[[ $# -eq 1 ]] || usage
case `file "$1"` in
*"C program text"*) sed -e "s%/\*%${WEIRD}%g;s%\*/%${WEIRD}%g" "$1" \
| tr '\377\n' '\n\377' \
| sed -ne 'p;n' \
| tr -d '\n' | tr '\377' '\n';;
*) usage;;
esac
# ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ, Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΊΠ°ΠΊ:
# printf("/*");
# ΠΈΠ»ΠΈ
# /* /* ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ */
#
# ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°Π΅Π² (\", \\" ...) ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ
# (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ lex ΠΈΠ»ΠΈ yacc?).
exit 0
which
ΠΠΎΠΌΠ°Π½Π΄Π° which command-xxx Π²Π΅ΡΠ½Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΊ "command-xxx". ΠΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ -- ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π»ΠΈ ΡΠ° ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
$bash which rm
/usr/bin/rm
whereis
ΠΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° which, ΡΠΏΠΎΠΌΠΈΠ½Π°Π²ΡΡΡΡΡ Π²ΡΡΠ΅. ΠΠΎΠΌΠ°Π½Π΄Π° whereis command-xxx Π²Π΅ΡΠ½Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΊ "command-xxx", Π½ΠΎ ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ΅ ΠΈ ΠΏΡΡΡ ΠΊ manpage -- ΡΠ°ΠΉΠ»Ρ, ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠ΅.
$bash whereis rm
rm: /bin/rm /usr/share/man/man1/rm.1.bz2
whatis
Π£ΡΠΈΠ»ΠΈΡΠ° whatis filexxx ΠΎΡΡΡΠ΅Ρ "filexxx" Π² ΡΠ²ΠΎΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ man.
$bash whatis whatis
whatis (1) - search the whatis database for complete words
ΠΡΠΈΠΌΠ΅Ρ 12-25. ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° /usr/X11R6/bin
#!/bin/bash
# Π§ΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /usr/X11R6/bin?
DIRECTORY="/usr/X11R6/bin"
# ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ "/bin", "/usr/bin", "/usr/local/bin", ΠΈ Ρ.Π΄.
for file in $DIRECTORY/*
do
whatis `basename $file` # ΠΡΠ²ΠΎΠ΄ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°ΠΉΠ»Π΅.
done
exit 0
# ΠΡΠ²ΠΎΠ΄ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π² ΡΠ°ΠΉΠ»:
# ./what.sh >>whatis.db
# ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅,
# ./what.sh | less
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΠΡΠΈΠΌΠ΅Ρ 10-3.
vdir
ΠΡΠ²ΠΎΠ΄ ΡΠΏΠΈΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. Π’ΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ls -l.
ΠΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΡΠΈΠ»ΠΈΡ GNU fileutils.
bash$ vdir
total 10
-rw-r--r-- 1 bozo bozo 4034 Jul 18 22:04 data1.xrolo
-rw-r--r-- 1 bozo bozo 4602 May 25 13:58 data1.xrolo.bak
-rw-r--r-- 1 bozo bozo 877 Dec 17 2000 employment.xrolo
bash ls -l
total 10
-rw-r--r-- 1 bozo bozo 4034 Jul 18 22:04 data1.xrolo
-rw-r--r-- 1 bozo bozo 4602 May 25 13:58 data1.xrolo.bak
-rw-r--r-- 1 bozo bozo 877 Dec 17 2000 employment.xrolo
locate, slocate
ΠΠΎΠΌΠ°Π½Π΄Π° locate ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΡΠΎΠ½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠΌΠ°Π½Π΄Π° slocate -- ΡΡΠΎ Π·Π°ΡΠΈΡΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ locate (ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ slocate).
$bash locate hickson
/usr/lib/xephem/catalogs/hickson.edb
readlink
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ°.
bash$ readlink /usr/bin/awk
../../bin/gawk
strings
ΠΠΎΠΌΠ°Π½Π΄Π° strings ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΡΡΠΎΠΊ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ . ΠΠ½Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΡ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. ΠΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΊΠΈΠ΄ΠΎΡΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°ΠΌΠΏ-ΡΠ°ΠΉΠ»ΠΎΠ² (core dump) ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΎΡΡΡΠΊΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΈΠΏΠ΅ ΡΠ°ΠΉΠ»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, strings image-file | more ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠ°ΠΊΡΡ ΡΡΡΠΎΡΠΊΡ: JFIF, ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ jpeg). Π ΡΡΠ΅Π½Π°ΡΠΈΡΡ , Π²Π΅ΡΠΎΡΡΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ grep ΠΈΠ»ΠΈ sed. Π‘ΠΌ. ΠΡΠΈΠΌΠ΅Ρ 10-7 ΠΈ ΠΡΠΈΠΌΠ΅Ρ 10-9.
ΠΡΠΈΠΌΠ΅Ρ 12-26. "Π Π°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ" ΠΊΠΎΠΌΠ°Π½Π΄Π° strings
#!/bin/bash
# wstrings.sh: "word-strings" (ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° "strings")
#
# ΠΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠΈΠ»ΡΡΡΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ "strings" ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅
#+ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ»ΠΎΠ² ΠΏΠΎ ΡΠ°ΠΉΠ»Ρ ΡΠ»ΠΎΠ²Π°ΡΡ.
# Π’Π°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ "ΠΎΡΡΠ΅ΠΊΠ°Π΅ΡΡΡ" Π²Π΅ΡΡ "ΠΌΡΡΠΎΡ",
#+ ΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠ΅ ΡΠ»ΠΎΠ²Π°.
# =================================================================
# Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²Ρ ΠΎΠ΄Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²
ARGS=1
E_BADARGS=65
E_NOFILE=66
if [ $# -ne $ARGS ]
then
echo "ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: `basename $0` filename"
exit $E_BADARGS
fi
if [ ! -f "$1" ] # ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ ΡΠ°ΠΉΠ»Π°.
then
echo "Π€Π°ΠΉΠ» \"$1\" Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½."
exit $E_NOFILE
fi
# =================================================================
MINSTRLEN=3 # ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ.
WORDFILE=/usr/share/dict/linux.words # Π€Π°ΠΉΠ» ΡΠ»ΠΎΠ²Π°ΡΡ.
# ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠ½ΠΎΠΉ
#+ ΡΠ°ΠΉΠ» ΡΠ»ΠΎΠ²Π°ΡΡ
#+ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ -- "ΠΎΠ΄Π½ΠΎ ΡΠ»ΠΎΠ²ΠΎ Π½Π° ΡΡΡΠΎΠΊΠ΅".
wlist=`strings "$1" | tr A-Z a-z | tr '[:space:]' Z | \
tr -cs '[:alpha:]' Z | tr -s '\173-\377' Z | tr Z ' '`
# Π’ΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡ 'strings' Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ 'tr'.