Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Інші команди

Наша взаимовыгодная связь https://banwar.org/

Команди, які не можна віднести ні до однієї з перерахованих вище категорій

jot, seq

Ці утиліти виводять послідовність цілих чисел з кроком, заданим користувачем.

За замовчуванням, що виводяться числа відокремлюються один від одного символом переведення рядка, однак, за допомогою ключа -s може бути заданий інший роздільник.

bash $ seq 5 1 2 3 4 5 bash $ seq -s: 5 1: 2: 3: 4: 5

Обидві утиліти, і jot, і seq, дуже зручно використовувати для генерації списку аргументів в циклі for .

Приклад 12-39. Використання seq для генерації списку аргументів циклу for

#! / Bin / bash # Утиліта "seq" echo for a in `seq 80` # або так: for a in $ (seq 80) # Те ж саме, що і for a in 1 2 3 4 5 ... 80 (але як економить час і сили!). # Можна використовувати і 'jot' (якщо ця утиліта є в системі). do echo -n "$ a" done # 1 2 3 4 5 ... 80 # Приклад використання виведення команди для генерації # [списку] аргументів циклу "for". echo; echo COUNT = 80 # Так, 'seq' допускає вказівку змінних як параметр. for a in `seq $ COUNT` # або так: for a in $ (seq $ COUNT) do echo -n" $ a "done # 1 2 3 4 5 ... 80 echo; echo BEGIN = 75 END = 80 for a in `seq $ BEGIN $ END` # Якщо" seq "передаються два аргументи, то перший означає початкове число послідовності, # + другий - останнє, do echo -n" $ a "done # 75 76 77 78 79 80 echo; echo BEGIN = 45 INTERVAL = 5 END = 80 for a in `seq $ BEGIN $ INTERVAL $ END` # Якщо" seq "передет три аргументи, то перший аргумент - початкова число в послідовності, # + другий - крок послідовності, # + і третій - останнє число в послідовності. do echo -n "$ a" done # 45 50 55 60 65 70 75 80 echo; echo exit 0 getopt

Команда getopt служить для розбору командного рядка, виділяючи з неї ключі - символи, з попереднім знаком дефіс . Цією утиліті є, вбудований в Bash, аналог - getopts , Більш потужна і універсальна команда.

Приклад 12-40. Використання getopt для розбору аргументів командного рядка

#! / Bin / bash # ex33a.sh # Спробуйте наступні варіанти виклику цього сценарію. # Sh ex33a -a # sh ex33a -abc # sh ex33a -a -b -c # sh ex33a -d # sh ex33a -dXYZ # sh ex33a -d XYZ # sh ex33a -abcd # sh ex33a -abcdZ # sh ex33a -z # sh ex33a a # Поясніть отримані результати. E_OPTERR = 65 if [ "$ #" -eq 0] then # Необхідний щонайменше один аргумент. echo "Порядок використання: $ 0 - [options a, b, c]" exit $ E_OPTERR fi set - `getopt" abcd: "" $ @ " '# Запис аргументів командного рядка в позиційні параметри. # Що станеться, якщо замість "$ @" вказати "$ *"? while [! -z "$ 1"] do case "$ 1" in -a) echo "Опція \" a \ "" ;; -b) echo "Опція \" b \ "" ;; -c) echo "Опція \" c \ "" ;; -d) echo "Опція \" d \ "$ 2" ;; *) Break ;; esac shift done # Замість 'getopt' краще використовувати вбудовану команду 'getopts', # Див. "ex33.sh". exit 0 run-parts

Команда run-parts запускає на виконання всі сценарії, в порядку зростання імен файлів-сценаріїв, в заданому каталозі. Природно, файли сценаріїв повинні мати права на виконання.

демон crond викликає run-parts для запуску сценаріїв з каталогів /etc/cron.*.

yes

За замовчуванням, команда yes виводить на stdout безперервну послідовність символів y, розділених символами переведення рядка. Виконання команди можна перервати комбінацією клавіш control - c. Команду yes можна змусити виводити іншу послідовність символів. Тепер саме час запитати себе про практичну користь цієї команди. Основне застосування цієї команди полягає в тому, що висновок від неї може бути переданий, через конвеєр, іншій команді, яка чекає на реакції користувача. В результаті виходить, свого роду, слабенька версія команди expect.

yes | fsck / dev / hda1 запускає fsck в неінтерактивному режимі (будьте обережні!).

yes | rm -r dirname має той же ефект, що і rm -rf dirname (будьте обережні!).

Увага! Передача виведення команди yes по конвеєру потенційно небезпечним командам, таким як fsck або fdisk може дати небажані побічні ефекти.

