7 привычек высокоэффективных пользователей Linux

Однажды я прочитал книгу под названием "7 навыков высокоэффективных людей" Стивена Коуви (Stephen Covey) в которой рассказывается про качества, которыми должен обладать человек, чтобы быть весьма успешным в жизни. Это отличная книга, которая вдохновляет людей действовать и вносить позитивные изменения в свою жизнь.

Угадайте какие 7 привычек Rami Taibah составил, которые пользователи Linux могут использовать весьма эффективно.
Вот этот список:

  1. Никогда не входите в систему как root - это является излишним, если вы используете Linux такой как Ubuntu (в Ubuntu и пользователя root, то нет), которые использует sudo для получения прав root.
  2. Правильно назвайте ваши файлы. Я, как правило следую этому, однако даже если у вас есть пробелы в имена файлов, bash completion помогает вам получить имена файлов правильно.
  3. /home на отдельном разделе - Я согласен с этим полностью.
  4. Используйте xkill, чтобы закрыть заглючившее приложение.
  5. Попробуйте несколько дистрибутивов, чтобы сделать свой выбор.
  6. Освежить ваши навыки командной строки - Инструкции по использованию командной строки для выполнения сложных задач. Это сэкономит много вашего времени. Не забудьте подчерпнуть некоторые из них в 10 секундное руководство по Bash Shell Scripting.
  7. И, наконец, всегда быть готовыми повышать уровень - иными словами эксперименте.

Источник: The 7 Habits of Highly Effective People who are Linux Users.


10 секундное руководство по Bash Shell Scripting

Прежде всего позвольте мне уточнить, что это не будет детальное изучение скриптов оболочки, это будет быстрое руководство по на синтаксису, используемого в скриптах bash. Итак, если вы ждете другого, то тогда вы должны купить себе хорошую книгу по написанию сценариев. ;-) Итак, давайте перейдем к руководству.

-- Начала 10 секундного руководства по Bash Shell Scripting --

Общие переменные окружения
PATH - Устанавливает путь поиска для любой исполняемый командой. Аналогично переменной PATH в MSDOS.
HOME - домашний каталог пользователя.
MAIL - Содержит путь к месту хранения почты пользователя.
IFS - Содержит строку символов, которые используются как разделители в командной строке. Строка, как правило, состоит из пробела, табуляции и символы новой строки. Чтобы увидеть их придется сделать восьмеричный дамп следующим образом:

$ echo $IFS | od -bc
PS1 и PS2 - Основное и вторичное приглашение в bash. PS1 устанавливается $ по умолчанию и PS2 установлен в '>'. Чтобы увидеть вторичное, просто запустите команду:
$ ls |
... и нажмите ввод.

USER - имя пользователя для входа.
TERM - обозначает тип терминала который используется. Должно быть настроены правильно для редакторов типа vi для правильной работы.
SHELL - определяет тип оболочки, которую видит пользователь при входе в систему.
Примечание: Чтобы узнать какие значения имеют проведенные выше переменные окружения, выполните команду echo c именем переменной начинающееся с $. Например:
$ echo $USER
ravi
... получаем значение хранящееся в переменной USER.

Некоторые bash shell scripting правила
1) В первой строке вашего скрипта должно быть
#!/bin/bash
... то есть сначала #, затем !, затем путь до оболочки. Эта линия позволяет узнать расположение файла оболочки.

2) Перед выполнением скрипта, вы должны сделать скрипт исполняемым. Делается это следующей командой:
$ chmod ugo+x your_shell_script.sh
3) Обычно скрипт имеет расширение .sh. Это позволяет пользователю понять, что файл является скриптом.

Условные выражения
Выражение 'if':
if condition_is_true
then
execute commands
else
execute commands
fi
if также позволяет ветвления. То есть вы можете оценить несколько условий, если предыдущие условия отклонены.
if condition_is_true
then
execute commands
elif another_condition_is_true
then
execute commands
else
execute commands
fi
Пример:
if grep "linuxhelp" thisfile.html
then
echo "Found the word in the file"
else
echo "Sorry no luck!"
fi
if дополняется - test Тест оценит выражение справа, и возвращает либо верно или неверно. Для этого используется следующие операторы:

Операторы сравнения
-eq  Равно
-le  Меньше или равно
Тест файлов
-f file   True если file существует и является обычным файлом
-r file True если file существует и доступен для чтения
-w file True если file существует и доступен на запись
-x file  True если file существует и является исполняемым
-d file True если file существует и является каталогом
-s file True если файл существует и имеет размер больше 
чем ноль.
Тестирование строк
-n str True, если строка str не равна null
-z str True, если строка str равна null
str1 == str2 True если обе строки равны
str1 != str2 True если строки не равны
str True, если строке str присвоено значение и не равно null
Тест также позволяет проверять более одного выражения в одной строке.
-a Аналогично AND
-o Аналогично OR
Пример:
test $d -eq 25 && echo $d
... что означает, если значение в переменной d равно 25, в выводим значение. Иначе ничего не выведется.
test $s -lt 50 && do_something
if [ $d -eq 25 ]
then
echo $d
fi
В вышеприведенном примере я использовал квадратные скобки, вместо ключевого слова test - это еще один способ сделать то же самое.
if [$str1 == $str2 ]
then
    do something
fi

if [ -n "$str1" -a -n "$str2" ]
then
    echo 'Both $str1 and $str2 are not null'
fi
... если обе строки не являются равными null затем выполняем команду echo. Несколько вещей, которые нужно помнить при использовании test. Если вы используете квадратные скобки [], вместо test, то необходимо вставить пробел после [ и перед ]. Примечание: test проверяет только целые значения. Дробные просто усекаются. Не используйте маски для тестирования равенства строки.
Выражение case
Case является вторым условным выражением поддерживаемым оболочкой. Синтаксис:
case expression in
pattern1) execute commands ;; pattern2) execute commands ;; ... esac
Ключевыми словами здесь являются case и esac. ';;' используется в качестве окончания вариант. Также использует ')', чтобы отделить шаблон от действий.
Пример:
...
echo "Enter your option : "
read i;

case $i in
   1) ls -l ;;
   2) ps -aux ;;
   3) date ;;
   4) who ;;
   5) exit
esac
Примечание: В последнем случае ;; не требуется, но если хотите, то можете их поставить.
Вот еще один пример:
case `date |cut -d" " -f1` in
   Mon) commands ;;
   Tue) commands ;;
   Wed) commands ;;
   ...
esac
Case также поддерживает в выражении более чем один шаблон в каждом варианте. Вы также можете использовать wild-cards для сопоставления шаблонов.
...
echo "Do you wish to continue? (y/n)"
read ans

case $ans in
Y|y ;;
[Yy][Ee][Ss]) ;;
N|n) exit ;;
[Nn][Oo]) exit ;;
 *) echo "Invalid command"
esac
В приведенном случае, если вы введете Yes, YES, yEs и любую их комбинацию, то значение будет найдено.

Циклы
Цикл while
Синтаксис:
while condition_is_true
do
   execute commands
done
Пример:
while [ $num -gt 100 ]
do
    sleep 5
done

while:
do
    execute some commands
done
Выше код реализует бесконечный цикл. Вы также можете написать 'в то время как справедливо' вместо 'а:'. Здесь я хотел бы ввести два ключевых слова в связи с looping условные. Они перерыв и продолжить. Перерыв - Это ключевое слово вызывает контроль вырваться из петли. далее - Это ключевое слово будет приостанавливать исполнение всех заявлений после него и выключатели контроль верхней части петли для следующей итерации.
Цикл until
Цикл выполняется пока выражение не станет ложным. Синтаксис:
until false
do
    execute commands
done
Пример:
...
until [ -r myfile ]
do
sleep 5
done
Вышеуказанный код выполняется повторно до тех пор, пока файл myfile может быть прочитан.
Цикл for
Синтаксис:
for variable in list
do
execute commands
done
Пример:
...
for x in 1 2 3 4 5
do
    echo "The value of x is $x";
done
Выводится пять чисел от 1 до 5. Вот еще один пример:
for var in $PATH $MAIL $HOME
do
    echo $var
done
Предположим, у вас есть каталог с файлами java и вы хотите скомпилировать их. Вы можете написать скрипт, например такой:
...
for file in *.java
do
    javac $file
done
Примечание: Вы можете использовать wild-card выражения в ваших скриптах. Несколько специальных символов используемых в BASH shell скриптах
$* - Это означает, что все параметры передаются в скрипт на момент его исполнения. Что включает в себя $1, $2 и так далее.
$0 - Имя выполняемого скрипта.
$# - Количество аргументов, указанных в командной строке.
$? - Выходной статус последней команды.
Выше приведенные символы известны, как позиционные параметры (positional parameters). Позвольте мне объяснить позиционные параметры с помощью примера. Предположим у меня есть скрипт с названием my_script.sh. Теперь выполним этот скрипт в командной строке следующее:
$ ./my_script.sh linux is arobust OS
... как вы можете видеть выше, я указал 5 параметров скрипта. В соответствии с этим сценарием, значения позиционных параметров состоят в следующем:
$* - будет содержать значения 'linux','is','a','robust','OS'.
$0 - будет содержать значение my_script.sh - имя скрипта во время исполнения.
$# - содержит значения 5 - общее количество параметров.
$$ - содержит ID процесса текущей оболочки. Вы можете использовать этот параметр для уникальных имен каких-либо временных файлов, которые вы создаете во время исполнения.
$1 - содержит значения 'linux'
$2 - содержит значение 'is'

... и так далее.
Операторы set и shift
set - позволяет связать значения с позиционными параметрами.
Например, попробуйте следующее:
$ set `date`
$ echo $1
$ echo $*
$ echo $#
$ echo $2
shift
Пример:
$ set `date`
$ echo $1 $2 $3
$ shift
$ echo $1 $2 $3
$ shift
$ echo $1 $2 $3
Чтобы узнать ID процесса текущего оболочки, попробуйте следующее:
$ echo $$
2667
Для проверки, что это одно и то же значение, выполните следующие команды:
$ ps -f |grep bash
Оператор read
Сделайте ваш скрипт интерактивным. read позволит пользователю ввести значения, пока скрипт выполняется. Когда программа ждет ввода, она останавливается. Введенный через клавиатуру id считывается, и выполнение программы продолжается.
Например:
#!/bin/sh
echo "Enter your name : "
read name
echo "Hello $name , Have a nice day."
Выходной статус последней команды

Каждая команда возвращает значения после выполнения. Эта величина называется статус выхода или возвращаемое значение команды. Команда сообщает true, если выполняется успешно, и false, если нет. Это может быть проверено в скрипте, используя $?.
-- Конец 10 секундного руководства по Bash Shell Scripting --

Источник: 10 Seconds Guide to Bash Shell Scripting.

Статьи по теме:
Выбор диапазона IP адресов используя egrep - bash


Руководство по добавлению нового раздела или диска к существующей системе

Предположим, вам необходимо создать 10 ГБ раздел на Linux сервере, есть два варианта, а именно:

  • Создать раздел в неразмеченном свободном пространстве на вашем сервере или
  • Добавить новый диск.

Если выш выбор в пользу последнего, то просто вставьте новый диск, после обнаружения его системой используйте утилиту для создания необходимых разделов, отформатируйте вновь созданный раздел и, наконец, смонтируйте его. Но если вы хотите, создать раздел использую неразмеченное пространство, тогда задача становится немного сложнее.

Joey Prestia дает точные действия необходимые, чтобы добавить новый раздел в существующую систему. Задача может быть разбита на следующие этапы:

  1. Определите, какие разделы должны быть созданы и где.
  2. Создать разделы (я использую "fdisk" здесь)
  3. Перечитать таблицу разделов либо с "partprobe" или с помощью перезагрузки
  4. Создать файловую систему на разделе, создать label и создать необходимые точки монтирования
  5. Добавить соответствующие записи в '/etc/fstab/' и после этогоразделы смонтируются при перезагрузке

Посмотрите Joey's notes, чтобы узнать точные команды, используемые для выполнения вышеуказанных задач.

Источник: Guide to adding a new partition or drive to an existing system.


© 2001-2015 NLG