Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° языкС сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 43

Автор МСндСль ΠšΡƒΠΏΠ΅Ρ€

Π’Ρ‹Π²ΠΎΠ΄ ΠΎΡ‚ 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'.