banner

Друкує на stdout задану рядок символів (не більше 10), малюючи кожен символ рядка за допомогою символу '#'. Висновок від команди може бути перенаправлений на принтер.

printenv

виводить всі змінні оточення поточного користувача.

bash $ printenv | grep HOME HOME = / home / bozo
lp

Команди lp і lpr відправляють файли в чергу друку для виведення на принтер. Назви цих команд походять від "line printers".

bash $ lp file1.txt або bash lp <file1.txt

Дуже часто використовуються в комбінації з командою форматированного виведення pr.

bash $ pr -options file1.txt | lp

Програми підготовки тексту до друку, такі як groff і Ghostscript, так само можуть безпосередньо взаємодіяти з lp.

bash $ groff -Tascii file.tr | lp

bash $ gs -options | lp file.ps

Команда lpq яка дає змогу відтворювати черги завдань друку, а lprm - для видалення завдань з черги.

tee

[UNIX запозичив цю ідею з водопровідного справи.]

Це Опрератор перенаправлення, але з деякими особливостями. Подібно водопровідних труб, дозволяє даних в кілька файлів і на stdout одночасно, ніяк не впливаючи на самі дані. Ця команда може виявитися дуже корисною при налагодженні.

tee | ------> в файл | =============== | =============== command ---> ---- | -operator -> ---> результат роботи команд (и) =============================== cat listfile * | sort | tee check.file | uniq> result.file (Тут, в файл check.file будуть записані дані з усіх, в відсортованому вигляді до того, як повторювані рядки будуть видалені командою uniq .)
mkfifo

Ця, рідко зустрічається, команда створює іменований канал - черга, через який проводиться обмін даними між процесами. Як правило, один процес записує дані в чергу (FIFO), а інший читає дані з черги. Див. Приклад A-17 .

pathchk

Робить перевірку повного імені файлу - перевіряє, чи доступні на читання, каталоги в шляху до файлу, і чи не перевищує довжина повного імені файлу 255 символів. При недотриманні однієї з умов - повертає повідомлення про помилку.

На жаль, pathchk не повертає відповідного коду помилки, і тому, в общем-то, марна в сценаріях. Замість неї краще використовувати оператори перевірки файлів .

dd

Ця трохи незрозуміла і "страшна" команда () спочатку використовувалася для перенесення даних на магнітній стрічці між мікрокомп'ютерами з ОС UNIX і майнфреймів IBM. Команда dd просто створює копію файлу (або stdin / stdout), виконуючи по шляху деякі перетворення. Один з варіантів: перетворення з ASCII в EBCDIC, dd --help виведе список можливих варіантів перетворень і опцій цієї потужної утиліти.

# Вивчаємо 'dd'. n = 3 p = 5 input_file = project.txt output_file = log.txt dd if = $ input_file of = $ output_file bs = 1 skip = $ ((n-1)) count = $ ((p-n + 1)) 2> / dev / null # одержить від $ input_file символи з n-го по p-й. echo -n "hello world" | dd cbs = 1 conv = unblock 2> / dev / null # Виведе "hello world" вертикально. # Спасибі, SC

Для демонстрації можливостей dd, спробуємо перехопити натискання на клавіші.

Приклад 12-41. Захоплення натиснутих клавіш

#! / Bin / bash # Захоплення натиснутих клавіш. keypresses = 4 # Кількість фіксованих натискань. old_tty_setting = $ (stty -g) # Зберегти настройки терміналу. echo "Натисніть $ keypresses клавіші." stty -icanon -echo # Заборонити канонічний режим. # Заборонити луна-висновок. keys = $ (dd bs = 1 count = $ keypresses 2> / dev / null) # 'dd' використовує stdin, якщо "if" не заданий. stty "$ old_tty_setting" # Відновити настройки терміналу. echo "Ви натиснули клавіші \" $ keys \ "." # Спасибі SC exit 0

Команда dd має можливість довільного доступу до даних в потоці.

echo -n. | dd bs = 1 seek = 4 of = file conv = notrunc # Тут, опція "conv = notrunc" означає, що вихідний файлне буде усічений. # Спасибі, SC

Команда dd може використовуватися для створення образів дисків, зчитуючи дані прямо з пристроїв, таких як дискети, компакт диски, магнітні стрічки ( Приклад A-6 ). Зазвичай вона використовується для створення завантажувальних дискет.

dd if = kernel-image of = / dev / fd0H1440

Точно так же, dd може скопіювати весь вміст дискети, навіть з невідомої файлової системою, на жорсткий диск у вигляді файлу-образу.

