SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
Приручаем linux-
   консоль
   Сергей Коржнев
        2ГИС
О чем доклад?
● Научимся читать bash-код
● Пробежимся по нескольким полезным
  консольным утилитам
● Развенчиваем миф, что php уже не торт
● Убедимся, что php в 100500 раз
  практичнее bash-а для консольных
  приложений
Основы bash
$PATH
$ echo $PATH
/bin:/usr/bin:/usr/local/bin:/usr/games

$ mkdir bin
$ PATH=$PATH:$HOME/bin

$ type <command> - информация о команде
Hello World
#!/bin/bash
printf "%sn" "Hello, World"
Позиционные параметры
printf "Hello, %s!n" "$1"

$ hello John
Hello, John!
$ hello Susan
Hello, Susan!

$1 - $9
${15}
Специальные параметры
$# - кол-во входных параметров
$$ - идентификатор процесса
?$ - код завершения последней
выполненной команды
Переменные
name=VALUE
printf
$ printf "%sn" Print arguments on "separate
lines"
Print
arguments
on
separate lines
Спецификаторы printf
%s - строка
%d - целое число
%f - дробное число
%b - строка, обрабатывающая escape-
последовательности
I/O
$ printf "" > FILENAME - stderr все равно в
монитор

$ printf "" > FILENAME 2 > /dev/null

$ printf "" > FILENAME 2>&1 - оба потока в
один файл
Reading Input
$ read a b
Sun Mon
$ echo $a
Sun
$ echo $b
Mon
Командная подстановка
$ date=`date` - старый синтаксис
$ date=$( date ) - новый
$ wc -l $( date +%Y-%m-%d ).log


$ printf -v num4 "%04d" 4
$ printf "%sn" "$num4"
0004
Статус выхода
$ printf "%v"
-bash: printf: v': недопустимый символ
форматирования
$ echo $?
1

0 - истина
!0 - ложь
Сравнение целых
$ test 1 -eq 1
$ echo $?
0

$ [ 2 -eq 1 ]
$ echo $?
1
Сравнение целых
-eq   - equal
-ne   - not equal
-gt   - greater than
-lt   - less than
-ge   - greater than or equal to
-le   - less than or equal to
Сравнение строк
$ test "$a" = "$b"
$ [ "$q" != "$b" ]
(кроме NIL (ASCII 0))

$ [ -z "" ] - true     - Is empty?

$ test -n "" - false    - Is not empty ?
Еще опции
test -d "$directory" && cd "$directory"
[ -d "$dir"] && cd "$dir"

man test - все тут!
Арифметическое выражение
$ test $(( 2-2 )) -ne 0
$ echo $?
1
If
if <condition list>
then
   <list>
fi
If
read name
if [ -z "$name" ]
then
   echo "No name entered" >&2
   exit 1
elif [ "$number" -eq "Sergey"]
   echo "Very well"
else
   echo "Ok"
fi
If
if test -d "$dir" && cd "$dir"
then
   echo "$PWD"
fi
Case
case WORD in
 PATTERN) COMMANDS ;;
 PATTERN) COMMANDS ;; ## optional

case $1 in
 *"$2"*) true ;;
 *) false ;;
esac
While
while <list>
do
 <list>
done
While
n=1
while [ $n -le 10 ]
do
 echo "$n"
 n=$(( $n + 1 ))
done
For
for (( n=1; n<=10; ++n ))
do
 echo "$n"
done




break
continue
Конкатенация
a=$HOME/bin
Построчное чтение файла
cat data | while read a; do echo $a; done
Полезняшки
Утилиты
$ mkdir -p dir1/dir2/dir3 - создаст вложенные
директории

$ cp img1.jpg img2.jpg dir2/.
$ cp img1.jpg img2.jpg dir2/ - копировать
файлы в директорию

$ cp -R <...> - копирует каталоги тоже
Утилиты
$ which top
/usr/bin/top

$ echo < some_file.txt - содержимое файла в
качестве входных данных

$ head -n 5 - первые 5 строк (по умолчанию
10)
$ tail - полностью аналогично
Утилиты
$ locate <...> - быстрый поиск файлов
$ updatedb - обновить индекс для locate
$ locate -i - не учитывать регистр

$ grep -i - не учитывать регистр
$ grep -n - показывать номера строк
$ grep -v - все кроме
$ grep -l - только названия файлов
$ !! - выполнится предыдущая команда
Утилиты
$ alias - списко алиасов
$ alias ll=’ls -alF’ - пример алиаса

$ host <ip или домен>
Утилиты
$ sed 's/str1/str2/g' example.txt - заменить
str1 на str2 в файле example.txt

$ echo a b c | awk '{print $1}' - вывести
первую колонку

$ echo a b c | awk '{print $1,$3}' - оставить
первую и третью колонку
Утилиты
$ sort file1 file2 | uniq - отсортировать
содержимое двух файлов без повторов

$ cd -  - перейти в предыдущую
директорию
Find
$ find . *.txt - найти txt-файлы, начиная
поиск с текущей директории

$ find /path -type d -exec chmod 0755 {} ;

$ find /path -type d | xargs chmod 0755
PHP не модно?

Тольковый словарь Даля

МОДА ж. франц. проходящий обычай;
  ́
временная, изменчивая прихоть в
житейском быту, в обществе
Почему PHP?
● Простота, простота и... щас внимание
  простота

● Плюс/минус один и тот же performance

● Отсутствие syntactic sugar
  компенсируется поддержкой прокаченных
  IDE (читай PHP Storm) и библиотеками

● В России Python и Ruby не
  промышленные языки.
Смысл?
php script.php param1 param2
$argv - массив входящих параметров
  $argv[0] - имя вызываемого скрипта

$argc - размер массива $argv

Параметры не должны начинаться с
одиночного деффиса
Для реальных пацанов
#!/usr/bin/php
<?php
 var_dump($argv);

Для надежности первую строчку можно
заменить:
#!/usr/bin/env php

Ограничений на название параметров нет
I/O
STDIN
STDOUT
STDERR

fwrite(STDERR, "stderrn");

$line = fgets(STDIN);
Особенности
● байт-код не кешируется, слишком много
  includ-ов не желательно
● В cli-режиме echo по умолчанию
  вызывает flush()
● Ошибке лучше выводить в STDERR, т.к.
  вывод программы может быть
  перенарпавлен куда-то еще и
  пользователь не увидит ошибку
● exit(NUM)
● string exec ( string $command [, array
  &$output [, int &$return_var ]] )
Особенности
● Даже если определить
  register_shutdown_function, то Ctrl+Z все
  равно не отловится
● Перед fork-ом нужно закрывать все
  соединения с БД
Почему PHP, а не BASH
● Гораздо ближе к C-образным языкам, а,
  значит, понятнее большинству
  программистам
● Мощная поддержка IDE
● Сложнее выстрелить себе в ногу. Гораздо
  строже относится к ошибкам.
● Может все, что может bash
● Гораздо больше возможностей
Вопросы
:)

Más contenido relacionado

La actualidad más candente

Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP AdvancedNoveo
 
plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)ygoltsev
 
Юрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWWЮрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWWPositive Hack Days
 
Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16Anatoly Sharifulin
 
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...Moscow.pm
 
