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

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

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

pop # FINAL

status_report

pop # skidoo

status_report

pop # 23

status_report # ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ вошСл -- послСдний Π²Ρ‹ΡˆΠ΅Π»!


# ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ измСняСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ стСка Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ push ΠΈ pop.


echo

# =======================================================


# УпраТнСния:

# -----------


# 1) Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ "push()" Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ,

# + Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° позволяла ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π½Π° стСк нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ².


# 2) Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ "pop()" Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ,

# + Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° позволяла ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ со стСка нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ².


# 3) ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ 4 арифмСтичСских дСйствия?

# + ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€.


exit 0

--

Иногда, манипуляции с "индСксами" массивов ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ввСдСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для хранСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π²Π°ΠΌ прСдоставляСтся лишний ΠΏΠΎΠ²ΠΎΠ΄ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½ΠΎΠΌ языкС программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Perl ΠΈΠ»ΠΈ C.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 25-10. ИсслСдованиС матСматичСских ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ

#!/bin/bash


# ΠŸΡ€Π΅ΡΠ»ΠΎΠ²ΡƒΡ‚Π°Ρ "Q-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ" Дугласа Π₯ΠΎΠ»ΡŒΡ„ΡˆΡ‚Π°Π΄Ρ‚Π΅Ρ€Π° *Douglas Hofstadter):


# Q(1) = Q(2) = 1

# Q(n) = Q(n - Q(n-1)) + Q(n - Q(n-2)), для n>2


# Π­Ρ‚ΠΎ "хаотичСская" ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Ρ… чисСл с нСпрСдсказуСмым ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ.

# ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 20 Ρ‡Π»Π΅Π½ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

# 1 1 2 3 3 4 5 5 6 6 6 8 8 8 10 9 10 11 11 12


# Π‘ΠΌ. ΠΊΠ½ΠΈΠ³Ρƒ Дугласа Π₯ΠΎΠ»ΡŒΡ„ΡˆΡ‚Π°Π΄Ρ‚Π΅Ρ€Π°, "Goedel, Escher, Bach: An Eternal Golden Braid",

# p. 137, ff.


LIMIT=100 # Найти ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 100 Ρ‡Π»Π΅Π½ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

LINEWIDTH=20 # Число Ρ‡Π»Π΅Π½ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π½Π° экран Π² ΠΎΠ΄Π½ΠΎΠΉ строкС


Q[1]=1 # ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° Ρ‡Π»Π΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π²Π½Ρ‹ 1.

Q[2]=1


echo

echo "Q-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ [ΠΏΠ΅Ρ€Π²Ρ‹Π΅ $LIMIT Ρ‡Π»Π΅Π½ΠΎΠ²]:"

echo -n "${Q[1]} " # ВывСсти ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° Ρ‡Π»Π΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

echo -n "${Q[2]} "


for ((n=3; n <= $LIMIT; n++)) # C-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°.

do # Q[n] = Q[n - Q[n-1]] + Q[n - Q[n-2]] для n>2

# Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия,

# ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Bash Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ слоТныС арифмСтичСскиС дСйствия Π½Π°Π΄ элСмСнтами массивов.


let "n1 = $n - 1" # n-1

let "n2 = $n - 2" # n-2


t0=`expr $n - ${Q[n1]}` # n - Q[n-1]

t1=`expr $n - ${Q[n2]}` # n - Q[n-2]


T0=${Q[t0]} # Q[n - Q[n-1]]

T1=${Q[t1]} # Q[n - Q[n-2]]


Q[n]=`expr $T0 + $T1` # Q[n - Q[n-1]] + Q[n - Q[n-2]]

echo -n "${Q[n]} "


if [ `expr $n % $LINEWIDTH` -eq 0 ] # Если Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½Ρ‹Π΅ 20 Ρ‡Π»Π΅Π½ΠΎΠ² Π² строкС.

then # Ρ‚ΠΎ

echo # ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку.

fi


done


echo


exit 0


# Π­Ρ‚ΠΎΡ‚ сцСнарий Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска Ρ‡Π»Π΅Π½ΠΎΠ² Q-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

