Запуск скриптов из другого каталога
Довольно часто скрипт, который я хочу выполнить, не находится в моем текущем рабочем каталоге, и я не хочу его оставлять.
Это хорошая практика для запуска скриптов (BASH, Perl и т.д.) Из другого каталога? Будут ли они обычно находить все необходимое для правильной работы?
Если так, каков наилучший способ запустить «дальний» скрипт? Это
и как использовать sudo в таких случаях? Это, например, не работает:
8 ответов 8
sh /path /to /script создаст новую оболочку и запустит скрипт независимо от вашей текущей оболочки. Команда source (.) Вызовет все команды в скрипте в текущей оболочке. Если скрипт вызовет, например, exit , то вы потеряете текущую оболочку. Из-за этого обычно безопаснее вызывать скрипты в отдельной оболочке с помощью sh или выполнять их как двоичные файлы, используя либо полный (начиная с /), либо относительный путь (./). Если они называются двоичными файлами, они будут выполняться с указанным интерпретатором (#!/bin /bash, например).
Что касается того, чтобы узнать, найдет ли сценарий нужные ему файлы, то нет хорошего ответа, кроме как посмотреть на сценарий и посмотреть, что он делает. Как вариант, вы всегда можете перейти к папке скрипта в подпроцессе, не выходя из текущей папки:
Вы определенно можете сделать это (с изменениями, упомянутыми другими, такими как sudo sh /pathto/script.sh или ./script.sh ). Тем не менее, я делаю одну из нескольких вещей, чтобы запустить их в масштабе всей системы, чтобы не беспокоиться о директориях и избавить меня от лишней лишней печати.
1) Симлинк на /usr/bin
(убедитесь, что там нет перекрывающегося имени, потому что вы, очевидно, переопределите его.) Это также позволяет мне хранить их в папках для разработки, чтобы я мог настроить их по мере необходимости.
2) Добавьте каталог Scripts на ваш путь (используя .bash_profile — или любой другой .profile, который есть в вашей оболочке)
3) Создайте псевдонимы в .bash_profile в
/.bash_profile добавьте что-то вроде:
Как вы можете сказать, синтаксис просто псевдоним, цифры, которые вы хотите действовать как команда, команда. Таким образом, ввод «l» в любом месте терминала приведет к ls -l Если вы хотите sudo, просто alias sl=»sudo ls -l» чтобы отметить для себя l vs sl (в качестве бесполезного примера).
В любом случае, вы можете просто набрать sudo nameofscript и быть в пути. Не нужно связываться с ./ или. или ш и т. д. Сначала отметьте их как исполняемые:D
Источник
Где хранить файлы всех пользователей
Подскажите, вот для личных файлов (тексты, картинки, фильмы) пользователей предназначены папки /home/username. А где хранить те же самые тексты, картинки, фильмы чтобы они были доступны не одному, а всем пользователям и можно ли эту папку смонтировать на отдельном диске?
/Data, /users и т.п.
Хм, любую папку, например, chmod 777 /home/shared Примонтировать диск туда же никто не мешает.
И не забыть chmod a+t
Так /data /users или /home/shared По стандарту как положено? И ещё вопрос, как можно сделать быстрый доступ к этой папке с рабочего стола KDE?
FHS про это ничего не говорит. Куда хотите, туда и пихайте.
существуют симлинки на директории и хранящуюся в /var папку с контентом легко сделать доступной для всех заводимых пользователей прописав в скрипты создания еще и симлинк. ну а у тех кто уже есть сделать это от рута скриптом.
А где хранить те же самые тексты, картинки, фильмы чтобы они были доступны не одному, а всем пользователям
можно ли эту папку смонтировать на отдельном диске?
Ближе всего /srv.
В папках храните на Виндовз 7 Максимальной.
Ну вообще я раньше примерно так и делал. Монтировал раздел в /mnt/data, создавал на нём папки для разнотипных данных, а потом:
ln -s «/mnt/data/sound» /home/username/«Музыка»
ln -s «/mnt/data/video» /home/username/«Видео»
ln -s «/mnt/data/pictures» /home/username/«Изображения»
ln -s «/mnt/data/raw» /home/username/«Неразобранное»
ln -s «/mnt/data/docs» /home/username/«Документы»
ln -s «/mnt/data/vm» /home/username/«Виртуальные машины»
Сейчас вопрос где это правильно должно находиться: в /mnt в /home или в /var И что за скрипты для автоматического создания симплинков? И нужны ли симплинки?
А мне так нравится 🙂
Фильмы — в /Cinema, всякие данные — в /Data, музыка — в /Music, а
— только для настроек.
Боюсь, если директории обзывать по-русски, да с кавычками, да с пробелами, проблем не оберешься.
Боюсь, если директории обзывать по-русски, да с кавычками, да с пробелами, проблем не оберешься.
А ты не бойся. Всё работает.
Вот только со скриптами придется быть осторожным. И при удаленном соединении будут косяки: попробуй-ка прочитать название директории при подключении по ssh из системы с другой локалью.
судя по черновику hfs 3 — /srv сам недавно задавался тем же вопросом.
Re: Боян
Вот только со скриптами придется быть осторожным. И при удаленном соединении будут косяки: попробуй-ка прочитать название директории при подключении по ssh из системы с другой локалью.
Надо просто писать скрипты нормально. А по поводу ssh — поищи, здесь где-то было решение.
Зачем вам делать симлинки в домашние директории ?
Создайте к примеру точку монторивания /media/DATA и смонтируйте в нее некоторый раздел, который должен быть доступен на запись всем., установив соответствующие права.
Все точки монтирования, расположенные в /media будут видны в списке мест на левой панели файловых менеджеров gnome или kde., так же на рабочем столе будет иконка. Вам останется только обговорить с пользователями, что на этом ресурсе находятся общие файлы.
Если же хотите сделать симлинки — то напишите небольшой скрипт и добавьте его в /etc/bash/bashrc:
Но создание символьных ссылок в таком случае будет выполняться при каждом входе пользователя. эти строки можно убрать из bashrc Так же для новых пользователей стоит отредактировать директорию /etc/skel и создать в ней символьные ссылки на нужные вам директории, содержимое этой директории переносится в домашний каталог созданного пользователя.
Источник
Где я должен поместить мои скрипты bash
На серверах POWER /proc/cpuinfo статическое определение тактовой частоты. Процессоры могут быть синхронизированы с командой ppc64_cpu.
Я слышал, что есть некоторые несоответствия между показаниями ppc64_cpu —frequency и показанием cpufreq.
We я должен попросить подробности здесь.
9 ответов
Я сохраняю свои скрипты в /opt/scripts.
Если ваш скрипт должен выполняться каждым системным пользователем, вы можете создать символическую ссылку на /usr/bin.
Если только root должен выполнить скрипт, вы можете создать символическую ссылку на /usr/sbin.
Команда для добавления символической ссылки в /usr/bin/:
ln -s /opt/scripts/
Я сохраняю свои скрипты в /opt/scripts.
Если ваш скрипт должен выполняться каждым системным пользователем, вы можете создать символическую ссылку на /usr/bin.
Если только root должен выполнить скрипт, вы можете создать символическую ссылку на /usr/sbin.
Команда для добавления символической ссылки в /usr/bin/:
ln -s /opt/scripts/
У меня есть каталог, который я использую для быстрой коллекции моих локальных инструментов или вещей, которые я развертываю на разных компьютерах в /usr/local/apollo. От этой директории есть ветви flags, bin и logs.
Для приложений, которые я загружаю и устанавливаю за пределами репозиториев по умолчанию apt-get, помещаются в /opt/ и каталог по имени приложения, с еще одним подкаталогом для конкретной версии приложения. Таким образом, моя скомпилированная версия приложения, такого как vlc или eclipse, не будет конфликтовать с распределенной версией.
Мое использование /opt — это то, как оно в основном официально оформлено.
Кстати, каталоги /usr/local/bin, /usr/local/apollo и /opt выживают при перезаписывании новой версии ОС.
Источник
В какой директории Linux правильнее хранить исходники проекта?
Сейчас исходники веб-проектов хранятся в файловой системе Винды. Структура такая:
— code
— — project1
— — — dist
— — — src
— — — и т. д.
— — project 2
Один из проектов нужно перенести в файловую систему WSL/Ubuntu. В какой папке правильнее размещать исходники, из которых собирается сайт?
Насколько корректным будет размещение в домашней папке пользователя home/usernsme/myprojectsources/ ?
Понятно, что строгих правил нет, но хотелось бы использовать традиционное расположение.
- Вопрос задан 25 февр.
- 370 просмотров
Насколько корректным будет размещение в домашней папке пользователя home/usernsme/myprojectsources/ ?
Исходники должны лежать в гите.
А уж куда из вытащит тот или иной юзер — это личное интимное дело того или иного юзера.
Ставьте Linux и пользуйтесь им, потому что сайты работают на линуксе в основном. И окружение сайтов должно совпадать со средой разработки. Например, те же права Unix. Я раньше разрабатывал на видне и устал от того, что нет совместимости с линуксом. То windows версий плагинов специфических под php нет. То pecl не компилирует, из-за отсутствия библиотек, то еще чего. Приходилось ставить cygwin и mingw. В какой то момент надоело это и перешел на убунту. Стало в разы легче.
Решение, если не хотите переходит на линукс — VirtualBox с Linux и туда сайты. Можно Docker или LXC и туда сайты.
По стандарту папка /var/www/html
Как вариант можно юзать: /www/проект или /srv/проект
Источник
compizomania
Азбука в Linux для начинающих и не только. Я знаю только то, что ничего не знаю, но другие не знают и этого. Сократ
Страницы
03 января 2017
Как создать собственный script (скрипт-сценарий) в Linux
Прежде всего давайте разберём, что такое script и для чего он нужен.
Script в переводе с английского — сценарий. Все мы смотрим фильмы, многие из нас — спектакли. Чтобы создать фильм/спектакль, сценаристы пишут к ним сценарии, на основании которых артисты, сценка за сценкой исполняют на сцене свои роли, из чего и складывается фильм/спектакль. Работа по созданию сценария довольно кропотливая, где нужно учесть всё до мелочей, чтобы в конечном итоге артисты могли выполнить задуманное сценаристом, а зритель увидел целостное произведение.
Подобным же образом пишутся скрипты для выполнения списка задач, которые пользователь составляет вместе (код), чтобы сделать их выполнение проще и быстрее в операционной системе. Для написания простых скриптов совсем не обязательно иметь образование программиста.
Для начала давайте создадим самый, что ни на есть, простейший скрипт-Shell для обновления системы.
Все действия я буду проводить с системе Ubuntu, но они применимы и к другим системам Linux, производных от Ubuntu. Для этого нам понадобятся: Текстовый редактор, чтобы наполнить его нужными задачами для создания скрипта (кода) и Терминал — для выполнения созданного скрипта. Эти инструменты установлены в любом дистрибутие Linux по умолчанию.
Итак, открываем текстовый редактор Gedit и вводим в него первые обязательные символы под названием shebang.
shebang в программировании, это последовательность из двух символов: решётки и восклицательного знака (#!) в начале файла скрипта. И добавляем к данным символам без пробелов /bin/sh — интерпретатор, где будет выполняться скрипт. /bin/sh — это обычно Bourne shell или совместимый интерпретатор командной строки, который передаёт «path/to/script» как первый параметр.
Первая обязательная строка скрипта будет выглядеть следующим образом:
Далее, следующей строкой следует описание того, что должен выполнить наш первый скрипт/сценарий:
# Мой первый Script обновления Ubuntu
Знак решётки (#) в самом начале строки даёт понять интерпретатору/терминалу, что эту строку читать и выполнять не нужно. Строка нужна в коде данного скрипта для того чтобы сам создатель скрипта знал, что он собирается выполнить на данном отрезке/сценке в коде, чтобы не запутаться в дальнейшем, когда таких строк будет много. Такие строки с знаком решётки называются — закомментированные.
Далее в скрипте следуют выполняемые строки с командами, в данном случае для обновления системы Ubuntu:
sudo apt update
sudo apt upgrade -y
-y в конце второй команды даёт понять интерпретатору/терминалу, что это действие/команду нужно выполнить автоматически, без дополнительного подтверждения пользователем, нажатия клавиши Ввод. y — сокращённо от английского yes, т.е. да.
Вот и всё. Ваш первый скрипт создан. У вас должно получиться как на снимке:
Остаётся сохранить созданный файл/скрипт и дать ему Имя с обязательным расширением в конце — .sh. Расширение .sh присваивается исполняемому файлу.
Я дал ему Имя — обновление.sh, сохранив в Домашней папке пользователя:
Для того чтобы созданный файл/скрипт был исполняемый, ему нужно дать на это разрешение. Сделать это можно двумя способами.
1. Выполнить следующую команду в терминале:
sudo chmod +x обновление.sh
2. Либо открыть файловый менеджер в Домашней папке (где вы сохранили созданный скрипт), правый клик на файле, в контекстном меню — Свойства — Права и активировать пункт — Выполнение: Разрешить выполнение файла как программы:
Чтобы выполнить созданный скрипт, нужно открыть терминал ( о чём я писал в самом начале статьи, что терминал — необходимый атрибут/инструмент для выполнения скрипта), ввести sh, через пробел название скрипта — обновление.sh и нажать клавишу Ввод:
Либо в терминале вводим sh и перетаскиваем из файлового менеджера созданный файл с скриптом (также через пробел):
После того как путь к файлу отобразится после команды sh и пробела, достаточно нажать клавишу Enter (Ввод), чтобы выполнить обновление системы:
Теперь в любой момент вы можете сделать обновление системы созданным собственным скриптом.
Да, кто-то может возразить, что обновление системы не сложно сделать выполнением этих двух команд в терминале, зачем пыжиться и создавать какие-то скрипты? Всё верно. Но это пример создания простейшего скрипта, чтобы показать, что «не боги горшки обжигают» 😃.
Научившись писать и использовать простейшие скрипты, можно создать скрипт по настройке системы, с тем чтобы в случае переустановки системы могли воспользоваться созданным сценарием без необходимости искать каждый раз в сети сайты с подобными настройками.
Многие из вас, скорее всего, пользуются сайтами по настройке системы, типа тех что я публикую после выхода очередного релиза Ubuntu — Ubuntu после установки или подобными сайтами. Откройте один из таких сайтов: http://compizomania.blogspot.com/2016/04/ubuntu-1604.html, затем текстовый редактор для создания скрипта.
Для примера я сделал следующую заготовку.
В текстовом редакторе вводим первую обязательную строку:
Далее закомментированные строки с описанием:
# Настройка Ubuntu после уставновки
# Обновление системы
Ниже следуют команды обновления системы:
sudo apt update
sudo apt upgrade -y
Строка описания: Добавление репозиториев:
И добавляете необходимые репозитории для дальнейшей установки программного обеспечения:
sudo add-apt-repository «deb http://archive.canonical.com/ $(lsb_release -sc) partner» -y
sudo add-apt-repository ppa:atareao/telegram -y
sudo add-apt-repository ppa:atareao/atareao -y
sudo add-apt-repository ppa:nemh/systemback -y
sudo add-apt-repository ppa:gerardpuig/ppa -y
sudo add-apt-repository ppa:haecker-felix/gradio-daily -y
После того как необходимые репозитории добавлены (повторюсь, у вас могут быть свои репозитории, у меня пример), необходимо обновить систему:
Строка с описанием:
# Обновление системы после подключения репозиториев
И команда на выполнение:
sudo apt update
Теперь, когда репозитории добавлены и система обновлена, наступила очередь в установке программ:
Для установки программ достаточно один раз ввести команду sudo apt install, а затем через пробел в данную строку добавлять сколько угодно программ, главное чтобы они были правильно составлены. Если какая-то программа состоит из нескольких слов, её команда должна быть монолитной, т.е. все слова в ней должны вводится через чёрточку, например: unity-tweak-tool:
sudo apt install my-weather-indicator telegram skype lm-sensors hddtemp psensor gdebi systemback unity-tweak-tool ubuntu-cleaner gradio -y
Установка дополнительных кодеков
# Мультимедиа и кодеки
sudo apt install ubuntu-restricted-extras -y
Отключение о сбоях в системе
# Отключить отчёты о сбоях в системе
sudo sed -i «s/enabled=1/enabled=0/g» ‘/etc/default/apport’
Ну вот, пожалуй, и всё. Данный созданный файл сценария должен выглядеть следующим образом:
Необходимо сохранить его (нажать кнопку Сохранить) и дать Имя с расширением .sh. Я назвал его Настройка\ Ubuntu.sh (вы можете назвать по-другому, но обязвтельно с расширением .sh):
Делаем созданный скрипт исполняемым:
sudo chmod +x Настройка\ Ubuntu.sh
Для выполнения созданного скрипта введите в терминале sh и название созданного скрипта через пробел, либо sh, пробел и перетащить в терминал созданный файл, как объяснялось ранее в простейшем скрипте и нажмите клавишу Ввод, для его выполнения.
Источник