Не верь никому или разработка эффективных приложений (Как писать по настоящем...
Не верь никому или разработка эффективных приложений (Как писать по настоящем...Не верь никому или разработка эффективных приложений (Как писать по настоящем...
Не верь никому или разработка эффективных приложений (Как писать по настоящем...Moscow.pm
 
Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"Yandex
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовAndrew Shitov
 
Python
PythonPython
Pythonpelid
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2Technopark
 
Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPavel Vlasov
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIIlya Chesnokov
 
Пластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьПластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьMoscow.pm
 
Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6Andrew Shitov
 
Jquery selector optimization in drupal
Jquery selector optimization in drupalJquery selector optimization in drupal
Jquery selector optimization in drupalYury Glushkov
 

La actualidad más candente (20)

Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
 
plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)
 
Юрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWWЮрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWW
 
Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16Что нового в Perl? 5.10 — 5.16
Что нового в Perl? 5.10 — 5.16
 
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
 
Не верь никому или разработка эффективных приложений (Как писать по настоящем...
Не верь никому или разработка эффективных приложений (Как писать по настоящем...Не верь никому или разработка эффективных приложений (Как писать по настоящем...
Не верь никому или разработка эффективных приложений (Как писать по настоящем...
 
Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистов
 
Python
PythonPython
Python
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
 
Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasov
 
Почему Mojolicious?
Почему Mojolicious?Почему Mojolicious?
Почему Mojolicious?
 
Erlang tasty & useful stuff
Erlang tasty & useful stuffErlang tasty & useful stuff
Erlang tasty & useful stuff
 
file handling in c
file handling in cfile handling in c
file handling in c
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
Пластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьПластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать жить
 
Perl 5.10 и 5.12
Perl 5.10 и 5.12Perl 5.10 и 5.12
Perl 5.10 и 5.12
 
Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6
 
Jquery selector optimization in drupal
Jquery selector optimization in drupalJquery selector optimization in drupal
Jquery selector optimization in drupal
 

Destacado

New Orleans Investment Conference Celebrates 40 Years
New Orleans Investment Conference Celebrates 40 YearsNew Orleans Investment Conference Celebrates 40 Years
New Orleans Investment Conference Celebrates 40 YearsLouis F. Petrossi
 
8287494393 Pareena SEC 99
8287494393 Pareena SEC 998287494393 Pareena SEC 99
8287494393 Pareena SEC 99Real Estate
 
Add Automatic Exception Reporting To Your .Net Software - Allow End-Users To ...
Add Automatic Exception Reporting To Your .Net Software - Allow End-Users To ...Add Automatic Exception Reporting To Your .Net Software - Allow End-Users To ...
Add Automatic Exception Reporting To Your .Net Software - Allow End-Users To ...LogicNP
 
8287494393@ flat for rent & sale in dwarka sector 13
8287494393@ flat  for rent & sale in dwarka sector 138287494393@ flat  for rent & sale in dwarka sector 13
8287494393@ flat for rent & sale in dwarka sector 13Real Estate
 
Puri emerald bay sector 104 Gurgaon Call +91 828749439
Puri emerald bay sector 104 Gurgaon Call +91 828749439 Puri emerald bay sector 104 Gurgaon Call +91 828749439
Puri emerald bay sector 104 Gurgaon Call +91 828749439 Real Estate
 

Destacado (11)

Craig Feigin
Craig FeiginCraig Feigin
Craig Feigin
 
JavaScript Unit Testing Using Jasmine And Tools
JavaScript Unit Testing Using Jasmine And ToolsJavaScript Unit Testing Using Jasmine And Tools
JavaScript Unit Testing Using Jasmine And Tools
 
Unit 8 ass 1
Unit 8 ass 1Unit 8 ass 1
Unit 8 ass 1
 
Entrepreneurship quotes
Entrepreneurship quotesEntrepreneurship quotes
Entrepreneurship quotes
 
New Orleans Investment Conference Celebrates 40 Years
New Orleans Investment Conference Celebrates 40 YearsNew Orleans Investment Conference Celebrates 40 Years
New Orleans Investment Conference Celebrates 40 Years
 
8287494393 Pareena SEC 99
8287494393 Pareena SEC 998287494393 Pareena SEC 99
8287494393 Pareena SEC 99
 
RSR Intro Power Point
RSR Intro Power PointRSR Intro Power Point
RSR Intro Power Point
 
Add Automatic Exception Reporting To Your .Net Software - Allow End-Users To ...
Add Automatic Exception Reporting To Your .Net Software - Allow End-Users To ...Add Automatic Exception Reporting To Your .Net Software - Allow End-Users To ...
Add Automatic Exception Reporting To Your .Net Software - Allow End-Users To ...
 
Logos
LogosLogos
Logos
 
8287494393@ flat for rent & sale in dwarka sector 13
8287494393@ flat  for rent & sale in dwarka sector 138287494393@ flat  for rent & sale in dwarka sector 13
8287494393@ flat for rent & sale in dwarka sector 13
 
Puri emerald bay sector 104 Gurgaon Call +91 828749439
Puri emerald bay sector 104 Gurgaon Call +91 828749439 Puri emerald bay sector 104 Gurgaon Call +91 828749439
Puri emerald bay sector 104 Gurgaon Call +91 828749439
 

Similar a Приручаем linux-консоль

Perl6pod lvee
Perl6pod lveePerl6pod lvee
Perl6pod lveezagru
 
Perl6pod devconf
Perl6pod devconfPerl6pod devconf
Perl6pod devconfzagru
 
DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...
DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...
DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...DevPoint Kyiv
 
Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bashkuchinskaya
 
2013 09 21 языки программирования
2013 09 21 языки программирования 2013 09 21 языки программирования
2013 09 21 языки программирования Yandex
 
Regexp
RegexpRegexp
Regexpkumup
 
Что нового в Perl 5.14
Что нового в Perl 5.14Что нового в Perl 5.14
Что нового в Perl 5.14Andrew Shitov
 
Вредные советы программистам
Вредные советы программистамВредные советы программистам
Вредные советы программистамDenis Kovalev
 
Using perl6-pod
Using perl6-podUsing perl6-pod
Using perl6-podzagru
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Anton Shabouta "Implementing async binary clients in pure PHP"
Anton Shabouta "Implementing async binary clients in pure PHP" Anton Shabouta "Implementing async binary clients in pure PHP"
Anton Shabouta "Implementing async binary clients in pure PHP" Fwdays
 
Groovy On Grails
Groovy On GrailsGroovy On Grails
Groovy On Grailsguest32215a
 

Similar a Приручаем linux-консоль (20)

Perl6pod lvee
Perl6pod lveePerl6pod lvee
Perl6pod lvee
 
Perl6 pod as new documentation format
Perl6 pod as new documentation formatPerl6 pod as new documentation format
Perl6 pod as new documentation format
 
Perl6pod devconf
Perl6pod devconfPerl6pod devconf
Perl6pod devconf
 
DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...
DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...
DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...
 
About Python
About PythonAbout Python
About Python
 
Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bash
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
2013 09 21 языки программирования
2013 09 21 языки программирования 2013 09 21 языки программирования
2013 09 21 языки программирования
 
Regexp
RegexpRegexp
Regexp
 
Что нового в Perl 5.14
Что нового в Perl 5.14Что нового в Perl 5.14
Что нового в Perl 5.14
 
лекц15
лекц15лекц15
лекц15
 
Вредные советы программистам
Вредные советы программистамВредные советы программистам
Вредные советы программистам
 
Using perl6-pod
Using perl6-podUsing perl6-pod
Using perl6-pod
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Perl in da shell
Perl in da shellPerl in da shell
Perl in da shell
 
Anton Shabouta "Implementing async binary clients in pure PHP"
Anton Shabouta "Implementing async binary clients in pure PHP" Anton Shabouta "Implementing async binary clients in pure PHP"
Anton Shabouta "Implementing async binary clients in pure PHP"
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
 
php frameworks
php frameworksphp frameworks
php frameworks
 
Perl in practice
Perl in practicePerl in practice
Perl in practice
 
Groovy On Grails
Groovy On GrailsGroovy On Grails
Groovy On Grails
 

Приручаем linux-консоль

  • 1. Приручаем linux- консоль Сергей Коржнев 2ГИС
  • 2. О чем доклад? ● Научимся читать bash-код ● Пробежимся по нескольким полезным консольным утилитам ● Развенчиваем миф, что php уже не торт ● Убедимся, что php в 100500 раз практичнее bash-а для консольных приложений
  • 4. $PATH $ echo $PATH /bin:/usr/bin:/usr/local/bin:/usr/games $ mkdir bin $ PATH=$PATH:$HOME/bin $ type <command> - информация о команде
  • 6. Позиционные параметры printf "Hello, %s!n" "$1" $ hello John Hello, John! $ hello Susan Hello, Susan! $1 - $9 ${15}
  • 7. Специальные параметры $# - кол-во входных параметров $$ - идентификатор процесса ?$ - код завершения последней выполненной команды
  • 9. printf $ printf "%sn" Print arguments on "separate lines" Print arguments on separate lines
  • 10. Спецификаторы printf %s - строка %d - целое число %f - дробное число %b - строка, обрабатывающая escape- последовательности
  • 11. I/O $ printf "" > FILENAME - stderr все равно в монитор $ printf "" > FILENAME 2 > /dev/null $ printf "" > FILENAME 2>&1 - оба потока в один файл
  • 12. Reading Input $ read a b Sun Mon $ echo $a Sun $ echo $b Mon
  • 13. Командная подстановка $ date=`date` - старый синтаксис $ date=$( date ) - новый $ wc -l $( date +%Y-%m-%d ).log $ printf -v num4 "%04d" 4 $ printf "%sn" "$num4" 0004
  • 14. Статус выхода $ printf "%v" -bash: printf: v': недопустимый символ форматирования $ echo $? 1 0 - истина !0 - ложь
  • 15. Сравнение целых $ test 1 -eq 1 $ echo $? 0 $ [ 2 -eq 1 ] $ echo $? 1
  • 16. Сравнение целых -eq - equal -ne - not equal -gt - greater than -lt - less than -ge - greater than or equal to -le - less than or equal to
  • 17. Сравнение строк $ test "$a" = "$b" $ [ "$q" != "$b" ] (кроме NIL (ASCII 0)) $ [ -z "" ] - true - Is empty? $ test -n "" - false - Is not empty ?
  • 18. Еще опции test -d "$directory" && cd "$directory" [ -d "$dir"] && cd "$dir" man test - все тут!
  • 21. If read name if [ -z "$name" ] then echo "No name entered" >&2 exit 1 elif [ "$number" -eq "Sergey"] echo "Very well" else echo "Ok" fi
  • 22. If if test -d "$dir" && cd "$dir" then echo "$PWD" fi
  • 23. Case case WORD in PATTERN) COMMANDS ;; PATTERN) COMMANDS ;; ## optional case $1 in *"$2"*) true ;; *) false ;; esac
  • 25. While n=1 while [ $n -le 10 ] do echo "$n" n=$(( $n + 1 )) done
  • 26. For for (( n=1; n<=10; ++n )) do echo "$n" done break continue
  • 28. Построчное чтение файла cat data | while read a; do echo $a; done
  • 30. Утилиты $ mkdir -p dir1/dir2/dir3 - создаст вложенные директории $ cp img1.jpg img2.jpg dir2/. $ cp img1.jpg img2.jpg dir2/ - копировать файлы в директорию $ cp -R <...> - копирует каталоги тоже
  • 31. Утилиты $ which top /usr/bin/top $ echo < some_file.txt - содержимое файла в качестве входных данных $ head -n 5 - первые 5 строк (по умолчанию 10) $ tail - полностью аналогично
  • 32. Утилиты $ locate <...> - быстрый поиск файлов $ updatedb - обновить индекс для locate $ locate -i - не учитывать регистр $ grep -i - не учитывать регистр $ grep -n - показывать номера строк $ grep -v - все кроме $ grep -l - только названия файлов $ !! - выполнится предыдущая команда
  • 33. Утилиты $ alias - списко алиасов $ alias ll=’ls -alF’ - пример алиаса $ host <ip или домен>
  • 34. Утилиты $ sed 's/str1/str2/g' example.txt - заменить str1 на str2 в файле example.txt $ echo a b c | awk '{print $1}' - вывести первую колонку $ echo a b c | awk '{print $1,$3}' - оставить первую и третью колонку
  • 35. Утилиты $ sort file1 file2 | uniq - отсортировать содержимое двух файлов без повторов $ cd - - перейти в предыдущую директорию
  • 36. Find $ find . *.txt - найти txt-файлы, начиная поиск с текущей директории $ find /path -type d -exec chmod 0755 {} ; $ find /path -type d | xargs chmod 0755
  • 37.
  • 38.
  • 39. PHP не модно? Тольковый словарь Даля МОДА ж. франц. проходящий обычай; ́ временная, изменчивая прихоть в житейском быту, в обществе
  • 40. Почему PHP? ● Простота, простота и... щас внимание простота ● Плюс/минус один и тот же performance ● Отсутствие syntactic sugar компенсируется поддержкой прокаченных IDE (читай PHP Storm) и библиотеками ● В России Python и Ruby не промышленные языки.
  • 42. php script.php param1 param2 $argv - массив входящих параметров $argv[0] - имя вызываемого скрипта $argc - размер массива $argv Параметры не должны начинаться с одиночного деффиса
  • 43. Для реальных пацанов #!/usr/bin/php <?php var_dump($argv); Для надежности первую строчку можно заменить: #!/usr/bin/env php Ограничений на название параметров нет
  • 45. Особенности ● байт-код не кешируется, слишком много includ-ов не желательно ● В cli-режиме echo по умолчанию вызывает flush() ● Ошибке лучше выводить в STDERR, т.к. вывод программы может быть перенарпавлен куда-то еще и пользователь не увидит ошибку ● exit(NUM) ● string exec ( string $command [, array &$output [, int &$return_var ]] )
  • 46. Особенности ● Даже если определить register_shutdown_function, то Ctrl+Z все равно не отловится ● Перед fork-ом нужно закрывать все соединения с БД
  • 47. Почему PHP, а не BASH ● Гораздо ближе к C-образным языкам, а, значит, понятнее большинству программистам ● Мощная поддержка IDE ● Сложнее выстрелить себе в ногу. Гораздо строже относится к ошибкам. ● Может все, что может bash ● Гораздо больше возможностей