dd if = / dev / fd0 of = / home / bozo / projects / floppy.img

Ще одне застосування dd - створення тимчасового swap-файлу ( приклад 28-2 ) І ram-дисків ( приклад 28-3 ). Вона може створювати навіть образи цілих розділів жорсткого диска, хоча і не рекомендується робити це без особливої ​​на то потреби.

Багато (які, ймовірно, не знають чим себе зайняти) постійно придумують все нові і нові області застосування команди dd.

Приклад 12-42. Надійне видалення файлу

#! / Bin / bash # blotout.sh: Надійно видаляє файл. # Цей суенарій записує випадкові дані в заданий файл, # + потім записує туди нулі і нарешті видаляє файл. # Після такого видалення навіть аналіз дискових секторів # + не дасть рівним рахунком нічого. PASSES = 7 # Кількість проходів по файлу. BLOCKSIZE = 1 # операції введення / виводу в / з / dev / urandom вимагають вказівки розміру блоку, # + інакше ви не отримаєте бажаного результату. E_BADARGS = 70 E_NOT_FOUND = 71 E_CHANGED_MIND = 72 if [-z "$ 1"] # Файл не вказано. then echo "Порядок використання:` basename $ 0` filename "exit $ E_BADARGS fi file = $ 1 if [! -e "$ file"] then echo "Файл \" $ file \ "не найден.&quot; exit $ E_NOT_FOUND fi echo; echo -n "Ви абсолютно впевнені в тому, що бажаєте знищити \" $ file \ "(y / n)?&quot; read answer case "$ answer" in [nN]) echo "Передумали? Операцію скасовано." exit $ E_CHANGED_MIND ;; *) Echo "Знищується файл \" $ file \ "." ;; esac flength = $ (ls -l "$ file" | awk '{print $ 5}') # Поле з номером 5 - це довжина файлу. pass_count = 1 echo while [ "$ pass_count" -le "$ PASSES"] do echo "Прохід # $ pass_count" sync # Виштовхнути буфери. dd if = / dev / urandom of = $ file bs = $ BLOCKSIZE count = $ flength # Заповнити файл випадковими даними. sync # Знову виштовхнути буфери. dd if = / dev / zero of = $ file bs = $ BLOCKSIZE count = $ flength # Заповнити файл нулями. sync # Знову виштовхнути буфери. let "pass_count + = 1" echo done rm -f $ file # Нарешті видалити неабияк "зіпсований" файл. sync # Виштовхнути буфери в останній раз. echo "Файл \" $ file \ "знищений."; echo # Це досить надійний, хоча і досить повільний спосіб знищення файлів. # + Ефективніше це робить команда "shred", # + входить до складу пакету GNU "fileutils". # Знищений таким чином файл, не зможе бути відновлений звичайними методами. # Однак ... # + ця метода ймовірно НЕ зможе протистояти аналітичним службам # + з ВІДПОВІДНИХ ОРГАНІВ # Tom Vier розробив пакет "wipe", який більш надійно стирає файли # + ніж цей простий сценарій. # Http://www.ibiblio.org/pub/Linux/utils/file/wipe-2.0.0.tar.bz2 # Для більш глибоко вивчення проблеми надійного видалення файлів, # + рекомендую звернутися до cnfnmt Peter Gutmann, # + " Secure Deletion of Data From Magnetic and Solid-State Memory ". # Http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html exit 0 od

Команда od (octal dump) виробляє перетворення введення (або файла) в один або декілька форматів, відповідно до зазначених опціями. При відсутності опцій використовується восьмеричний формат (опція -o). Ця команда корисна при перегляді або обробці файлів з двійковими даними, наприклад / dev / urandom. Див. приклад 9-26 і приклад 12-10 .

hexdump

Виводить дамп двійкових даних з файлу в вісімковому, шестнадцатиричном, десятковому вигляді або у вигляді ASCII. Цю команду, з масою застережень, можна назвати еквівалентом команди of od.

objdump

Показує вміст виконуваного або об'єктного файлу або в шістнадцятковій формі, або у вигляді дізассемблерного лістингу (з ключем -d).

bash $ objdump -d / bin / ls / bin / ls: file format elf32-i386 Disassembly of section .init: 080490bc <.init>: 80490bc: 55 push% ebp 80490bd: 89 e5 mov% esp,% ebp. . .
mcookie

Ця команда створює псевдовипадкові шістнадцяткові 128-бітові числа, так звані, зазвичай використовується X-сервером в якості авторизації. У сценаріях може використовуватися як малоефективний генератор випадкових чисел.

