Командная​ ​строка​ ​ubuntu:​ ​основные​ ​команды​ ​bash

Открываем интерфейс командной строки

Для того, чтобы начать экспериментировать, нам нужно сначала открыть интерфейс командной строки.

Windows

В зависимости от твоей версии Windows и того, какая у тебя клавиатура, одно из следующих действий откроет окно командной строки (возможно, придётся немного поэкспериментировать, но все варианты пробовать необязательно):

  • Перейди в меню Пуск (или на экран Пуск), в строке поиска набери «Командная строка».
  • Перейди в меню Пуск → Windows → Командная строка.
  • Перейди в меню Пуск → Все программы → Служебные → Командная строка.
  • Перейди на экран Пуск, наведи мышь на нижний левый угол экрана и нажми на стрелочку вниз, которая появится там. (Если у тебя тачскрин, листни пальцем снизу вверх.) Откроется страница «Приложения». Выбери пункт «Командная строка» в разделе «Windows».
  • Удерживая клавишу Windows на клавиатуре, нажми X. В появившемся меню выбери пункт «Командная строка».
  • Удерживая клавишу Windows, нажми R, чтобы появилось окно «Выполнить». Набери в строке cmd и нажми OK.

В какой-то момент тебе понадобятся два окна командной строки одновременно. Однако в некоторых версиях Windows, если ты попытаешься запустить вторую командную строку, когда одна уже запущена тем же способом, ты вместо этого попадёшь в уже открытое окно командной строки. Попробуй у себя на компьютере и посмотри, что будет! Если у тебя получается открыть только одно окно командной строки, попробуй какой-нибудь другой из вышеприведённых способов в списке. По крайней мере один из них сможет открыть новое окно командной строки.

OS X

Перейди в Приложения → Прочие → Терминал.

Linux

Вероятно, командная строка скрывается по адресу: Приложения → Стандартные → Терминал или Приложения → Система → Терминал, но это может зависеть от конкретной системы. Если не сможешь найти — Google поможет :)

Самые важные команды, которые нужно знать

Мы рассмотрели некоторые основные команды в предыдущих разделах. В этом разделе мы рассмотрим некоторые другие важные команды.

Find command

Вы можете использовать команды find, locate и grep с помощью команды find.

Команда find ищет файлы на вашем диске. Это позволяет вам искать файлы и каталоги на основе групп пользователей, времени изменения файлов или доступа к ним, прав доступа к файлам, дат и размера.

Чтобы игнорировать регистр, используйте:

Раньше мы говорили о диких картах. Здесь мы используем их для поиска определенных файлов. Эта команда перечисляет все имена файлов, оканчивающиеся на donut.txt.

И эта команда перечисляет все имена файлов, начинающиеся с c.

Вы можете искать файлы по размеру, используя:

Используйте команду ниже для поиска файлов по дате их последнего изменения:

Чтобы найти каталог, используйте команду:

Locate command

По сравнению с поиском locateработает быстрее, так как считывает пути к файлам, хранящиеся в mlocate.dbбазе данных. Прежде чем приступить к работе, вам необходимо установитьlocate.

Команда для установки locate:

Первый шаг — это ввод пароля. После ввода пароля начнется установка.

После установки необходимо обновить поисковую базу. Locateполагается на эту базу данных, поэтому ее регулярное обновление обеспечивает эффективность. Для обновления mlocateбазы данных необходимы права суперпользователя.

Чтобы искать файлы по их именам, используйте:

Примечание. Функция Locate чувствительна к регистру, поэтому CreamPuffs.txtи creamPuffs.txtне одно и то же.

Чтобы игнорировать регистр, добавьте в команду —i.

grep command

Печать глобального регулярного выражения (grep) используется в Linux для поиска строк в конкретном файле. Если grep находит эти символы, он печатает строку. Команда такая:

Вы распечатываете номера строк вместе со строкой соответствия, добавляя —nк команде:

Примечание: Grep чувствителен к регистру, поэтому glazedи Glazedне одно и то же.

Чтобы игнорировать регистр, используйте:

Для поиска чего-либо в каталоге используйте:

chmod

Команда chmod, изменить режим, используется для просмотра разрешений на чтение, запись и выполнение, связанных с файлом. У вас есть три разных типа пользователей: пользователь (владелец), группа и другие (все остальные), которые могут читать, писать или выполнять файл.

Чтобы просмотреть разрешения, связанные с файлом, используйте:

Посмотрим, что означает вывод:

  • -означает, что это обычный файл. Если бы это был каталог, то так и было бы d.
  • rw-rw-r— показывает права доступа к файлу.

Посмотрим на файл hello.c. Скажем, мы хотим, чтобы пользователь читал, записывал и выполнял файл, группа просто читала и выполняла его, а остальные только читали его. Вы будете использовать:

Вы можете просмотреть обновленные разрешения, используя:

Вы также можете использовать команду chmod с числовым методом. Разрешения имеют следующие числовые значения:

  • Читать = 4
  • Написать = 2
  • Выполнить = 1
  • Нет разрешений = 0

Разрешения, которые получает определенный пользователь, представляют собой сумму этих чисел, поэтому, если вы хотите дать разрешение на чтение, запись и выполнение, это будет 4 + 2 + 1 = 74 + 2 + 1 = 7. Прочитать и выполнить будет4 + 0 + 1 = 54 + 0 + 1 = 5, и просто читать будет 4 + 0 + 0 = 44 + 0 + 0 = 4.

ping command

Команда ping используется для проверки статуса вашего соединения с сервером.

Вы можете проверить, смогли ли вы подключиться, и посмотреть время ответа. Команда продолжает выполняться, пока вы ее не остановите нажатием CTRL+C.

free command

Чтобы просмотреть использование памяти, используйте бесплатную команду.

В hпротивном случае он делает его удобочитаемым, он показывает данные в байтах.

gzip

Для сжатия файлов через терминал используйте gzipкоманду. Если вы хотите сохранить как исходный файл, так и сжатую версию, добавьте —k, в противном случае исходный файл будет удален.

mv

Чтобы переместить файлы из одного каталога в другой, используйте mv. Вы также можете переименовывать файлы с помощью этой команды.

Чтобы переименовать файл, используйте:

Чтобы переименовать файл при его перемещении, используйте:

man

Чтобы узнать больше о любой команде, используйте man. Вы попадете в руководство, где сможете просмотреть описание и все параметры команды. Давайте рассмотрим команду ls более подробно.

Подстановочные символы

Далее приведены подстановочные символы, которые расширяют объём команды терминала Linux во время её выполнения:

  • * позволяет расширить команду до любого количества символов: ls -lh /etc/*.conf — все элементы с расширением .conf;
  • ? позволяет расширить команду до одного символа: ls -ld ? ?? ??? — сюда относятся элементы, длина которых составляет 1, 2 или 3 символа;
  • ! — отрицание: ls -ld * — элементы, которые не начинаются с числовых значений;
  • Экранирование и цитирование с целью предотвращения расширения: \ для экранирования подстановочного знака;
  • ‘ для цитирования подстановочного знака.

Команды Linux, для работы с файлами

Эти команды используются для обработки файлов и каталогов.

33. ls

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

34. pwd

Linux pwd — это команда для показывает имя текущего рабочего каталога. Когда мы теряемся в каталогах, мы всегда можем показать, где мы находимся.

Пример ример ниже:

35. mkdir

В Linux мы можем использовать команду mkdir для создания каталога.

По умолчанию, запустив mkdir без какой-либо опции, он создаст каталог в текущем каталоге.

36. cat

Мы используем команду cat в основном для просмотра содержимого, объединения и перенаправления выходных файлов. Самый простой способ использовать cat— это просто ввести » имя_файла cat’.

В следующих примерах команды cat отобразится имя дистрибутива Linux и версия, которая в настоящее время установлена на сервере.

37. rm

Когда файл больше не нужен, мы можем удалить его, чтобы сэкономить место. В системе Linux мы можем использовать для этого команду rm.

38. cp

Команда Cp используется в Linux для создания копий файлов и каталогов.

Следующая команда скопирует файл ‘myfile.txt» из текущего каталога в «/home/linkedin/office«.

39. mv

Когда вы хотите переместить файлы из одного места в другое и не хотите их дублировать, требуется использовать команду mv. Подробнее можно прочитать ЗДЕСЬ.

40.cd

Команда Cd используется для изменения текущего рабочего каталога пользователя в Linux и других Unix-подобных операционных системах.

41. Ln

Символическая ссылка или программная ссылка — это особый тип файла, который содержит ссылку, указывающую на другой файл или каталог. Команда ln используется для создания символических ссылок.

Команда Ln использует следующий синтаксис:

42. touch

Команда Touch используется в Linux для изменения времени доступа к файлам и их модификации. Мы можем использовать команду touch для создания пустого файла.

44. head

Команда head используется для печати первых нескольких строк текстового файла. По умолчанию команда head выводит первые 10 строк каждого файла.

45. tail

Как вы, возможно, знаете, команда cat используется для отображения всего содержимого файла с помощью стандартного ввода. Но в некоторых случаях нам приходится отображать часть файла. По умолчанию команда tail отображает последние десять строк.

46. gpg

GPG — это инструмент, используемый в Linux для безопасной связи. Он использует комбинацию двух ключей (криптография с симметричным ключом и открытым ключом) для шифрования файлов.

50. uniq

Uniq — это инструмент командной строки, используемый для создания отчетов и фильтрации повторяющихся строк из файла.

53. tee

Команда Linux tee используется для связывания и перенаправления задач, вы можете перенаправить вывод и/или ошибки в файл, и он не будет отображаться в терминале.

54. tr

Команда tr (translate) используется в Linux в основном для перевода и удаления символов. Его можно использовать для преобразования прописных букв в строчные, сжатия повторяющихся символов и удаления символов.

Переменные окружения

Переменные окружения в Linux набор пар ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ, которые могут использоваться программами во время выполнения. Удобно, когда программа «угадывает» имя пользователя или домашний каталог пользователя. Чаще всего такая информация «добывается» из переменных окружения USER и HOME соответственно.
Переменные могут определяться системой и пользователем. Системные переменные окружения Linux определяются системой и используются программами системного уровня. Пользовательские переменные окружения устанавливаются пользователем, для текущей оболочки, временно или постоянно. Переменные окружения могут формироваться как из заглавных, так и из строчных символов, однако исторически сложилось именовать их в верхнем регистре. Значение каждой переменной окружения изначально представляет собой строковую константу (строку).

Командные оболочки, такие как bash, располагают собственным набором пар ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ — это переменные оболочки. Набор таких переменных называют окружением (или средой) оболочки. Эти переменные чем-то напоминают локальные переменные в языке C. Они недоступны для других программ и используются в основном в сценариях оболочки. Чтобы задать переменную оболочки, достаточно написать в командной строке ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ.

Для того, чтобы посмотреть список переменных, определенных в текущей оболочке запустите в терминале команду :

Чтобы посмотреть список переменных, доступных другим программам, запустим :

user@comp ~$ env | less
XDG_VTNR=7
XDG_SESSION_ID=c2
CLUTTER_IM_MODULE=xim
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/user
COMP_WORDBREAKS=
"'><;|&(:
SESSION=gnome
GPG_AGENT_INFO=/home/user/.gnupg/S.gpg-agent:0:1
SHELL=/bin/bash
TERM=xterm-256color
XDG_MENU_PREFIX=gnome-
VTE_VERSION=4205
DERBY_HOME=/usr/lib/jvm/java-8-oracle/db
QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
GJS_DEBUG_OUTPUT=stderr
WINDOWID=46137354
$

Другими словами отличие команды от команды заключается в том, что команда выводит список всех переменных окружения, включая те переменные, которые не экспортируются в дочерние командные оболочки.

Чтобы добавить переменную в окружение, нужно исполнить конструкцию ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ:

user@comp ~$ LOCAL_VAR="Hello World"
user@comp ~$ echo $LOCAL_VAR
Hello World
user@comp ~$ env | grep LOCAL_VAR
user@comp ~$ set | grep LOCAL_VAR
'Hello World'
user@comp ~$

Однако, при желании, можно включить локальную переменную оболочки в основное окружение. Для этого используется команда :

user@comp ~$ export LOCAL_VAR
user@comp ~$ env | grep LOCAL_VAR
LOCAL_VAR=Hello World
user@comp ~$

Можно сделать сразу так:

user@comp ~$ export ENV_VAR=Bye
user@comp ~$ echo $ENV_VAR
Goodbye
user@comp ~$ env | grep ENV_VAR
ENV_VAR=Bye
user@comp ~$

Интерпретация значений переменных полностью возлагается на программу. Чтобы вывести на экран значение какой-нибудь переменной окружения, достаточно набрать :

user@comp ~$ echo $USER
user
user@comp ~$

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

user@comp ~$ env –i Var=Value <команда>

Var — это любая переменная, которую вы хотите передать этой команде.

Например, такая команда запустит оболочку вообще без переменных окружения:

user@comp ~$ env –i bash

После запуска такого окружения, не будет доступно никаких переменных, но после выхода все вернется на свои места.

Существует другой способ удаления переменных окружения Linux — команда unset, удаляет переменную по имени до конца текущей сессии:

unset имя_переменной

Например:

user@comp ~$ export ENV_VAR=Bye
user@comp ~$ echo $ENV_VAR
Goodbye
user@comp ~$ env | grep ENV_VAR
ENV_VAR=Bye
user@comp ~$ unset ENV_VAR
user@comp ~$ env | grep ENV_VAR
user@comp ~$

Команды для работы с файлами

ls — выводит список файлов в текущем каталоге. Чтобы отобразить список файлов в любом каталоге, нужно набрать путь к каталогу после команды, например: ls /usr/bin. Некоторые ключи команды ls:

-a — показать скрытые файлы;

-s — указать размер файлов в блоках;

-t — сортировка по времени модификации файлов, сначала новые файлы;

-X — сортировка по расширению названия файлов, файлы без расширения выводятся вначале;

-l — расширенный формат вывода: показывает атрибуты, владельцев и группу файлов, размер, дату и время их создания;

-r — изменить порядок сортировки на обратный. Например, команда

ls -lat /etc выведет содержимое каталога /etc в расширенном виде и с сортировкой по времени создания файлов.

cp — копирование файлов. cp doc1 doc2 — создаст копию файла doc1 под именем doc2.

rm — удаление файлов. rm doc — удалит файл doc. rm * — удалит все файлы в текущем каталоге. rm *doc — удалит все файлы, которые заканчиваются на doc. Ключ -i используется для подтверждения удаления каждого файла, ключ -r для удаления каталогов и файлов внутри этих каталогов.

rmdir — удаление директории. rmdir alex — удалит каталог alex.

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

pwd — вывод текущей директории.

mkdir — создание новой директории. mkdir alex — создаст каталог alex.

mv — перемещение или переименование файлов. mv new old — переименует файл new в old.

cat — соединение файлов или вывод файлов на стандартное устройство вывода. cat doc — выведет файл doc. 

cat /proc/cpuinfo — выдаст подробную информацию о процессоре, cat /proc/version — о версии ядра Linux.

touch — создание пустого файла.

touch doc — создаст файл doc. find — поиск файлов. find / -name «doc*» — найдет все файлы, которые начинаются с doc.

ln — создание ссылки на файл. ln file1 file2 — создаст жесткую ссылку. Ключ -s используется для создания символической ссылки.

tar — программа для работы с архивами. tar -zxvf file.tar.gz — распакует архив file.tar.gz. tar -cvf my.tar myfile — заархивирует файл myfile, создав архив my.tar. 

more — вывод файлов с остановкой для просмотра, в отличие от cat, который выводит весь файл сразу. Можно прокручивать текст построчно, с помощью клавиши ввода или постранично с помощью пробела.

less — программа для просмотра файлов аналогичная more, но позволяет прокручивать текст вверх и управлять с помощью курсорных клавиш.

nano — простой полноэкранный текстовый редактор. Рекомендуется для новичков, поскольку содержит минимум функций и основные команды отображаются на экране.

vi — довольно мощный текстовый редактор, но он имеет свою нестандартную систему команд, поэтому требует время на освоение.

mc (Midnight Commander) — мощный файловый менеджер, аналог Norton Commander для DOS или FAR для Windows. Позволяет удалять, копировать, переименовывать, просматривать, редактировать файлы, менять их атрибуты и т. д. Midnight Commander обычно не входит в стандартный набор системных программ, поэтому его нужно устанавливать отдельно. Но он настоятельно рекомендуется к использованию, поскольку сильно упрощает работу с файлами.

Рис. 2. Midnight Commander в gnome-terminal

3.3 Файловая система Linux

3.3.1 Стандарт иерархии файловой системы

Как и другие дистрибутивы Linux, Kali Linux организован в соответствии со стандартом Filesystem Hierarchy Standard (FHS), что позволяет пользователям других дистрибутивов Linux с легкостью ориентироваться в Kali. FHS определяет назначение каждой директории. Директории верхнего уровня описываются следующим образом.

  • /bin/: основные программы
  • /boot/: Ядро Kali Linux и другие файлы, необходимые для его раннего процесса загрузки
  • /dev/: файлы устройства
  • /etc/: файлы конфигурации
  • /home/: личные файлы пользователей
  • /lib/: основные библиотеки
  • /media/*: точки монтирования для съемных устройств (CD-ROM, USB накопители и т.д.)
  • /mnt/: временные точки монтирования
  • /opt/: дополнительные приложения, предоставляемые третьими лицами
  • /root/: личные файлы администратора (файлы root)
  • /run/: непостоянные файлы рабочего процесса, которые не сохраняются после перезагрузки (еще не включённые в FHS)
  • /sbin/: системны программы
  • /srv/: данные, используемые серверами, расположенными в этой системе
  • /tmp/: временные файлы (эта директория часто опустошается после перезагрузки)
  • /usr/: приложения (эта директория в дальнейшем разделяется на bin, sbin, lib согласно такой же логике, что и в директории root). Кроме того, /usr/share/ содержат данные с независимой архитектурой. Каталог / usr / local / предназначен для использования администратором для установки приложений вручную без перезаписи файлов, обрабатываемых системой пакетирования.(dpkg).
  • /var/: переменные данные, обрабатываемые демоном. Это включает в себя файлы журналов, очереди, буферы и кеши.
  • /proc/ и /sys/ являются характерными для ядра Linux (и не являются частью FHS). Они используются ядром для экспортирования данных в пользовательское пространство.

3.3.2 Домашняя директория пользователя

Содержимое пользовательской директории не является стандартизированным, но, тем не менее, существует несколько заслуживающих внимания условностей. Одна из них заключается в том, что пользовательский домашний каталог часто обозначается тильдой («~»). Это очень полезно знать, потому что интерпретаторы команд автоматически заменяют тильду верной директорией (которая находится в переменной среде HOME и чье обычное значение является /home/user/).

Традиционно файлы конфигурации приложения часто хранятся непосредственно в вашем домашнем каталоге, но их имена файлов обычно начинаются с точки (например, клиент электронной почты mutt хранит конфигурацию в ~/.muttrc)

Обратите внимание, что имена файлов, начинающиеся с точки, по умолчанию скрыты; команда ls перечислит их лишь, в том случае если указана опция –a, а графические файловые менеджеры должны быть явно настроены для отображения скрытых файлов

Некоторые программы также используют несколько файлов конфигурации, организованных в одном каталоге (например, ~ / .ssh /). Некоторые приложения (например, веб-браузер Firefox) также используют свой каталог для хранения кеша загруженных данных. Это означает, что эти каталоги могут в конечном итоге потреблять много дискового пространства.

Эти файлы конфигурации, которые хранятся прямо в вашей домашней директории, часто коллективно называющиеся dotfiles, долгое время расширяются до такой степени, что эти директории могут быть загромождены ими. К счастью, совместная работа под эгидой FreeDesktop.org привела к созданию спецификации базового каталога XDG (XDG Base Directory Specification) конвенции, целью которой является очистка этих файлов и каталогов. В этой спецификации указано, что файлы конфигурации должны храниться в ~/.config, файлы кэша в -/.cache, а файлы данных приложения в -/.local (или вих суб-директориях). Эта конвенция постепенно набирает обороты.

Графический рабочий стол чаще всего использует ярлыки для отображения содержимого каталога /Desktop/ (или любого другого слова, которое является точным переводом данного, в системах, которые не используют английский язык). Наконец, система электронной почты иногда хранит входящие письма в каталоге — /Mail/.

Это интересно:

Базовые команды Linux

pwd для показа текущей рабочей директории

Откройте консоль и введите туда

pwd

У меня вывелось:

/home/mial

Здесь (первый слеш) – это корень, home – это название папки (директории), далее (второй слеш) – отделяет название вложенной папки, mial – название второй вложенной папки.

Команда pwd показывает «текущую рабочую директорию». Текущую рабочую директорию нужно знать при указании относительных путей до файлов и папок, также некоторые программы сохраняют результаты своего выполнения в текущую директорию.

mkdir для создания новых директорий

После mkdir укажите название папки, которую вы хотите создать. Если вы укажите относительный путь, например, так:

mkdir test1

То будет создана новая папка test1 в текущей рабочей директории, т.е. в моём случае путь до неё будет

/home/mial/test1

Также можно указать абсолютный путь до папки:

mkdir /home/mial/test2

Команда ls используется для вывода списка файлов и папок текущей рабочей директории:

ls
test1  test2  test.sh  Видео  Документы  Загрузки  Изображения  Музыка  Общедоступные  Рабочий стол  Шаблоны

Теперь мы можем убедиться, что папки test1 и test2 действительно были созданы.

Чтобы список выглядел лучше, можно использовать команду ls с опцией -l

ls -l

После команды и опций можно указать путь до папки, содержимое которой вы хотим посмотреть. Чтобы увидеть содержимое директории /var/log нужно ввести:

ls -l /var/log

Для просмотра содержимого корневой директории:

ls -l /

cd для перехода по папкам (смены текущей рабочей директории)

Для перехода по папкам используется команда cd после которой пишется директория, в которую вы хотите перейти. Можно указывать относительный путь или абсолютный:

cd test1
cd /home/mial/test2

Символ . (одна точка) означает текущую директорию, а символ .. (две точки) означаете родительскую директорию. Следовательно, для перехода на один уровень вверх нужно набрать

cd ..

cp для копирования файлов

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

cp test.sh test1

Этой командой я скопировал файл test.sh в директорию test1. Проверим

ls -l test1
итого 4
-rw-r--r-- 1 mial mial 84 дек 11 15:48 test.sh

mv для переименования и перемещения файлов.

После команды mv указывается имя файла, который вы хотите переименовать или переместить. Затем через пробел пишется директория, куда вы хотите переместить файл (тогда файл будет перемещён в неё с исходным именем), или директория и новое имя файла (тогда файл будет перемещён и переименован), или только новое имя файла (тогда файл будет переименован).

Файл test.sh из каталога test1 я переместил в каталог test2:

mv test1/test.sh test2

Файл test.sh в каталоге test2 я переименовал в test2.sh:

mv test2/test.sh test2/test2.sh

Файл test2.sh в каталоге test2 я переместил в каталог test1 и присвоил ему имя new.txt:

mv test2/test2.sh test1/new.txt

rm для удаления файлов и папок

Чтобы удалить наши тестовые директории, воспользуемся командой rm. После этой команды укажите путь до файла или папки, которые нужно удалить. Если вы собираетесь удалить директорию, то используйте также опцию -r, она означает рекурсивно удалять каталоги и их содержимое. Можно указать сразу несколько файлов и (или) каталогов:

 rm -r test1 test2

Для понимания иерархии файловой системы рекомендуется ещё одна статья для новичков «Структура директорий Linux. Важные файлы Linux».

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Мастер Питер
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: