Я не могу найти .bash_profile в ubuntu

Содержимое файлов

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

cat file1 | more

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

С русскоязычной документацией nano вы можете ознакомиться по этой ссылке: http://help.ubuntu.ru/wiki/nano

А документация vim доступна в этом разделе: http://help.ubuntu.ru/wiki/vim

Как используются файлы «Профиль пользователя» для пользователя

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

Большинство оболочек в стиле Бурна будут также источником , когда вызывается как оболочка входа . Это включает bash, за исключением того, что используется только в том случае, если и не существуют. Если существует , он будет использоваться; в противном случае, если существует , он будет использоваться; и в противном случае используется .

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

Если единственными командами в являются те, которые вы указали в своем вопросе, то вам вообще не нужно использовать потому что эти команды в оболочках стиля Bourne. Затем вы можете удалить (или переименовать его в нечто вроде ) и поместить эти команды в . Они могут идти в самом низу этого файла, и вы можете сделать резервную копию сначала, если хотите (разумные имена для резервного копирования могут быть или , но вы можете назвать резервную копию тем, что хотите, потому что это фактически не привыкший).

Отсутствие –provided также не существует – приведет к использованию . ( , вероятно, уже используется для вашего графического входа.)

Вход в командную строку

Используя Ubuntu в качестве операционной системы, вы можете перейти к командной строке двумя путями, а именно через консоль или через терминал.
Если вы хотите зайти в командную строку через терминал, то для этого необходимо нажать Ctrl+Alt+F(1-6) – в зависимости от выбранного номера (F1, F2…) вы попадаете в первую, вторую или другую по счету виртуальную консоль (они независимы и запускаются во время загрузки Ubuntu), каждая из которых имеет интерфейс командной строки. Если вы нажмете Ctrl+Alt+F7, то перейдете в седьмую виртуальную консоль, которая имеет графический интерфейс.

Что касается терминала, то это графическая программа, которая эмулирует консоль. Вы можете найти ее в меню, выбрав «Приложения», затем «Стандартные», а затем «Терминал», либо нажав сочетание клавиш Ctrl+Alt+T. Вы сможете выполнять команды, продолжая находиться в графическом интерфейсе.
Также возможен вариант, когда вам необходимо подключиться к серверу, на котором установлена Ubuntu. В этом случае вам нужно воспользоваться специальной программой (например, puTTy): наберите нужный ip-адрес, а затем введите имя пользователя и пароль.

Примечание.
При вводе пароля в командную строку он не высвечивается – вам нужно просто набрать пароль и нажать Enter. Если пароль введен правильно, вы сможете продолжить работу в командной строке.

Управляющие символы Bash

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

Чтобы вставить в положение курсора предыдущую команду напишите !!. Например, чтобы выполнить последнюю команду с sudo достаточно выполнить:

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

Если вы укажите один восклицательный знак и несколько символов, то выполнится последняя команда, которая начиналась на эти символы:

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

Если перед командой написать пробел, то она не сохранится в истории:

Символ $? позволяет вывести код завершения последней команды:

Символ звездочки возвращает массивом содержимое текущей папки:

С помощью символа ^ можно заменить несколько букв из предыдущей команды. Работает это вот так:

В результате файл будет удален.

5 ответов

Лучший ответ

После выхода обновления Windows 10 Fall Creators Update расположение изменилось на:

Где:

  • равно
  • — это пользователь, для которого вы ищете файл .bashrc

Просто для всех интересно, что пришло сюда из Google.

47

ncw
15 Апр 2019 в 07:12

Извините за недоразумение, я проверял в Google, и он будет в .

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

Я нахожу его там: http://www.howtogeek.com/261383/how-to-access-your-ubuntu-bash-files-in-windows-and-your-windows-system-drive -in-bash /

Учитывая, что вам нужно знать, где находится файл, вы можете использовать команду . Синтаксис команды — , по умолчанию необходимо выполнить печать имени файла. Итак, если вы найдете файл .bashrc, вы можете использовать , bash вернет вам