random000 = `mcookie | sed -e '2p'` #' sed 'видаляє сторонні символи.

Звичайно, для тих же цілей, сценарій може використовувати md5 .

# Сценарій обчислює контрольну суму для самого себе. random001 = `md5sum $ 0 | awk '{print $ 1}' '#' awk 'видаляє ім'я файлу.

За допомогою mcookie можна створювати імена файлів.

Приклад 12-43. Генератор імен файлів

#! / Bin / bash # tempfile-name.sh: Генератор імен тимчасових файлів BASE_STR = `mcookie` # 32-символьний (128 біт) magic cookie. POS = 11 # Довільна позиція в рядку magic cookie. LEN = 5 # $ LEN послідовних символів. prefix = temp # Зрештою це тимчасовий ( "temp") файл. suffix = $ {BASE_STR: POS: LEN} # Витягти рядок, довжиною в 5 символів, починаючи з позиції 11. temp_filename = $ prefix. $ suffix # Збірка імені файлу. echo "Ім'я тимчасового файлу = \" $ temp_filename \ "" # sh tempfile-name.sh # Ім'я тимчасового файлу = temp.e19ea exit 0 units

Ця утиліта виробляє перетворення величин з одних одиниць вимірювання в інші. Як правило викликається в інтерактивному режимі, нижче наводиться приклад використання units в сценарії.

Приклад 12-44. Перетворення метрів в милі

#! / Bin / bash # unit-conversion.sh convert_units () # Приймає в якості вхідних параметрів одиниці виміру. {Cf = $ (units "$ 1" "$ 2" | sed --silent -e '1p' | awk '{print $ 2}') # Видаляє всі крім коефіцієнтів перетворення. echo "$ cf"} Unit1 = miles Unit2 = meters cfactor = `convert_units $ Unit1 $ Unit2` quantity = 3.73 result = $ (echo $ quantity * $ cfactor | bc) echo" В $ quantity милях $ result метрів. &quot; # Що станеться, якщо в функцію передати несумісні одиниці виміру, # + наприклад "acres" (акри) and "miles" (милі)? exit 0 m4

Чи не команда, а скарб, m4 - це потужний фільтр обробки макроозначень, фактично - цілий мова програмування. Спочатку створювалася як препроцесор для RatFor, m4 виявилася дуже корисною і як самостійна утиліта. Фактично, m4 поєднує в собі функціональні можливості eval , tr , awk , І додатково надає великі можливості по створенню нових макроозначень.

У квітневому випуску, за 2002 рік, журналу Linux Journal ви знайдете чудову статтю, що описує можливості утиліти m4.

Приклад 12-45. Приклад роботи з m4

#! / Bin / bash # m4.sh: Демонстрація деяких возможнос макропроцесора m4 # Рядки string = abcdA01 echo "len ($ string)" | m4 # 7 echo "substr ($ string, 4)" | m4 # A01 echo "regexp ($ string, [0-1] [0-1], \ & Z)" | m4 # 01Z # Арифметика echo "incr (22)" | m4 # 23 echo "eval (99/3)" | m4 # 33 exit 0 doexec

Команда doexec надає можливість передачі довільного списку аргументів зовнішній програмі. Зокрема, передаючи argv [0] (для сценаріїв відповідає спеціальної змінної $ 0 ), Можна викликати програму під іншим ім'ям, визначаючи тим самим, її реакцію.

Наприклад, Нехай в каталозі / usr / local / bin є програма з ім'ям, яка при виклику doexec / usr / local / bin / aaa list виведе список всіх файлів в поточному каталозі, імена яких починаються з символу, а при виклику тієї ж самої програми як doexec / usr / local / bin / aaa delete, вона видалить ці файли.

Природно, реакція програми на своє власне ім'я має бути реалізована в коді програми, для сценарію на мові командної оболонки це може виглядати приблизно так:

case `basename $ 0` in" name1 ") реакція на виклик під ім'ям name1 ;; "Name2") реакція на виклик під ім'ям name2 ;; "Name3") реакція на виклик під ім'ям name3 ;; *) Дії за замовчуванням ;; esac
Що станеться, якщо замість "$ @" вказати "$ *"?
Quot; exit $ E_NOT_FOUND fi echo; echo -n "Ви абсолютно впевнені в тому, що бажаєте знищити \" $ file \ "(y / n)?
Quot; read answer case "$ answer" in [nN]) echo "Передумали?
Quot; # Що станеться, якщо в функцію передати несумісні одиниці виміру, # + наприклад "acres" (акри) and "miles" (милі)?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: