- Делаем файл исполняемым в Linux
- Чем отличается Linux от Windows в плане исполнений файлов, так это тем, что первая система определяет выполняемые файлы программными не по расширению, а по специальному флагу исполняемости. Так у каждого файла есть три режима исполняемости: чтение, исполнение и запись. Именно эти режима определяют, что система может делать с конкретным файлом. Когда пользователь скачивает различные установщики из интернета или создает скрипт, то по умолчанию ему присваиваются следующие режимы – чтение и запись. Одним словом, пользователь не сможет сделать с такой программой ничего, так как с ним нужно сделать кое-что еще.
- Что означает исполняемость?
- Как сделать файл исполняемым
- Как установить флаг исполняемости в GUI
- Типы файлов в Linux
- Типы файлов в Linux
- Обычные файлы
- Специальные файлы
- Каталоги
- Заключение
- Типы файлов в Ubuntu
- Названия файлов и папок
- Доступ к файлам и каталогам
- Содержимое и расширение файлов
- Исполняемые файлы
- Текстовые файлы
- Аудиофайлы
- Запуск в другом приложении и изменение ассоциаций файлов с приложениями
- Автозапуск сменных носителей
- В качестве заключения
Делаем файл исполняемым в Linux
Чем отличается Linux от Windows в плане исполнений файлов, так это тем, что первая система определяет выполняемые файлы программными не по расширению, а по специальному флагу исполняемости. Так у каждого файла есть три режима исполняемости: чтение, исполнение и запись. Именно эти режима определяют, что система может делать с конкретным файлом. Когда пользователь скачивает различные установщики из интернета или создает скрипт, то по умолчанию ему присваиваются следующие режимы – чтение и запись. Одним словом, пользователь не сможет сделать с такой программой ничего, так как с ним нужно сделать кое-что еще.
Что означает исполняемость?
Но для начала не будет лишним разобраться с таким вопросом, как: что такое исполняемость и что это вообще означает? Начнем с программы, являющейся набором инструкций, выполняемых процессором над совокупностью данных с целью получения нужного результата. Для процессора не существует разницы между инструкциями и данными.
И первые, и вторые состоят из цифр – байт. То есть, определенное сочетание цифр будет означать для процессора необходимость выполнения конкретного действия. Для процессора нет принципиальной разницы, какой процесс выполнять – файл операционной системы или текстовый файл. И первый, и второй файл будут выполнены, вот только в случае с текстовым файлом необходимость в инструкциях фактически отпадает.
Для понимания системой, какие файлы должны быть выполнены по инструкции, а какие выполнять не нужно, и были придуманы флаги исполняемости. Фактически содержимое файла никак не изменяется в зависимости от установленного флага исполняемости – отличие сводится только к нескольким строчкам. Со скриптами все работает точно так же, только команды из файла выполняет не процессор, а интерпретатор, например, в bash скриптах — сама оболочка bash. Да и в обычных программ тоже есть свой загрузчик — это ld-linux.so.2.
Как сделать файл исполняемым
В системе Linux предусмотрена специальная утилита, которая позволяет управлять флагами файлов, которая получила название chmod. Для вызова этой утилиты необходимо задействовать синтаксис:
$ chmod категория действие флаг адрес_файла
И здесь необходимо учитывать следующее:
- Флаг — один из доступных флагов — r (чтение), w (запись), x (выполнение).
- Категория — флаги могут устанавливаться для трех категорий: владельца файла, группы файла и всех остальных пользователей. В команде они указываются символами u (user) g (group) o (other) соответственно.
- Действие — может быть + (плюс), что будет значить установить флаг или — (минус) снять флаг.
Таким образом, чтобы сделать исполняемым скрипт в Linux, пользователю необходимо выполнить:
Зачастую уже этого достаточно, чтобы сделать файл исполняемым, но если необходимо наделить других пользователей полномочиями исполнять эти файлы, еще необходимо добавить:
Чтобы посмотреть флаги в терминале достаточно воспользоваться утилитой ls:
Флаги включены для всех категорий. Первое rwx — флаги владельца, второе — группы, а третье — для всех остальных. Если флаг не установлен, на его месте будет прочерк.
Снять флаг исполняемого файла очень просто. Используется та же команда только со знаком минус:
Дальше рассмотрим вопрос установки управляемости в GUI.
Как установить флаг исполняемости в GUI
Установка файлов исполняемости доступна не только через терминал, но и файловые менеджеры, одним из которых является GUI. Для новичков, возможно, даже эта инструкция окажется проще и доступней. Рассмотрим на примере файлового менеджера GNOME, Nautilus. Кликните правой кнопкой по нашему файлу программы или скрипта, чтобы открыть контекстное меню, затем выберите свойства:
Переходим на вкладку права и устанавливаем галочку «Разрешить выполнение файла как программы»:
Теперь файл будет запущен системой непосредственно из файлового менеджера. Вот и вся инструкция. Теперь с запуском программы или скрипта из интернета у вас не возникнет трудностей.
Источник
Типы файлов в Linux
Философия операционных систем Unix гласит, что все есть файл. Это значит, что вся работа с этой операционной системой сводится к файлам. Поскольку Linux можно считать тоже потомком Unix, то эта концепция применима и здесь. Файлы это объекты, в которые мы записываем информацию и наши данные, исполняемые файлы, но кроме этих привычных нам понятий здесь есть файлы специального назначения — файлы устройств, файлы туннелей, сокетов и многое другое. Эта тема очень слабо освещена в интернете, поэтому в нашей сегодняшней статье мы рассмотрим типы файлов linux.
Пространство нашего жесткого диска занято файлами разных типов. Например, взять даже наш корневой раздел (/), при создании файла, файловая система записывает его в определенном формате на нужное физическое место жесткого диска. Всегда, для работы с файлами используется файловая система, но не всегда она записывает файлы на диск, файловая система может работать на лету, генерируя файлы, например, как procfs, с помощью которой может быть выполнена настройка ядра linux или записывать файлы в оперативную память, как tmpfs расположенная в папке /tmp. Но все это не имеет значения, ведь в любом случае мы имеем дело именно с файлами.
В системе Linux нет различий между каталогами и файлами. Но каталоги могут объединять другие файлы в группы, чтобы их было легче найти и использовать. Все аппаратные устройства представлены в виде файлов и находятся в каталоге dev, только через эти файлы программы могут работать с ними.
Преимущество использования файлов как для обычной информации, так и для устройств, в том, что не нужно реализовать отдельный набор API интерфейсов для каждого устройства, с ним могут работать все стандартные утилиты Linux и API интерфейсы.
Типы файлов в Linux
Файлы в операционной системе Linux можно поделить на три основных типа:
- Обычные файлы, для хранения информации
- Специальные файлы — для устройств и туннелей
- Директории
Дальше рассмотрим более подробно эти типы файлов linux.
Обычные файлы
Это файлы, с которыми мы привыкли работать каждый день, они могут содержать текст, исполняемые инструкции для программ, изображения или другую информацию. Это самый распространенный тип файлов, которые вы можете найти в системе Linux. Рассмотрим небольшой список относящихся сюда файлов:
- Текстовые файлы
- Исполняемые файлы
- Файлы изображений
- Файлы архивов
- Файлы библиотек программ
- И другие подобные типы
Утилита ls может определять тип файла в режиме списка, обычные файлы обозначаются черточкой, например:
Эта статья была бы неполной, если бы мы рассматривали типы файлов, но не упомянули о форматах. Дело в том, что все обычные файлы сохранены в определенном формате, это нужно, чтобы система знала какой программой нужно открывать файл.
Посмотреть форматы файлов linux можно с помощью утилиты file. Например:
Система сообщила что это исполняемый файл, а теперь посмотрим обычный, текстовый:
Утилита умеет распознавать все известные форматы файлов. Чтобы узнать вывести все доступные форматы файлов linux наберите:
Специальные файлы
Специальные файлы намного интереснее, они предназначены для обмена информации с ядром, работы с устройствами или общения между программами. Такие файлы могут тоже быть нескольких типов, в зависимости от назначения.
Блочные файлы — это файлы устройств, которые обеспечивают буферизованный доступ к аппаратным компонентам. При записи данных на жесткий диск или на флешку нет смысла записывать данные сразу же после их поступления. Так мы будем только понапрасну расходовать ресурс устройства и энергию. Можно подождать пока наберется достаточное количество данных а потом записать их за один раз. Эти данные и собираются в буфере. С помощью таких файлов, файловая система и другие утилиты могут обращаться к драйверам аппаратных устройств. Такие файлы могут передать большой блок данных за небольшой один раз.
Утилита ls обозначает блочные файлы буквой b, например, выберем все блочные файлы из каталога /dev:
ls -l /dev/ | grep «^b»
Утилита file, которую мы рассматривали в предыдущем разделе тоже умеет определять типы файлов:
Символьные файлы обеспечивают не буферизованный доступ к аппаратным компонентам и ядру. Поскольку у них нет буфера, они позволяют передавать только по одному символу за один раз. А в остальном, это такие же файлы устройств, как и блочные файлы.
Вы также можете отфильтровать их с помощью ls. Символьные файлы обозначаются буквой c (character):
ls -l /dev/ | grep «^c»
Символические ссылки — это файлы, которые указывают на другие файлы в системе по их имени. Они могут указывать как на обычные файлы, таки на каталоги или другие типы файлов в linux. По сути, это те же ярлыки Windows. В Linux еще есть жесткие ссылки, но они не имеют отношения к типу файлов, потому что реализованы на уровне файловой системы и считаются обычными файлами. Поскольку они указывают на одно и то же место на диске, это два разных файла, с одинаковым содержимым.
Но вернемся к символическим ссылкам. Утилита ls обозначает их буквой l (link):
ls -l /dev/ | grep «^l»
Создавать символические ссылки можно с помощью утилиты ln. Например:
ln -s file1.txt file2.txt
Можете использовать ls чтобы убедиться в том, что это ссылка. Проверьте таким же образом жесткие ссылки, чтобы убедиться, что то что я сказал о них — правда.
Туннели и именованные туннели — это файлы, позволяющие настроить связь между двумя процессами перенаправив вывод одного процесса на вход другого. Именованные туннели используются для связи между двумя процессами и работают так же как и обычные туннели.
Обозначаются такие типы файлов linux буквой p (pipe):
ls -l /dev/ | grep «^p»
Чтобы создать именованный тоннель вы можете использовать утилиту mkfifo:
echo «test test test» > pipe1
После создания туннеля мы передали в него данные, и оболочка стала не интерактивной. Она будет ожидать пока данные будут прочитаны на другом конце туннеля. Открываем другую оболочку и читаем данные:
while read line ;do echo «Data: ‘$line’ «; done
Файлы сокетов — это файлы, обеспечивающие прямую связь между процессами, они могут передавать информацию между процессами, запущенными в разных средах или даже разных машинах. Это значит, что с помощью сокетов программы могут обмениваться данными даже по сети. По сути, сокет работает так же как туннели, но только в обе стороны.
Файлы сокетов обозначаются буквой s:
ls -l /dev/ | grep «^s»
Создать сокет можно с помощью функции socket() на языке программирования Си, чтение и запись выполняется системными вызовами read() и write(). Но нам сейчас не нужно писать реальную программу, будет достаточно немного поиграться. Поэтому воспользуемся утилитой nc. Создаем Unix сокет:
nc -lU socket.sock
Подключаемся к нему из другой консоли:
nc -U socket.sock
Все данные, которые вы будете набирать в одной из консолей будут отправляться на другую после нажатия Enter, связь работает в обоих направлениях.
Каталоги
Это специальные файлы, которые позволяют объединять другие и каталоги в группы для более простой навигации и поиска. Естественно, они могут содержать как обычные, так и специальные файлы, одним словом любые типы файлов ос linux. В системе Linux, файлы организуются в папки начиная от корня (/)
Обозначаются каталоги буквой d (directory):
Создать каталог в linux можно с помощью команды mkdir:
Заключение
Теперь у вас более четкое представление о том, почему в linux все является файлами, а также какие типы файлов в linux существуют в вашей системе. Вы можете найти более подробную информацию по каждому виду файлов в интернете, но если у вас остались вопросы, можете задать их в комментариях!
Источник
Типы файлов в Ubuntu
Начинающим пользователям Ubuntu зачастую нелегко привыкнуть к некоторой специфике обращения с файлами в этой системе. Однако на самом деле всё крайне просто и очень элегантно, в этой статье будет предпринята попытка объяснить все тонкости, чтобы потом при использовании системы вы не удивлялись некоторым непонятным с первого взгляда вещам.
Названия файлов и папок
Если помните, в Linux все имена файлов являются регистрозависимыми, то есть можно совершенно спокойно создать в одном каталоге два файла с одинаковыми именами, но записанными в различных регистрах, например, Ubuntu.txt и ubuntu.txt .
Кроме того, в именах файлов можно использовать абсолютно любые символы, и это не преувеличение — действительно любые, которые пожелаете, кроме прямого слеша / 1) . Однако, в силу некоторых причин воздержитесь от использования следующих символов: \ * , а также символов переноса строки и табуляции. Можно подписывать свои файлы китайскими иероглифами, рунами, греческими буквами и вообще чем угодно, если вам, конечно, будет удобно использовать такие имена 2) .
Ну и, напоследок, ещё раз обратите внимание, что разделителем каталогов в пути к файлу в Linux всегда является символ / , в отличие от Windows, в которой используется обратный слеш — \ .
Доступ к файлам и каталогам
В предыдущей статье уже было рассказано о правах доступа к файлам, поэтому вы должны знать, что в Linux можно ограничить доступ к файлу на редактирование или же просто полностью запретить доступ к содержимому с помощью механизма разграничения прав. Например, все системные конфигурационные файлы закрыты для редактирования обычному пользователю, и если вы попытаетесь сохранить какие-нибудь изменения в такой файл, Ubuntu сообщит, что у вас не хватает на это прав. Некоторые же файлы невозможно даже открыть и посмотреть их содержимое. Каталоги, с точки зрения механизма разграничения прав в Ubuntu, мало чем отличаются от файлов и тоже зачастую имеют ограничения на запись файла простым пользователем (например, у вас ничего не получится с сохранением файла в каталог /usr ). Но если вы до сих пор не знаете, как это обойти, внимательно прочитайте о пользователях, группах и правах доступа.
Содержимое и расширение файлов
«Тип файла определяется его расширением!» — именно так вы думаете после того, как какое-то время провели в операционной системе Windows. Самое интересное, что и разработчики этой ОС считают последнюю часть имени файла после точки определяющей его тип, недаром они по умолчанию скрывают расширение для зарегистрированных типов файлов. Например, файл Голубой ледопад.mp3 считается музыкой в формате mp3 3) , а Урания.txt — текстовым файлом 4) . На самом деле всё немного не так, расширение — это всего лишь часть имени файла, которое никак не зависит от собственно содержимого, а тип файла обычно определяется по-другому 5) .
Например, перейдите в Ubuntu в какую-нибудь папку с mp3 файлами и переключитесь на режим отображения списком 6) . В столбце «Тип» рядом с mp3-файлами вы увидите «Звук»:
Теперь переименуйте любой файл, приписав ему вместо mp3 расширение ?? .
Видите, тип файла не изменился. Если вы сейчас попробуете открыть такой файл, то он преспокойно откроется как mp3 в проигрывателе 7) .
Конечно, расширение нужно, мало того, Ubuntu полагается в первую очередь именно на него — то есть, если переименовать mp3-файл, добавив к нему расширение txt , то Ubuntu будет считать такой файл текстовым:
Однако то, что Ubuntu умеет смотреть не только на имя файла, спасает от многих проблем. Поэтому не удивляйтесь, когда встретите в Ubuntu файлы вообще без расширения, с которыми система преспокойно работает, ничего при этом не спрашивая.
Кстати, в Ubuntu есть мощная утилита определения типа файла, которая вообще не смотрит на имя и расширение, а пытается идентифицировать файл только по содержимому. Она бывает полезна, когда файл по каким-либо причинам не открывается, поскольку позволяет убедиться, что в нём содержатся данные именно того типа, которого вы и ожидаете там увидеть. Утилита эта — консольная, и называется file . Вот что она говорит о переименованном в текстовый документ аудиофайле в формате mp3:
Обмануть утилиту file практически невозможно, а знает она о большинстве используемых форматов файлов.
Исполняемые файлы
В вопросах исполняемых файлов, то есть, если по простому, обычных программ, Ubuntu кардинально отличается от Windows. В Windows исполняемые файлы имеют расширение exe (в основном), а внутри представляют из себя нечитаемый набор байтов. А в Ubuntu исполняемым может быть даже текстовый файл. Сразу скажу, что exe — это программы для Windows и в Ubuntu они не работают без Wine (приложения для запуска исполняемых файлов Windows в Linux), но вообще говоря и в Wine они работают далеко не всегда.
Итак, что же такое исполняемый файл с точки зрения Ubuntu? Фактически это любой файл, который помечен, как исполняемый и который Ubuntu сможет запустить на выполнение. Означает это вот что: у каждого файла есть специальное свойство-переключатель, никак не зависящее ни от имени, ни от содержимого, отвечающее за исполняемость. Если файл помечен, как исполняемый, то вообще говоря он таковым и является, а если не помечен — то это обычный файл с данными и напрямую запустить его на выполнение нельзя. Другое дело, что не любой файл, помеченный как исполняемый, Ubuntu сможет выполнить, хотя в арсенале Ubuntu есть масса методов запуска файлов с совершенно различным содержимым.
Характерным примером необычных с первого взгляда исполняемых файлов Linux являются так называемые скрипты. Скрипты — это обычные текстовые файлы, содержащие набор инструкций для программы-интерпретатора, которая занимается собственно выполнением скриптов. Так вот, если на скрипте установлено свойство исполняемости, то это программа, которую можно запустить обычным образом, а если не установлено — то это всего лишь текстовый файл. То есть сделать файл исполняемым или же наоборот, убрать возможность его выполнения, можно изменением всего одного его свойства.
Мало того, на самом деле это магическое свойство-переключатель исполняемости является одним из трёх прав доступа, о которых я мельком упоминал в предыдущей статье. Я говорил, что у каждого файла есть три группы прав доступа — для пользователя-владельца, для группы-владельца и для всех остальных, каждая группа состоит в свою очередь из трёх прав: на чтение, модифицирование и выполнение. Так вот, право на выполнение и является тем самым волшебным переключателем исполняемости.
Из этого вытекает весьма забавное свойство: один и тот же файл может быть одновременно и исполняемым, и не исполняемым, допустим, если на его выполнение есть права только у пользователя-владельца. Тогда пользователь, которому принадлежит этот файл, сможет его запустить как программу, а для всех остальных он будет обычным файлом с данными.
Вот так всё на самом деле просто и красиво, надеюсь, вы осознали основную логику и не будете путаться при работе с исполняемыми файлами в Ubuntu.
Текстовые файлы
Текстовые файлы в Ubuntu повсюду. Все настройки хранятся в виде текстовых файлов, исходные коды всех программ представляют из себя текстовые файлы, многие программы в Ubuntu являются на самом деле скриптами, то есть тоже текстовыми файлами. И естественно Ubuntu умеет работать с текстовыми файлами как угодно. И этой темы даже не пришлось бы касаться, если бы не одна проблема операционных систем Windows. Дело в том, что в Windows до сих пор кое-где ещё используется устаревший в 90-х прошлого столетия способ сохранения обычного текста, в частности, в текстовых файлах 8) .
На самом деле большинство файлов откроется в стандартном текстовом редакторе Ubuntu без проблем 9) , но всё же иногда попадаются файлы, которые отображаются «кракозябрами». В этом случае необходимо немного помочь Gedit и указать кодировку файла вручную. Для этого закройте в редакторе вкладку с нечитаемым файлом, затем выберите в меню программы пункт «Открыть», найдите свой файл и обратите внимание на поле «Кодировка символов», находящееся внизу диалогового окна открытия. В этом поле необходимо указать нужную кодировку, после чего файл откроется уже в пригодном для чтения виде. Кстати, рекомендую такие файлы сразу сохранять в utf-8 , дабы в дальнейшем не возникало с ними проблем.
Существуют и более лёгкие способы работы с кодировками, например, плагин для Gedit, позволяющий менять кодировку у открытых файлов без необходимости их переоткрывания. Кроме того, существуют утилиты для автоматического перекодирования файлов в utf8 , например, enca . Можно также управлять механизмом автоопределения кодировки в Gedit, это делается через редактор конфигурации, про который я немного расскажу в одной из последних статей.
Напоследок хочется сказать, что очень рекомендуется так или иначе перевести всю текстовую информацию на использование utf8 , поскольку фактически только эта кодировка нормально распознаётся везде и всегда, а в будущем скорее всего только она и будет использоваться.
Аудиофайлы
В случае с аудиофайлами также существует проблема с кодировками, только проявляется она в тегах. К сожалению, некоторые популярные Windows-программы редактирования тегов как и текстовые редакторы до сих пор используют устаревшую кодировку. Некоторые плееры Ubuntu поддерживают указание кодировки воспроизводимых файлов, однако гораздо предпочтительней обработать всю вашу медиатеку специальными программами, которые автоматически приведут все теги в нормальный вид, дабы в дальнейшем не было проблем. Самой популярной программой такого рода является EasyTag, она доступна в стандартных репозиториях, так что почти сразу после прочтения следующей статьи вы сможете ей воспользоваться.
Что же касается форматов, то Ubuntu поддерживает все существующие аудио-форматы, однако для воспроизведения некоторых требуются дополнительные кодеки. О том, как их поставить, я расскажу в одной из следующих статей.
Запуск в другом приложении и изменение ассоциаций файлов с приложениями
Когда вы немного освоитесь в Ubuntu, у вас, возможно, возникнет желание познакомиться с доступными в изобилии в репозиториях программами. И вскоре после того, как вы выберите из бесчисленного множества альтернатив подходящие для себя приложения, перед вами, скорее всего, встанет вполне закономерный вопрос: а как открыть этот файл в установленных вами программах, а не в доступных по умолчанию?
Тут есть два выхода: запустить сначала программу, и в этой программе открыть файл, или указать Nautilus открыть файл в нужной программе. Для этого нажмите правой клавишей мыши на нужном вам файле, выберите пункт «Свойства» и в перейдите на вкладку «Открыть в программе»:
В меню будут содержаться все приложения, которые сообщили Ubuntu о поддержке ими выбранного типа файлов. Вам останется только выбрать нужное приложение. Если в списке его нету, не отчаивайтесь, выберите пункт «Другое приложение…». Откроется окно, где можно можно выбрать из всех установленных приложений, или попробовать найти нужное в интернете:
После добавления приложения таким образом, оно всегда будет появляться в меню «Открыть в программе…». Если вы ошиблись и это приложение не подходит для открытия этого типа файлов, выделите ненужное приложение, нажмите на нем правой кнопкой мыши и выберите пункт «Забыть ассоциацию».
А как быть, если вы хотите, чтобы определенный тип файлов всегда открывался в другом приложении, а не в том, которое установлено по умолчанию? Например, чтобы все фильмы открывались в установленном вами VLC, а не в Totem, который открывает эти файлы по умолчанию. Для этого нужно изменить ассоциацию файла с приложением. Делается это очень просто: идете в «Параметры системы», выбираете пункт «Сведения о системе» и там строчку «Приложения по умолчанию». Теперь можете изменить приложения для основного типа файлов:
Как видите, выбор типов файлов не очень велик. А как же быть с теми файлами, которых тут нету? К счастью, подобный функционал доступен в уже упоминавшейся утилите Ubuntu Tweak, так что если вы хотите изменить ассоциации сразу для большого количества типов файлов, то советую вам использовать именно её.
Автозапуск сменных носителей
Раз уж мы открыли «Сведения о системе» сделаем еще одну важную вещь. Обратите внимание на пункт «Сменные носители». Он позволяет выбрать, что делать системе при подключении сменного носителя (ДВД-диск, флэшка, карта памяти и т.п.) с определенным типом данных:
Кнопка «Другой носитель…» позволяет настроить менее распространенные типы носителей. При активированной «галочке» напротив «Никогда не спрашивать и не запускать программы при подключении носителя» система вообще никак не будет реагировать на присоединение сменного носителя.
В качестве заключения
В этой статье я постарался подробно рассказать об основных особенностях в работе с файлами в Ubuntu. Надеюсь, вы смогли разобраться что к чему и уловить основные моменты. Напоследок хочется заметить, что Ubuntu без какого-либо дополнительного программного обеспечения поддерживает большинство распространённых форматов файлов, специфические файлы, скорей всего, можно как минимум сконвертировать в один из стандартных форматов с помощью различных программ, в изобилии доступных в репозиториях Ubuntu.
Чуть позже я расскажу как поставить пакет полной поддержки мультимедиа форматов, который не входит в Ubuntu по умолчанию из-за несовершенного законодательства некоторых стран, с которым, к сожалению, приходится считаться, но для этого необходимо рассмотреть следующую очень важную тему:
Источник