Кроме того, если вы хотите получить доступ к своему домашнему каталогу, вы можете использовать Надеюсь, мой ответ будет полезен :-)

26

BinaryDump
3 Дек 2016 в 08:32

~ означает, что это домашняя папка пользователя, например / home /% username% /

Вы можете перечислить такие файлы, как , и увидеть файл .bashrc.

4

James M
28 Ноя 2016 в 21:03

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

1

Joe Banks
29 Авг 2020 в 16:10

Я нахожу свой файл в:

Вы можете запустить или тоже должно работать

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

Примечание: моя установка Ubuntu — 20.04 LTS прямо из оконного магазина.

Anthony Lei
9 Июл 2020 в 05:10

Переход по директориям

В этом разделе вы познакомитесь с основными командами bash, которые позволят вам выполнять самые простые действия в командной строке.
Команда cd позволяет переходить из одной директории в другую. При этом если вы используете команду без ключей, то попадете в домашнюю директорию; для того, чтобы перейти в какую-либо конкретную директорию, необходимо просто прописать ее путь, к примеру:

cd /home/users/dir1

Вы также можете указывать команду cd с определенными ключами:

cd ../.. — переход на две директории выше;

cd —     — переход в предыдущую директорию (в которой вы были до перемещения в нынешнюю).

Команда pwd укажет путь той директории, в которой вы в данный момент находитесь.

10 ответов

Лучший ответ

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

Он откроет файл с помощью TextEdit, вставит ваши вещи и затем сохранит. Если вы откроете его снова, вы найдете свои правки.

Вы можете использовать другие редакторы:

Но если вы не знаете, как их использовать, проще использовать подход .

Кроме того, вы можете положиться на . Копировать

В системном буфере обмена, а затем в оболочке

Или вы также можете использовать

(теперь ждет ввода: вставьте два определения экспорта и нажмите ctrl-D).

392

Alessandro Vendruscolo
26 Май 2015 в 15:31

Самый простой ответ:

Шаг 1. Запустите Terminal.app.

Шаг 2: введите nano .bash_profile — эта команда откроет документ .bash_profile (или создаст его, если он еще не существует) в самом простом в использовании текстовом редакторе Терминала — Nano.

Шаг 3. Теперь вы можете просто изменить файл. Вставьте эти строки кода, чтобы изменить приглашение терминала.

Экспорт PS1 = «___________________ | \ w @ \ h (\ u) \ n | =>»

Экспорт PS2 = «| =>»

Шаг 4: Теперь сохраните изменения, набрав ctrl + o, нажмите return, чтобы сохранить. Затем выйдите из Nano, набрав ctrl + x.

Шаг 5: Теперь нам нужно * активировать ваши изменения. Введите source .bash_profile и посмотрите, как изменится ваше приглашение.

Это оно! Наслаждайтесь!

1

Soban Arshad
21 Авг 2020 в 09:57

Определите, какую оболочку вы используете, набрав в Терминале.

Затем откройте / создайте правильный файл rc. Для Bash это или . Для оболочки Z это .

Добавьте эту строку в конец файла:

Для проверки обновите переменные, перезапустив Терминал или набрав , а затем сделав

1

Pavel
13 Июн 2020 в 20:23

Для меня Mac OS — Мохаве. и я сталкиваюсь с той же проблемой в течение трех дней, и в конце я просто записываю правильный путь в файле .bash_profile, который выглядит следующим образом:

  • note1: если у вас нет .bash_profile, создайте его и напишите строку выше
  • note2: заархивируйте загруженный SDK flutter в / development, если вы скопируете и вставите этот путь

1

Theo
22 Июл 2019 в 13:42

Mac OS X сохраняет путь не в .bash_profile, а в .profile, поскольку Mac OS X является ветвью семейства * BSD. Вы должны увидеть экспорт-бла-бла-бла в .profile после того, как выполните cat .profile на своем терминале.

2

neemo810707
28 Май 2015 в 02:43

