Відмінності між версіями «Цікаві набори команд»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(Скрипт для застосування прав до каталогу та вмісту (рекурсивний обхід))
Рядок 66: Рядок 66:
  
 
Виклик даного скрипта із указанням імені каталогу призведе, що усі файли в даному каталозі та в усіх підкаталогах отримають права типу ''' chmod 664 $file ''' а каталоги права типу ''' chmod 775 $dir '''. У скрипті наведено приклад використання умовного оператору IF та оператора циклу FOR.  
 
Виклик даного скрипта із указанням імені каталогу призведе, що усі файли в даному каталозі та в усіх підкаталогах отримають права типу ''' chmod 664 $file ''' а каталоги права типу ''' chmod 775 $dir '''. У скрипті наведено приклад використання умовного оператору IF та оператора циклу FOR.  
 +
 +
 +
Список файлів для обробки отримуємо з результату виконання програми '''find "Директорія"'''. Результат поміщається у масив і поелементно обходиться в циклі FOR, поточне значення заноситься у змінну '''$file'''.
  
 
<pre>
 
<pre>

Версія за 11:59, 4 квітня 2014

Робота з файлами

  1. cat config.conf | sed -e '/^#/d' -e '/^$/d' - (вивести вміст конфігураційного файлу без коментарів, коментарі помічаються на початку рядка знаком #).

Змінне середовище

  1. export http_proxy=http://username:password@proxy_server:port/ - (встановлюємо параметри проксі-сервера для поточної консолі)

Виконувані скрипти

Щоб створити виконуючий скрипт в системі під управлінням ОС сімейства Linux або подібних, необхідно

  1. Створити файл.
  2. Виставити право файл виконувати rwx
  3. Відкрити файл на редагування і в заголовку вказати інтерпретатор для виконання коду

Для прикладу можемо навести список команд для створення скрипта на базі ОС Debian. Знак $ означає запрошення командного інтерпретатора.

hostname ~ # cd ~ (переходимо у домашній каталог)

hostname ~ # pwd (переглянути шлях до поточного каталогу)
/root

hostname ~ # ls -l  <b>виводимо</b>
загалом 0

hostname ~ # > my_script.sh (створюємо порожній файл із вказаним іменем)

hostname ~ # ls -l
загалом 0
-rw-r--r-- 1 root root 0 кві  4 11:48 my_script.sh

hostname ~ # chmod 700 my_script.sh (змінюємо права на файл, виставляємо права rwx для власника файлу, у нашому випадку - це користувач root)

hostname ~ # ls -l
загалом 0
-rwx------ 1 root root 0 кві  4 11:48 my_script.sh

hostname ~ # nano my_script.sh (використаємо редактор nano для редагування вмісту файлу)


У вікні редактора набираємо код, для прикладу можна взяти наступний лістинг

#!/bin/bash

echo "Hello world!"
exit 0

Щоб записати введені дані у файл необхідно натиснути комбінацію клавіш ^O (знак ^ означає Control) та Enter. Для виходу необхідно натиснути комбінацію ^X.

hostname ~ # cat my_script.sh (виводимо вміст файлу на екран)
#!/bin/bash

echo "Hello world!"
exit 0

hostname ~ # ./my_script.sh
Hello world!

hostname ~ #

Запустили скрипт на виконання. У команді запуску комбінація ./ означає шукати в поточному каталозі, інакше система буде намагатися знайти файл на виконання у каталогах, вказаних у змінному середовищі. Вище наведений скрипт виводить рядок Hello world! на екран і повертає код виходу з програми 0.

Скрипт для застосування прав до каталогу та вмісту (рекурсивний обхід)

Виклик даного скрипта із указанням імені каталогу призведе, що усі файли в даному каталозі та в усіх підкаталогах отримають права типу chmod 664 $file а каталоги права типу chmod 775 $dir . У скрипті наведено приклад використання умовного оператору IF та оператора циклу FOR.


Список файлів для обробки отримуємо з результату виконання програми find "Директорія". Результат поміщається у масив і поелементно обходиться в циклі FOR, поточне значення заноситься у змінну $file.

#!/bin/bash

DIR=""

if [ -z $1 ];
then
    echo "Ви не вказали каталог для перетворення"
else
    DIR=$1
    for file in `find "$DIR" `; do
	if [ -f $file ]; then
	    chmod 664 $file
	else
	    if [ -d $file ]; then
		chmod 775 $file
		chmod g+s $file
	    fi
	fi
	chown -R root.user $file
    done
fi

--Микола Діхтяр 12:56, 4 квітня 2014 (EEST)