10 лучших расширений windows file explorer для управления файлами

Список: мощная утилита поиска для Windows

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

Избранные значок показывает список папок, последний значок отображает все каталоги, которые вы просматривали недавно, и Интеллектуальные Команды перечисляет некоторые полезные команды. Вы можете добавлять / удалять папки, команды и настраивать их так, чтобы они были легко доступны. Listary также интегрируется с «Открыть и сохранить диалоговое окно» для быстрого открытия и сохранения файлов.

Это экономит ваше время на повторных кликах. С нечетким поиском в Listary вы можете найти файлы, просто набрав несколько символов. Нажмите клавишу со стрелкой вправо на клавиатуре, чтобы развернуть контекстное меню Проводника и меню действий Листари.

Вы найдете полезные команды для упрощения повседневных операций с файлами. Бесплатная версия Listary уже содержит множество функций. Вы можете перейти на Pro версию для получения дополнительных функций.

Скачать: Listary (бесплатная версия Pro за 20 долларов)

Options

Here are the options that can be passed to the ln command.

—backup[=CONTROL] Use this option to additionally create a backup of each existing destination file. The style of backup is optionally defined by the value of CONTROL. for more information.
-b This functions like —backup, but you cannot specify the CONTROL; the default style (simple) is used.
-d, -F, —directory This option allows the superuser to attempt to hard link directories (although it will probably fail due to system restrictions, even for the superuser).
-f, —force If the destination file or files already exist, overwrite them.
-i, —interactive Prompt the user before overwriting destination files.
-L, —logical Dereference TARGETs that are symbolic links. In other words, if you are trying to create a link (or a symlink) to a symlink, link to what it links to, not to the symlink itself.
-n, —no-dereference Treat LINKNAME as a normal file if it is a symbolic link to a directory.
-P, —physical Make hard links directly to symbolic links, rather than dereferencing them.
-r, —relative Create symbolic links relative to link location.
-s, —symbolic Make symbolic links instead of hard links.
-S, —suffix=SUFFIX Use the file suffix SUFFIX rather than the default suffix «~«.
-t, —target-directory=DIRECTORY Specify the DIRECTORY in which to create the links.
-T, —no-target-directory Always treat LINKNAME as a normal file.
-v, —verbose Operate verbosely; print the name of each linked file.
—help Display a help message, and exit.
—version Display version information, and exit.

The —backup option

When using the —backup (or -b) option, the default file suffix for backups is ‘~‘. You can change this, however, using the —suffix option or setting the SIMPLE_BACKUP_SUFFIX environment variable.

The CONTROL argument to the —backup option specifies the version control method. Alternatively, it can be specified by setting the VERSION_CONTROL environment variable. Here are the values to use for either one:

none, off Never make backups (even if —backup is given).
numbered, t Make numbered backups.
existing, nil Numbered if numbered backups exist, simple otherwise.
simple, never Always make simple backups.

If you use -b instead of —backup, the CONTROL method is always simple.

If you specify the -s option (which symlinks), ln ignores the -L and -P options. Otherwise (if you are making hard links), the last option specified controls behavior when a TARGET is a symbolic link. The default is to act as if -P was specified.

Как освободить флеш-память смартфона

Карточки microSD(HC), используемые в смартфонах, по умолчанию отформатированы в FAT32. Это основное препятствие для установки на них приложений и переноса данных из внутренней памяти. Чтобы его преодолеть, нужно создать на карточке раздел с ext3 или ext4. На него можно перенести все файловые атрибуты (включая владельца и права доступа), поэтому любое приложение сможет работать так, словно запустилось из внутренней памяти.

Windows не умеет делать на флешках больше одного раздела, но для этого можно запустить Linux (хотя бы в виртуалке) или продвинутую утилиту для работы с логической разметкой — например, MiniTool Partition Wizard Free. Обнаружив на карточке дополнительный первичный раздел с ext3/ext4, приложение Link2SD и аналогичные ему предложат куда больше вариантов, чем в случае с одним разделом FAT32.

Что такое ссылка на файл в Linux

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

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

Поэтому очень важно понимать, как создавать и использовать тот или иной тип ссылок

Что такое символические ссылки

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

Символические ссылки также называют символьными, мягкими ссылками (soft links) или сим-ссылками (sym-link).

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

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

Возвращаясь к аналогии с ярлыками в Windows, символические ссылки это своего рода ярлыки на файлы. Можно создавать несколько символических ссылок на один файл и эти ссылки могут иметь разные имена.

Связь между символической ссылкой и файлом, на который она указывает, является «мягкой». Если удалить символическую ссылку, то файл, на который она указывает, не удаляется.

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

При создании символических ссылок можно указывать относительный путь до целевого файла. В таком случае ссылка считает, что относительный путь указан относительно каталога, в котором создана сама ссылка (но не относительно каталога, из которого она была создана).

Схематично отношение между файлом, символической ссылкой и данными, которые хранятся в файле, можно показать следующим образом:

Что такое жесткие ссылки

Жесткая ссылка (hard link) является своего рода синонимом для существующего файла. Когда вы создаете жесткую ссылку, создается дополнительный указатель на существующий файл, но не копия файла.

Жесткие ссылки выглядят в файловой структуре как еще один файл. Если вы создаете жесткую ссылку в том же каталоге, где находится целевой файл, то они должны иметь разные имена. Жесткая ссылка на файл должна находится в той же файловой системе, где и другие жесткие ссылки на этот файл.

В Linux каждый файл имеет уникальный идентификатор — индексный дескриптор (inode). Это число, которое однозначно идентифицирует файл в файловой системе. Жесткая ссылка и файл, для которой она создавалась имеют одинаковые inode. Поэтому жесткая ссылка имеет те же права доступа, владельца и время последней модификации, что и целевой файл. Различаются только имена файлов. Фактически жесткая ссылка это еще одно имя для файла.

Жесткие ссылки нельзя создавать для директорий.

Жесткая ссылка не может указывать на несуществующий файл.

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

Схематично отношение между исходным файлом, жесткой ссылкой и данными можно показать следующей схемой:

Отличия символических ссылок от жестких

Кратко подведем итог, написанного выше.

Символическая ссылка:

  • Указывает на целевой файл или каталог. Фактически является небольшим файлом, содержащим путь до целевого файла.
  • Не содержит внутри себя содержимого самого файла. Содержит путь к целевому файлу.
  • Имеет собственные права доступа, которые не распространяются на целевой файл.
  • Удаление / переименование / перемещение целевого файла не обновляет автоматически ссылку. Ссылка начинает указывать на несуществующий файл, становится неработающей.
  • Изменение прав доступа у целевого файла не обновляет права доступа у ссылки.
  • Может быть создана для директории.
  • Ссылка и целевой файл имеют разные файловые индексы (inode) в файловой системе.
  • Может указывать на несуществующий файл.
  • Символическая ссылка может использовать относительный путь до целевого файла.

Жесткая ссылка:

  • Является своего рода еще одним именем на файл.
  • Не может указывать на директорию.
  • Нельзя создавать жесткие ссылки между файлами разных файловых систем.
  • Не может указывать на несуществующий файл.
  • Жесткая ссылка и файл, для которого она создавалась, имеют одинаковые индексы (inode) в файловой системе.

Команды, выполняющие обход дерева файлов

chgrpchmodchowncpdufindlspaxrmtar

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

Первое правило применяется к символьным ссылкам, которые указывают на
файлы, а не на каталоги. Операции, которые применимы к символьным ссылкам,
выполняются с самими ссылками, но другие ссылки игнорируется.

Команда rm -r slink каталог удалит slink, а также все символьные
ссылки, обнаруженные при обходе каталога, так как символьные ссылки могут
быть удалены. Команда rm(1) никогда не удаляет файл, на который указывает
slink.

Второе правило применяется к символьным ссылкам, которые указывают на
каталоги. По умолчанию такие символьные ссылки никогда не
разыменовываются. Часто об этом говорят как о «физическом» обходе, в
противовес «логическому» обходу (когда выполняется переход по символьным
ссылкам, указывающем на каталог).

При обходе дерева файлов командами соблюдаются (должны) определённые
соглашения, если это возможно:

*
Команду можно заставить перейти по любой символьной ссылке, указанной в
командной строке, независимо от типа файла, на который она ссылаются, указав
параметр -H (от «half-logical»). Этот параметр заставляет пространство
имён командной строки выглядеть как логическое пространство имён (заметим,
что команды, которые не всегда делают обход дерева файлов, будут
игнорировать флаг -H, если также не указан флаг -R).

Например, команда chown -HR user slink выполнит обход файловой иерархии
с корнем как у файла, указанном slink. Заметим, что здесь -H делает не
тоже самое, что и флаг -h, описанный ранее. При флаге -H символьные
ссылки, указанные в командной строке, будут разыменовываться и при обходе
файлового дерева и как если бы пользователь указал имя файла, на которое
указывает символьная ссылка.

*
Команду можно заставить перейти по любой символьной ссылке, указанной в
командной строке, а также по всем символьным ссылкам, встреченным при
обходе, независимо от типа файла, на который она ссылается, указав параметр
-H (от «half-logical»). Этот параметр заставляет всё пространство имён
выглядеть как логическое пространство имён (заметим, что команды, которые не
всегда делают обход дерева файлов, будут игнорировать флаг -L, если также
не указан флаг -R).

Например, команда chown -LR user slink изменит владельца файла, на
который указывает slink. Если slink указывает на каталог, то chown
обойдёт дерево файлов с корнем в этом каталоге. Также, если символьные
ссылки встречаются в любом файловом дереве, которое обходит chown, то с
ними будет сделано тоже что и с slink.

*
Команду можно заставить следовать поведению по умолчанию, указав флаг -P
(от «physical»). Этот флаг предназначен для работы со всем пространством
имён как с физическим пространством имён.

Команды, которые по умолчанию не выполняют обход дерева файлов, игнорируют
флаги -H, -L и -P, если не указан флаг -R. Также вы можете
указать параметры -H, -L и -P более одного раза; последний
указанный параметр определяет поведение команды. Это позволяет создавать
псевдонимы команд с некоторым поведением, а затем переопределять это
поведение в командной строке.

У команд ls(1) и rm(1) есть исключения из этих правил:

*
Команда rm(1) работает с символьными ссылками, а не с файлами, на который
они ссылаются, и поэтому никогда не переходит по символьной ссылке. Команда
rm(1) не поддерживает параметры -H, -L и -P.
*
Для совместимости со старыми системами работа команды ls(1) чуть
отличается. Если не указан параметр -F, -d или -l, то ls(1)
переходит по символьной ссылке, указанной в командной строке. Если указан
флаг -L, то ls(1) переходит по всем символьным ссылкам независимо от
их типа и где они встретились — в командной строке или при обходе дерева.

How do I try it?

This new symlinks support first shipped in Windows 10 Insiders Build 14972, and will be formally delivered in Windows 10 Creators Update. We are also working with the owners of open-source community tools such as Git and npm so they know symlink improvements are coming and can make the necessary changes to better support symlinks on Windows.

We encourage you to take this new feature for a spin and be sure to let us know via the Windows 10 Feedback hub or on Twitter etc. (see below). Please sign up for the Windows Insiders program if you haven’t already to try out symlinks!

Neal, Yosef (@yosefdurr), Rich (@richturn_ms), and Gilles (@khouzam).

Структуры inode

Содержимое структуры inode

является структурой данных, содержащей относящиеся к файлу метаданные. При сохранении нового файла на диске в рамках файловой системы происходит сохранение не только самого содержимого файла (данных), но и таких дополнительных параметров файла, как имя, дата создания, права доступа и других. Вся эта информация (за исключением имени файла и его содержимого) сохраняется в рамках , соответствующей данному файлу.

Как видно в следующем примере, при использовании команды выводятся некоторые данные, содержащиеся в структуре inode.

root@rhel53 ~# ls -ld /home/project42/
drwxr-xr-x 4 root pro42 4.0K мар 27 14:29 /home/project42/

Таблица структур inode

содержит информацию о всех и создается в момент создания файловой системы (с помощью утилиты ). Вы можете использовать команду для получения информации о количестве используемых и доступных для использования в рамках смонтированных файловых систем.

root@rhel53 ~# df -i
Файловая система  Iнодов IИспользовано IСвободно IИспользовано% Cмонтировано в
/dev/mapper/VolGroup00-LogVol00
                 4947968        115326   4832642             3% /
/dev/hda1          26104            45     26059             1% /boot
tmpfs              64417             1     64416             1% /dev/shm
/dev/sda1         262144          2207    259937             1% /home/project42
/dev/sdb1          74400          5519     68881             8% /home/project33
/dev/sdb5              0             0         0              -  /home/sales
/dev/sdb6         100744            11    100733             1% /home/research

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

Идентификатор структуры inode

Каждая имеет уникальный идентификатор (идентификатор структуры inode). Вы можете увидеть идентификаторы в выводе команды .

paul@RHELv4u4:~/test$ touch file1
paul@RHELv4u4:~/test$ touch file2
paul@RHELv4u4:~/test$ touch file3
paul@RHELv4u4:~/test$ ls -li
итого 12
817266 -rw-rw-r--  1 paul paul 0 фев  5 15:38 file1
817267 -rw-rw-r--  1 paul paul 0 фев  5 15:38 file2
817268 -rw-rw-r--  1 paul paul 0 фев  5 15:38 file3
paul@RHELv4u4:~/test$

Три этих файла создавались последовательно, причем им соответствуют три различные (идентификаторы которых выводятся в первом столбце). Вся информация из вывода данной команды , за исключением имен файлов (которые хранятся в файле директории), содержится в .

Структуры inode и содержимое файлов

Давайте запишем немного данных в один из рассматриваемых файлов.

paul@RHELv4u4:~/test$ ls -li
итого 16
817266 -rw-rw-r--  1 paul paul   0 фев  5 15:38 file1
817270 -rw-rw-r--  1 paul paul 147 фев  5 15:42 file2
817268 -rw-rw-r--  1 paul paul   0 фев  5 15:38 file3
paul@RHELv4u4:~/test$ cat file2
Сейчас зима и очень холодно.
Нам не нравится холод, мы предпочитаем летние ночи.
paul@RHELv4u4:~/test$

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

Обработка «Распознавание штрихкода с помощью утилиты Zbar» для Документооборот ред. 2 Промо

В связи с тем, что стандартный функционал программы «Документооборот» ред. 2.1 дает возможность распознавания штрихкодов только форма EAN-13, данная обработка — альтернативный способ для распознавания штрихкода в программе 1С: Документооборот ред. 2 с помощью утилиты Zbar, которая распознает в том числе и в формате Code 128 (один из стандартных штрихкодов кодирования документов, например, «Управление торговлей» ред. 11), а также с возможностью поэтапно проследить все действия от распознавания до прикрепления к документу или простой загрузки в каталоги файлов в базе 1С.

5 стартмани

Как создать символьную ссылку в windows 10, 8.1, 8, 7 | geek team

Товарищи, добрый день.  Хотя эта тема и не самая популярная, но она мне очень много раз выручала, поэтому я не могу о ней не написать. Итак, что значит термин «символьная ссылка» я возьму из энциклопедии Wikipedia:

Символьная ссылка (также симлинк от англ. Symbolic link, символическая ссылка) — специальный файл в файловой системе, для которого не формируются никакие данные, кроме одной текстовой строки с указателем. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке (файлу). Символьная ссылка занимает ровно столько места в файловой системе, сколько требуется для записи её содержимого (нормальный файл занимает как минимум один блок раздела).

По своей сути же, симлинк — это ярлык, который позволяет системе думать, что это не ярлык, а настоящий файл (или папка). К примеру, частое применение символьной ссылок для папок — это установка игры на SSD, с последующем переносом файлов графики на жесткий диск, с целью экономия места на SSD и создание символьной ссылки до исходного места. Игра будет думать, что все файлы находятся в исходной папке. Так же символьные ссылки можно применять когда используются одинаковые файлы в нескольких каталогах, чтобы не вносить правки во все файлы, можно создать с одного файла символьные ссылки и вносить изменения один раз.

Создать символьную ссылку очень просто и сейчас я вам это докажу. Открываем командную строку, нажимаем Win R, вводим cmd и жмём ОК. Хотя если вы собираетесь работать с системными файлами, может понадобиться командная строка с правами администратора.

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

где /j — атрибут создания соединения для каталога. Если вы создаете ссылку на файл, атрибут ставить не надо.

К примеру, если я хочу создать символьную ссылку на папку mklink на локальном диске E, как папку mk на диске С, мне нужно ввести следующую команду (и да, символьная ссылка может называться не так, как исходный файл (папка):

В результате мы получим вот это.

Если же мы хотим создать символьную ссылку на файл, например на файл 1.txt, хранящийся в корне диска E. для использования в виде файла 2.txt. скажем в папке mslink на диске C, команда будет выглядеть вот так:

А на выходе получим вот это.

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

Материал сайта msconfig.ru

Настройка динамических библиотек

Итак, как же динамический загрузчик узнает, где искать исполняемые файлы? Как и везде в Linux, для этого используется конфигурационный файл, расположенный в директории /etc. Фактически, это два конфигурационных файла /etc/ld/so/conf и /etc/ld.so.cache. В листинге 5 показано содержимое файла /etc/ld.so.conf в 64-разрядной операционной системе Fedora 12

Обратите внимание на то, что в /etc/ld.so.conf указано, что необходимо включить в конфигурацию все файлы .conf из поддиректории ld.so.conf.d. В более старых системах директива include для директории /etc/ld.so.conf.d может не использоваться, а все необходимые файлы могут быть перечислены непосредственно в файле /etc/ld/so/conf. В вашей операционной системе содержимое файла /etc/ld.so.conf или директории /etc/ld.so.conf.d может отличаться

В вашей операционной системе содержимое файла /etc/ld.so.conf или директории /etc/ld.so.conf.d может отличаться.

Листинг 5. Содержимое файла /etc/ld.so.conf
$ cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
$ ls /etc/ld.so.conf.d/*.conf
/etc/ld.so.conf.d/kernel-2.6.31.12-174.2.19.fc12.x86_64.conf
/etc/ld.so.conf.d/kernel-2.6.31.12-174.2.22.fc12.x86_64.conf
/etc/ld.so.conf.d/kernel-2.6.31.12-174.2.3.fc12.x86_64.conf
/etc/ld.so.conf.d/mysql-x86_64.conf
/etc/ld.so.conf.d/qt-x86_64.conf
/etc/ld.so.conf.d/tix-x86_64.conf
/etc/ld.so.conf.d/xulrunner-64.conf

Загрузка программ должна происходить быстро, поэтому используйте команду для обработки файла ld.so.conf, всех файлов из директории ld.so.conf.d, библиотек из доверенных директорий /lib и /usr/lib, а также других библиотек, указанных в командной строке. Команда создает в файле /etc/ld.so.cache все необходимые связи, а также кэш для наиболее часто используемых библиотек. Динамический загрузчик использует информацию из кэша ld.so.cache для поиска файлов, которые необходимо динамически загрузить и скомпоновать. Если вы вносите изменения в файл ld.so.conf (или добавляете новые файлы в директорию ld.so.conf.d), вы должны запустить команду (от имени пользователя root) для перестроения (rebuild) файла ld.so.cache.

Обычно для перестроения файла ld.so.cache команда ldconfig запускается без параметров. Тем не менее, существует несколько параметров, с помощью которых можно изменить поведение этой программы. Как обычно, дополнительная информация доступна по команде . В листинге 6 продемонстрировано использование параметра для отображения содержимого файла ld.so.cache.

Листинг 6. Вывод содержимого файла ld.so.cache с помощью ldconfig
$ /sbin/ldconfig -p | less
1602 libs found in cache `/etc/ld.so.cache'
        libzip.so.1 (libc6,x86-64) => /usr/lib64/libzip.so.1
        libz.so.1 (libc6,x86-64) => /lib64/libz.so.1
        libz.so (libc6,x86-64) => /usr/lib64/libz.so
        libx86.so.1 (libc6,x86-64) => /usr/lib64/libx86.so.1
        libx11globalcomm.so.1 (libc6,x86-64) => /usr/lib64/libx11globalcomm.so.1
        libxul.so (libc6,x86-64) => /usr/lib64/xulrunner-1.9.1/libxul.so
        libxtables.so.2 (libc6,x86-64) => /usr/lib64/libxtables.so.2
        libxslt.so.1 (libc6,x86-64) => /usr/lib64/libxslt.so.1
        libxslt.so (libc6,x86-64) => /usr/lib64/libxslt.so
        libxpcom.so (libc6,x86-64) => /usr/lib64/xulrunner-1.9.1/libxpcom.so
        libxml2.so.2 (libc6,x86-64) => /usr/lib64/libxml2.so.2
        libxml2.so (libc6,x86-64) => /usr/lib64/libxml2.so
       ...
        libABRTdUtils.so.0 (libc6,x86-64) => /usr/lib64/libABRTdUtils.so.0
        libABRTUtils.so.0 (libc6,x86-64) => /usr/lib64/libABRTUtils.so.0
        ld-linux.so.2 (ELF) => /lib/ld-linux.so.2
        ld-linux-x86-64.so.2 (libc6,x86-64) => /lib64/ld-linux-x86-64.so.2

What Are Symbolic Links?

When you create a shortcut for a file or folder, all you are doing is pointing it to that specific file or folder, nothing more. Symbolic links are much more than a simple shortcut. They act as a virtual file or folder that links to the actual file or folder.

When you create a symlink for a file, it appears as if it is the actual file when in reality it is redirecting you toward the real file in the background. Besides files, you can also create symlinks for folders. Simply put, a symlink is nothing more than a build of the text string which lets the operating system know that it is just a path for another file or folder.

For instance, most cloud service apps you install will only sync files and folders located in their own folder. But there will be times when you might have a folder in some other drive you want to sync with the cloud storage service.

However, you don’t want to move the folder from its actual location or don’t want to create a copy of the folder. In those situations you can simply create a symlink in the cloud service folder so that you can sync the contents of the target folder without actually moving or copying the real folder.

Since a symlink is just a virtual folder that just acts as a path to the real folder, you don’t have to worry about the symlink consuming your disk space.

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

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

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

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