Установите путь JAVA_HOME и ANDROID_HOME> Вы должны открыть терминал и ввести приведенный ниже cmd.

После этого вставьте ниже пути в файл базового профиля и сохраните его.

5

Bheem Singh
8 Май 2020 в 12:31

В Macbook шаг за шагом:

  1. Прежде всего откройте терминал и напишите его:
  2. Создайте свой файл bash:

Вы создали свой файл «.bash_profile», но если вы хотите его отредактировать, вы должны его написать;

  1. Измените свой профиль bash:

После сохранения в верхнем левом углу экрана: Файл> Сохранить .

@canerkaseler

6

canerkaseler
1 Мар 2019 в 03:41

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

Затем вы можете вставить следующее:

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

Когда вы закончите вносить изменения, следуйте инструкциям в нижней части окна редактора Nano для WriteOut () и Exit (). Затем выйдите из Терминала и снова откройте его, и вы сможете использовать только что определенные псевдонимы и переменные среды.

9

Myles O’Connor
31 Май 2017 в 16:14

Если вы используете MAC Catalina, вам необходимо обновить файл .zshrc вместо .bash_profile или .profile

60

Marcus Gallegos
10 Ноя 2019 в 06:59

Немного подробнее для новичков:

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

Войдите в свою папку пользователя в Finder . Там должен быть найден файл .bash_profile. -> HD / Пользователи /

Помните: файлы с точкой в ​​начале ‘.’ по умолчанию скрыты .

Чтобы отобразить скрытые файлы в Mac OS Finder:

Если он не существует, вы должны создать .bash_profile самостоятельно.

Откройте приложение терминала и перейдите в папку пользователя с помощью простой команды:

Если его нет, используйте эту команду для создания файла :

Во-вторых, если вы не можете запомнить сложные команды для сохранения и закрытия в vim, nano и т. Д. (Способ, рекомендованный выше), самый простой способ редактировать — открыть файл .bash_profile в предпочитаемом вами редакторе кода (Sublime и т. Д.).

Finder -> Папка пользователя. Щелкните правой кнопкой мыши -> открыть с помощью: Sublime Text (или другого редактора кода). Или перетащите его в приложение в доке.

… А там его можно редактировать, передавать команды экспорта в новые строки.

90

Carthic
16 Сен 2019 в 12:12

~/.bash_logout:

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

2. Различия и связи

  • Каталог / etc — это файл конфигурации системного (глобального) уровня. Когда ~ / .bash_profile и ~ / .bashrc не найдены в домашнем каталоге пользователя, эти два файла будут прочитаны.
  • Переменные (глобальные), установленные в / etc / profile, могут действовать на любого пользователя, в то время как переменные (локальные), установленные в ~ / .bashrc, могут наследовать только переменные в / etc / profile, и у них есть отношения «родитель-потомок» .
  • ~ / .bash_profile используется для входа в bash в интерактивном режиме и в режиме входа; ~ / .bashrc используется для входа в bash в интерактивном режиме без входа. Обычно эти две настройки примерно одинаковы, поэтому обычно первая вызывает второй. Настройки вступят в силу: вы можете перезапустить, чтобы они вступили в силу, или вы можете использовать команду: source.
  • ~ / .bash_history — это файл истории оболочки bash, в котором записываются все команды, которые вы вводите в оболочке bash. Количество записей, сохраняемых в файле истории, можно установить с помощью переменной среды HISSIZE.

5 ответов

30

Файл считывается bash, когда он является оболочкой входа. Это то, что вы получаете при входе в текстовый режим.

Когда вы входите в систему под X, сценарии запуска выполняются с помощью . На Ubuntu и Mint, есть тире , а не bash. У Dash и bash есть те же основные функции, но штрих к этим основным функциям, чтобы быть быстрыми и маленькими, в то время как bash добавляет множество функций за счет потребности в большем количестве ресурсов. Обычно используется тире для скриптов, которым не нужны дополнительные функции и bash для интерактивного использования (хотя zsh ).

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

Итак, что вы должны положить где?

  • Хороший загружает , и загружает , если оболочка является интерактивной.

  • В , укажите определения переменных среды и другие параметры сеанса, такие как

  • В , установите интерактивные настройки bash, такие как псевдонимы, функции, завершение, привязки клавиш (которые не находятся в ), …

См. также и .

14

— это сценарий конфигурации запуска bash. Не существует стандартного мандата X на источник .

То, о чем вы думаете, скорее . Первоначально это был файл конфигурации запуска bourne shell (sh). Сегодня во многих дистрибутивах есть среда рабочего стола, настроенная на источник

Обратите внимание, что это также не стандарт, но, похоже, это соглашение

Debian используется для источника при графическом входе ( вики-страница с 2013 года ) теперь это не ( wiki-страница с 2016 г. ).

Источники арки при графическом входе в систему ( вики-страница с 2013 года ).

Ubuntu используется для предотвращения использования ( wiki-страница с 2013 года ) теперь она больше не препятствует ( wiki-страница с 2016 года ).

Относительно вашего другого вопроса: Почему мой файл ~ /.bash_profile не работает? Это ожидаемое поведение.

Поведение, короче говоря, выглядит следующим образом:

  • bash запускается как интерактивная оболочка входа: читает
  • bash запущен как интерактивная оболочка без входа: читает

Подробнее см. мой ответ на аналогичный вопрос в askubuntu:

1

В своем вопросе вы ссылаетесь на https://stackoverflow.com/questions/902946/, рекомендуя не использовать источник , когда принятый ответ предписывает

Включение всего этого в не работает для меня в Linux Mint. Использование отлично работает.

1

При попытке перезагрузить /исходный файл ~ /.profile возникает пара проблем.
[Это относится к Ubuntu linux — в некоторых случаях детали команд будут разными)

  1. Запускаете ли вы это непосредственно в терминале или в скрипте?
  2. Как вы запускаете это в скрипте?

Ad. 1)

Выполнение этого непосредственно в терминале означает, что не будет создана подселлем. Таким образом, вы можете использовать две команды:

или

В обоих случаях это обновит среду с содержимым файла .profile.

Объявление 2) Вы можете запустить любой скрипт bash либо путем вызова

или

В первом случае это создаст подоболочку, которая не повлияет на переменные среды вашей системы, и они будут видны только для процесса подоболочки. После завершения команды subshell ни один экспорт и т. Д. Не будет применяться.
ЭТО ОБЩАЯ ОШИБКА И ПРИЧИНЫ МНОГО РАЗРАБОТЧИКОВ, ЧТОБЫ ПОТЕРЯТЬ МНОГО ВРЕМЕНИ.

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

команды.

Чтобы убедиться, что сценарий не запущен на подошве, вы можете использовать эту функцию. (Снова пример для оболочки Ubuntu)

Я надеюсь, что это очистит некоторые из распространенных недоразумений! : D
Удачи!

Простое решение — сделать терминал терминалом входа. Для терминала Gnome в разделе «Плитка и команда» профиля по умолчанию вы можете установить флажок «Запустить команду в качестве оболочки входа». Эта статья объясняет разницу между оболочку входа, а другая — нет.

Если вам нужен .bash_profile для чего-то еще (но вы, вероятно, не)

Я должен отметить, что то, что я рекомендовал, очень похоже на что-то c0rp , сказанное ранее (в в сообщение , которое с тех пор было удалено) :

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

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

Если у вас есть специфичные для bash команды, которые должны находиться в файле , то, как сказал c0rp, вы можете поместить эту строку в свой файл :

Затем будет источником , а команды в будут запускаться как для входа в bash, так и для входа в систему не из bash.

Перенаправление и конвейер

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

Этим очень удобно пользоваться для логирования, если вы хотите записать какие-либо данные в файл. К примеру, эта команда запишет все найденные согласно указанными параметрам файлы в файл log (он автоматически появится в той директории, в которой вы работаете):

find /home/users -name ‘file*’ >> log

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

find /home/users -name ‘file*’ | sort -r

Если вы введете данную строку, то сначала будут найдены все файлы, которые соответствуют условию, а затем командой sort они будут отсортированы в обратном порядке (из-за использования ключа -r).

Как устроена навигация в bash

Организация файлов и папок в Linux не такая, как в Windows. Путь к файлу отсчитывается не от названия диска, а от так называемого корневого каталога. Говоря языком «для начинающих», это начальная точка: считается, что все файлы и папки в системе расположены внутри «корня». Внутри этих папок могут лежать свои подкаталоги и файлы, но их расположение тоже отсчитывается относительно корневого каталога. Корневой каталог обозначается прямым слэшем /.

Чтобы указать на файл, лежащий в корневом каталоге, нужно написать /<имя_файла>. Полный путь к любому файлу можно прописать так: /<папка1>/<папка2>/…/<папкаn>/<файл>.

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

В системах Windows для указания пути используются обратные слэши \. В Linux это всегда прямые слэши /.

Объединение команд

Оболочка Bash позволяет не только выполнять команды, но и объединять их в сложные конструкции для получения нужного эффекта. Использование Bash таким способом очень эффективно. Как вы знаете, система Linux создает три потока для каждой программы — поток ввода, поток вывода и поток ошибок. Оболочка позволяет перенаправить поток одной программы прямо в другую с помощью специальных операторов. Читайте более подробно обо всем этом в статье перенаправление ввода вывода в Bash.

Кроме того, Bash позволяет объединять команды по времени выполнения. Существуют такие операторы для объединения команд:

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

Например, сначала выполняем загрузку файла, а затем открываем его в плеере, если загрузка прошла успешно:

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

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

И наконец, вы можете запустить какой-либо сервис или приложение, например, браузер в фоне и свободно продолжить работу в терминале:

Как используются файлы профиля пользователя

Большинство рабочих столов по умолчанию настроены таким образом, что файл в вашем домашнем каталоге создается при графическом входе в систему. Похоже, вы используете стандартную рабочую среду Ubuntu, то есть GNOME с Unity. Это должно работать.

Большинство также будет источником , при вызове как оболочка входа в систему . Это включает bash, за исключением того, что Получается только в том случае, если и не существуют. Если существует, он будет использован; в противном случае, если существует, он будет использован; и в противном случае используется .

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

Если единственными командами в являются те, которые вы указали в своем вопросе, то вам вообще не нужно использовать , потому что эти команды переносимы между оболочками в стиле Борна. Затем вы можете удалить (или переименовать его во что-то вроде ) и поместить эти команды в . Они могут находиться в самом низу этого файла, и вы можете сначала создать его резервную копию, если хотите (разумные имена для резервной копии могут быть или , но вы можете назвать резервную копию как хотите, потому что она на самом деле не используется).

Отсутствие — при условии также не существует — приведет к использованию . (, вероятно, уже используется для вашего графического входа в систему.)

Что такое bash

Bash расшифровывается как Bourne again shell (что можно перевести как «Еще одна оболочка Борна»), название частично заимствованно от более ранней версии командной оболочки UNIX, которая называлась просто Bourne shell («Оболочка Борна» – по фамилии разработчика Стивена Борна).

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

Выводы

У меня была проблема с Wi-Fi, которая до сих пор не решена из-за проблемы, которая возникла, когда я пытался ее решить.

Я нашел это решение для Wi-Fi, поэтому попробовал его:

Вставьте в конфиг этот текст

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

После третьей или четвертой команды (я не уверен, какая из них) я потерял свои права администратора; на самом деле, если я пытаюсь использовать команду sudo он выводит 3 строки, которые я переведу как можно лучше:

На терминале отображается

Теперь, когда я открываю терминал, он выводит мне строку bash /etc/profile: Permission denied, которую я никогда раньше не видел, и пропущенная часть имени необычна, потому что вместо нее следует писать zenoraiser.

Что вы предлагаете мне сделать?

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

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