# Π Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ, ΠΎΡΡ‚Π°Π²Π»ΡΡŽ Π²Π°ΠΌ, Π² качСствС упраТнСния.

# Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: рСкурсивный поиск Ρ‡Π»Π΅Π½ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ *ΠΎΡ‡Π΅Π½ΡŒ* ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя.

--

Bash ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Π½ΠΎ, ΠΏΡƒΡ‚Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΡƒΡ…ΠΈΡ‰Ρ€Π΅Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 25-11. Эмуляция массива с двумя измСрСниями

#!/bin/bash

# Эмуляция Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.


# Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ прСдставлСно ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ строк.


Rows=5

Columns=5


declare -a alpha # char alpha [Rows] [Columns];

# ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ объявлСниС массива.


load_alpha ()

{

local rc=0

local index


for i in A B C D E F G H I J K L M N O P Q R S T U V W X Y

do

local row=`expr $rc / $Columns`

local column=`expr $rc % $Rows`

let "index = $row * $Rows + $column"

alpha[$index]=$i # alpha[$row][$column]

let "rc += 1"

done


# Π‘ΠΎΠ»Π΅Π΅ простой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

# declare -a alpha=( A B C D E F G H I J K L M N O P Q R S T U V W X Y )

# Π½ΠΎ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ объявлСнии Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ массива Π·Π°Π²ΡƒΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ.

}


print_alpha ()

{

local row=0

local index


echo


while [ "$row" -lt "$Rows" ] # Π’Ρ‹Π²ΠΎΠ΄ содСрТимого массива построчно

do


local column=0


while [ "$column" -lt "$Columns" ]

do

let "index = $row * $Rows + $column"

echo -n "${alpha[index]} " # alpha[$row][$column]

let "column += 1"

done


let "row += 1"

echo


done


# Π‘ΠΎΠ»Π΅Π΅ простой эквивалСнт:

# echo ${alpha[*]} | xargs -n $Columns


echo

}


filter () # ΠžΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… индСксов.

{


echo -n " "


if [[ "$1" -ge 0 && "$1" -lt "$Rows" && "$2" -ge 0 && "$2" -lt "$Columns" ]]

then

let "index = $1 * $Rows + $2"

echo -n " ${alpha[index]}" # alpha[$row][$column]

fi


}


rotate () # ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ массива Π½Π° 45 градусов

{

local row

local column


for (( row = Rows; row > -Rows; row-- )) # Π’ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

do


for (( column = 0; column < Columns; column++ ))

do


if [ "$row" -ge 0 ]

then

let "t1 = $column - $row"

let "t2 = $column"

else

let "t1 = $column"

let "t2 = $column + $row"

fi


filter $t1 $t2 # ΠžΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ индСкс.

done


echo; echo


done


# ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ массива Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π½Π° основС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² (стр. 143-146)

# ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ "Advanced C Programming on the IBM PC", Π°Π²Ρ‚ΠΎΡ€ Herbert Mayer

# (см. Π±ΠΈΠ±Π»ΠΈΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ).


}


#-----------------------------------------------------#

load_alpha # Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива.

print_alpha # Π’Ρ‹Π²ΠΎΠ΄ Π½Π° экран.

rotate # ΠŸΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π° 45 градусов ΠΏΡ€ΠΎΡ‚ΠΈΠ² часовой стрСлки.

#-----------------------------------------------------#


# УпраТнСния:

# -----------

# 1) Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ массива Π½Π° экран

# + Π±ΠΎΠ»Π΅Π΅ простым ΠΈ элСгантным способом.

#

# 2) ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ rotate().


exit 0

По сущСству, Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив эквивалСнтСн ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ, с Ρ‚Π΅ΠΌ лишь Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ для индСксации ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° индСкса -- "строка" ΠΈ "столбСц".

Π‘ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ эмуляции Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² ΠŸΡ€ΠΈΠΌΠ΅Ρ€ A-11.


Π“Π»Π°Π²Π° 26. Π€Π°ΠΉΠ»Ρ‹

сцСнарии Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

Π­Ρ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТат объявлСния псСвдонимов ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ становятся доступны Bash послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмы.

/etc/profile

Настройки систСмы ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ настраиваСтся ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ (всС Bourne-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Bash[ 55 ])

/etc/bashrc

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ псСвдонимы Bash

$HOME/.bash_profile

ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ настройки окруТСния Bash, находится Π² домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (локальная копия Ρ„Π°ΠΉΠ»Π° /etc/profile)

$HOME/.bashrc

ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Bash, находится Π² домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (локальная копия Ρ„Π°ΠΉΠ»Π° /etc/bashrc). Π‘ΠΌ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° .bashrc.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· систСмы (logout)

$HOME/.bash_logout

Π­Ρ‚ΠΎΡ‚ сцСнарий ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· систСмы.


Π“Π»Π°Π²Π° 27. /dev ΠΈ /proc

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Linux ΠΈΠ»ΠΈ UNIX систСма ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния: /dev ΠΈ /proc.


27.1. /dev

ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ /dev содСрТит Ρ„Π°ΠΉΠ»Ρ‹ физичСских устройств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² состав Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°[ 56 ]. ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π½Π΅ ТСстком дискС соотвСтствуСт свой Ρ„Π°ΠΉΠ»-устройство Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /dev, информация ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° простой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ df.

bash$ df

Filesystem 1k-blocks Used Available Use%

Mounted on

/dev/hda6 495876 222748 247527 48% /

/dev/hda1 50755 3887 44248 9% /boot

/dev/hda8 367013 13262 334803 4% /home

/dev/hda5 1714416 1123624 503704 70% /usr


ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /dev содСрТит loopback-устройства ("ΠΏΠ΅Ρ‚Π»Π΅Π²Ρ‹Π΅" устройства), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ /dev/loop0. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ устройства ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ Π±Π»ΠΎΡ‡Π½ΠΎΠ΅ устройство Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°[ 57 ]. Π­Ρ‚ΠΎ позволяСт ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы, находящиСся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…. Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 13-6 ΠΈ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 13-5.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ псСвдоустройства Π² /dev ΠΈΠΌΠ΅ΡŽΡ‚ особоС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊ Ρ‚Π°ΠΊΠΈΠΌ устройствам ΠΌΠΎΠΆΠ½ΠΎ отнСсти /dev/null, /dev/zero ΠΈ /dev/urandom.

27.2. /proc

ЀактичСски, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /proc -- это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ файловая систСма. Π€Π°ΠΉΠ»Ρ‹, Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /proc, содСрТат ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссах, ΠΎ состоянии ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ядра ΠΈ систСмы.

bash$ cat /proc/devices

Character devices:

1 mem

2 pty

3 ttyp

4 ttyS

5 cua

7 vcs

10 misc

14 sound

29 fb

36 netlink

128 ptm

136 pts

162 raw

254 pcmcia


Block devices:

1 ramdisk

2 fd

3 ide0

9 md


bash$ cat /proc/interrupts

CPU0

0: 84505 XT-PIC timer

1: 3375 XT-PIC keyboard

2: 0 XT-PIC cascade

5: 1 XT-PIC soundblaster

8: 1 XT-PIC rtc

12: 4231 XT-PIC PS/2 Mouse

14: 109373 XT-PIC ide0

NMI: 0

ERR: 0


bash$ cat /proc/partitions

major minor #blocks name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq


3 0 3007872 hda 4472 22260 114520 94240 3551 18703 50384 549710 0 111550 644030

3 1 52416 hda1 27 395 844 960 4 2 14 180 0 800 1140

3 2 1 hda2 0 0 0 0 0 0 0 0 0 0 0

3 4 165280 hda4 10 0 20 210 0 0 0 0 0 210 210

...


bash$ cat /proc/loadavg

0.13 0.42 0.27 2/44 1119


Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /proc.[ 58 ]

bash$ cat /proc/filesystems | grep iso9660

iso9660



kernel_version=$( awk '{ print $3 }' /proc/version )