Где прописать алиас чтоб вызвать скрипт с php?
Ну дык вы в каком месте редактировали .bachrc? В домашней директории рута? Вот от рута и работает.
Надо в домашнем каталоге www-data, тогда может и заработает.
Можно еще в /usr/local/bin символическую ссылку кинуть попробовать.
Но нафига такие заморочки тоже не пойму. Чтоб красивее было что ли?
На сайте с 22.11.2013
12 сентября 2023, 15:21
br.almighty #:
Но нафига такие заморочки тоже не пойму. Чтоб красивее было что ли?
нет. просто я делаю скрипт на пк. (windows)
отдаю его клиенту. сайт на линуксе. поетому хочу чтоб было одинаково и не менять ничего
На сайте с 22.11.2013
12 сентября 2023, 15:23
br.almighty #:
Надо в домашнем каталоге www-data, тогда может и заработает
и как туда попасть. у меня пароля нет. ето хз что за пользователь. ето наверно группа пользователей .его сама исп установила
На сайте с 13.07.2021
12 сентября 2023, 15:26
lutskboy #:
хочу чтоб было одинаково и не менять ничего
var_dump(shell_exec( $_SERVER['DOCUMENT_ROOT'] . '/data/curl/getweb 2>&1'));
Одинаково и не надо ничего менять.
Создание синонимов команд в Linux. Команда alias
В Linux можно создавать синонимы для других команд. Рассмотрим, как это сделать.
Синонимы для команд (или псевдонимы, или алиасы) — это команда, состоящая из одного слова, но выполняющая другую заданную команду. Это удобно, например, когда нужно часто выполнять длинную команду или команду с различными ключами. Вместо ввода длинной команды достаточно выполнить одну команду-синоним.
Создание синонимов (команда alias)
В командной оболочке Bash для создания синонимов используется команда alias .
Синтаксис команды alias
Чтобы создать синоним нужно указать команду-синоним и в кавычках указать команду , которая должна выполняться:
alias синоним =» команда »
синоним — короткая команда (алиас), которая будет использоваться для запуска команды .
команда — команда, которая будет запускаться при вызове синонима . Записывается в двойных или одинарных кавычках.
Примеры создания синонимов
Вывод списка файлов:
alias ll="ls -la"
То есть, вместо выполнения ls -la теперь достаточно выполнить команду ll :
> ll Documents/ итого 16480 drwxr-xr-x 3 yuriy yuriy 4096 дек 7 17:46 . drwxr-xr-x 45 yuriy yuriy 4096 янв 4 13:23 .. -rw-rw-r-- 1 yuriy yuriy 155 июл 25 16:12 code.md drwxrwxr-x 2 yuriy yuriy 4096 июл 27 14:48 data .. -rw-r--r-- 1 yuriy yuriy 11116 июл 24 22:01 Pingvinus.docx -rw-rw-r-- 1 yuriy yuriy 251 июл 25 16:31 pingvinus.md
Создадим команду для быстрого перехода в заданную директорию:
alias cdwork=”cd /home/pingvinus/Documents/data”
yuriy@pingvinus:~$ cdwork yuriy@pingvinus:~/Documents/data$
Подключение по ssh к определенному серверу:
alias serv="ssh -p 1234 pingvinus@192.168.0.123"
Сохранение синонимов
Когда вы создаете синоним с помощью команды alias, то он функционирует только в текущей сессии, пока открыто окно терминала. Чтобы сохранить синонимы на постоянной основе, нужно прописать выполнение команд alias в файл .bashrc .
Запустите терминал и откройте файл .bashrc для редактирования, выполнив команду:
nano ~/.bashrc
Перейдите в конец файла и введите команды для создания синонимов, по одному на каждой строчке, например:
alias ll="ls -la" alias cdwork="cd /home/pingvinus/Documents/data" alias serv="ssh -P 1234 pingvinus@192.168.0.123"
Сохраните изменения и закройте файл. Для этого нажмите Ctrl+X , откроется запрос на сохранение изменений в файле — нажмите y и затем Enter .
Чтобы изменения вступили в силу, можно выйти и снова войти в систему или выполните команду:
source ~/.bashrc
Просмотр списка синонимов
Чтобы просмотреть список всех активных в данный момент синонимов используется команда:
alias -p
Во многих дистрибутивах несколько синонимов уже может быть создано в системе. Например у меня результат следующий:
> alias -p alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l='ls -CF' alias la='ls -A' alias ll='ls -alF' alias ls='ls --color=auto'
Удаление синонимов
Чтобы удалить синоним используется команда unalias . Удаление происходит только в текущей сессии терминала.
Удаление синонима по заданному имени:
unalias имя_синонима
Удаление всех синонимов:
unalias -a
Несколько примеров синонимов
Очистка окна терминала:
alias c="clear"
Вывод подробного списка файлов:
alias ll="ls -la"
Вывод списка скрытых файлов:
alias l.="ls -d .* --color=auto"
Поиск по истории команд (запускается, например, так hs ssh ):
alias hs="history | grep"
Показать список открытых портов:
alias ports="netstat -tulanp"
Выполнять ping только 5 раз, а не бесконечно:
alias ping5="ping -c 5"
Узнать свой внешний IP-адрес:
alias ipe="curl ipinfo.io/ip"
Создание синонимов, используя Bash-функции (синонимы с аргументами)
Командная оболочка Bash позволяет создавать функции, которые могут выполнять одну или несколько команд. Они относятся к программированию в Bash, но их иногда можно использовать и для создания синонимов. Такие функции могут принимать аргументы в командой строке, в отличии от синонимов, создаваемых командой alias.
Синтаксис функций в Bash
имя_функции () <
команда1
команда2
.
>
function имя_функции <
команда1
команда2
.
>
Данный код создает функцию , которая выполняет команды . Команда может быть одна или несколько. Чтобы выполнить функцию достаточно ввести в командной строке ее название. Через пробел можно передавать аргументы.
имя_функции аргумент1 аргумент2
Чтобы внутри функции обратиться к аргументам, используются сокращения $1 , $2 и т.д. $1 соответсвует первому аргументу, $2 второму и т.д. $0 соответсвует имени функции.
Примеры создания функций
Функции можно создавать прямо в текущей сессии терминала, но лучше прописать их в файле .bashrc .
Создадим функцию которая принимает имя директории, создает данную директорию и переходит в нее:
mkcd ()
Теперь, вместо того, чтобы выполнять mkdir для создания директории, а затем cd , чтобы перейти в нее, достаточно выполнить:
mkcd mynewdir
У вас может возникнуть вопрос, что означают символы — и && внутри нашей функции?
- — — используется, чтобы указать, конец опций команды. То есть все, что будет записываться после — это уже аргументы и они не будут интерпретироваться, как опции для данной команды. В нашем примере мы можем попробовать создать директорию имя которой начинается с символа — , и если бы мы не использовали — , то команда mkdir подумала бы, что мы пытаемся передать ей не имя директории а опцию.
- && — логическое И — сначала выполняется команда, стоящая слева от && и только если она выполнена успешно, запускается команда, стоящая справа от && .
Заключение
Синонимы команд в Linux очень удобный инструмент, упрощающий работу с системой. В данной статье мы рассмотрели создание синонимов командой alias , а также использование функций Bash для создания синонимов.
Не смотря на удобство использования синонимов, сильно увлекаться ими не стоит. Не нужно создавать тонну алиасов на все случаи жизни. Это может привести к путанице и банальному незнанию полных команд, когда пересаживаешься за другой компьютер.
Также нужно быть крайне аккуратным при создании синонимов, которые имеют такое же имя, как и сама команда, которую они выполняют. Переписывая таким образом поведение команды, выполнение синонима, вместо команды, иногда может приводить к неочевидным результатам.
Алиасы в bash для быстрого набора команд Git
Командный интерпретатор bash позволяет задавать произвольные алиасы для разных команд и выражений. Алиасы не являются командами сами по себе, но им, как и командам, можно передавать аргументы. Алиасы позволяют сделать вызов громоздких команд очень простым, с легко запоминающимися названиями.
Использовать Git я привык исключительно из консоли, но на ввод длинных команд с разными аргументами тратится значительное количество времени. Поэтому я ввёл практику использования алиасов. Для безопасных команд я использовал короткие алиасы, которые по сути стали горячими клавишами, а для функциональных — простые короткие слова из состава команд Git. Если команда опасная, то можно сделать её в два слова, написанных через дефис, для исключения случайного ввода. На самом деле, использование алиасов для работы с Git широко практикуется, я решил лишь преподнести отдельный вариант подборки алиасов, которые для меня оказались очень удобными.
Формат задания алиаса имеет следующий вид:
alias name
Основной проблемой алиасов является то, что они не подхватываются автоматически механизмом автодополнения кода. Их написание отличается от тех команд, которые зарегистрированы в системе автодополнения, поэтому приходится дополнительно регистрировать алиасы, назначая им соответствующие спецификации автодополнения (compspec) через встроенную в bash команду complete . В случае с Git над complete существует обёртка __git_complete , в которую необходимо передавать предопределённые функции-обёртки, начинающиеся с префикса _git_ и оканчивающиеся названием подкоманды git. В Ubuntu весь связанный с этим код можно посмотреть в файле /usr/share/bash-completion/completions/git .
Алиас
Действие
Получить изменения с сервера
Просмотреть текущее состояние локального репозитория
Просмотреть текущее состояние локального репозитория и количество изменённых строк
Просмотреть изменения, сделанные в файлах и ожидающие подтверждения, в стандартном diff-формате
Просмотреть изменения, сделанные в файлах и ожидающие подтверждения, с выделением одним только цветом
Список последних коммитов в кратком формате.
Список последних коммитов с развёрнутой информацией о них.
Переход на другую ветку или коммит, создание новой ветки с опцией -b .
Получить изменения с сервера и влить их в текущую ветку.
Сделать коммит (зафиксировать изменения).
Добавить файлы или изменения в будущий коммит.
Отменить добавление изменений в будущий коммит.
Отправить новые коммиты на сервер.
Отправить коммиты на сервер с перезаписью их истории, если другие люди не успели отправить туда свои коммиты.
Влить заданную ветку в текущую.
Добавить изменения в уже сделанный коммит или изменить его комментарий.
Выполнить перезапись истории коммитов, например, переместив коммиты в конец другой ветки.
Переименовывание или удаление локальной ветки
Применить в текущей ветке отдельные существующие коммиты.
Сохранить свои текущие изменения во временное хранилище.
Применить свои текущие изменения из временного хранилища, но не удалять и оттуда.
Забрать свои изменения из временного хранилища и применить их.
Ниже приведено примерное содержимое файла ~/.bash_aliases с основными алиасами Git и кодом их автоматической регистрации в механизме автодополнения командой строки.
#!/bin/bash alias f="git fetch --tags" alias s="git status" alias ss="git status && git diff --shortstat" alias d="git diff" alias dd="git diff --word-diff=color" alias l="git log -n 20 --graph --pretty=format:'%Cred%h%Creset %an: %s / %Cgreen%cr%Creset %Creset %C(yellow)%d%Creset' --abbrev-commit --date=relative" alias ll="git log" alias go="git checkout" #или alias gg="git checkout" alias pull="git pull" alias commit="git commit" alias add="git add" alias reset="git reset" alias push="git push" alias push-fix="git push --force-with-lease" alias merge="git merge" alias amend="git commit --amend" alias rebase="git rebase" alias branch="git branch" alias pick="git cherry-pick" alias stash="git stash" alias apply="git stash apply" alias pop="git stash pop" # Регистрируем алиасы в системе автодополнения git_completions="/usr/share/bash-completion/completions/git" if [ -f "$" ]; then source "$" # Получаем массивы алиасов и соответствующих им команд git cmds=( $(alias | grep -v ss | grep -Po '(?; i++ )); do a="$" cmd="$" __git_complete "$" _git_"$" done fi
Для того, чтобы файл с алиасами применялся при входе в систему, необходимо добавить его подключение в файл ~/.bashrc с помощью команды source (или . ). Файл ~/.bashrc запускается на исполнение всегда при старте командного интерпретатора bash, поэтому если файл редактировался из консоли, потребуется её заново открыть или запустить вложенный командный интерпретатор bash.
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
Алиасы s , d и l простые, дают необходимый минимум информации. Задумка двухбуквенных в том, чтобы дать слегка больше информации, если это требуется. С помощью f можно получить последние изменения в репозитории и влить их в текущую ветку с помощью pull или pull -r . Через l можно посмотреть, что за новые коммиты прилетели в ветку, или что было последним из изменений, а через ll — подробно изучить коммиты. Переключиться на другую ветку можно через go , создать новую ветку можно через go -b . При создании коммита, в общем случае, сначала вводится s , проверяется на какой мы ветке, какие файлы требуется добавить, затем d , чтобы проверить свои изменения. Через add добавляются файлы (или add -i для выбора отдельных изменений в файлах), через commit -m создаётся новый коммит. Если вдруг в тексте сообщения коммита оказалась опечатка, можно быстро всё поправить через amend . Если в main-ветку успели прилететь новые коммиты, можно сделать rebase main . И потом сделать push . Если ветка своя собственная, то можно делать rebase -i с исправлениям прошлых коммитов и отправить модифицированные коммиты через push-fix .
Если шла работа, но срочно понадобилось переключиться на другую ветку, можно временно убрать свои изменения через stash , переключиться на другую ветку через go . Потом можно вернуть изменения с помощью apply или pop . Отдельные коммиты из других веток можно применять с помощью pick , также это может быть полезным, если случайно сделать изменения в отделённом HEAD (например, в подмодуле).
Алиасы могут совпадать с существующими командами. Если такие команды обычно не используются, то это проблемой не является. Если же команды понадобятся, то в случае исполняемых файлов всегда можно указать полный путь к файлу. Не будет проблем и с командами, которые запускаются от имени суперпользователя, поскольку алиасы прописаны лишь для непривилегированного пользователя. Если используется язык Go, то с использованием алиаса go могут возникнуть проблемы. В качестве решения можно изменить алиас на gg или gc , либо же сделать алиас golang для команды go . Здесь кому как удобнее.
В Ubuntu 21.10 при использовании алиаса над git checkout выводятся сообщения об ошибках. Происходит это из-за того, что одна из переменных в целочисленных сравнениях оказывается пустой. Вариантом подавления вывода ошибок является замена в файле /usr/share/bash-completion/completions/git сравнения через квадратные скобки на арифметическое сравнение через двойные скобки, например, (( var1 < var2 )) , в которых можно использовать названия переменных без предшествующего знака $ . Такое исправление работает и в zsh, на который автодополнение тоже рассчитано.
Патч, решающий проблему
--- /usr/share/bash-completion/completions/git 2021-08-09 15:29:27.000000000 +0300 +++ ./git 2022-04-08 23:32:38.501198226 +0300 @@ -1011,7 +1011,7 @@ if [ "$cmd" = "remote" ]; then ((c++)) fi - while [ $c -lt $cword ]; do + while (( c < cword )); do i="$" case "$i" in --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;; @@ -1187,7 +1187,7 @@ done local wordlist="$1" - while [ $c -lt $cword ]; do + while (( c < cword )); do for word in $wordlist; do if [ "$word" = "$" ]; then if [ -n "$" ]; then @@ -1221,7 +1221,7 @@ done local wordlist="$1" - while [ $c -gt "$__git_cmd_idx" ]; do + while (( c > __git_cmd_idx )); do ((c--)) for word in $wordlist; do if [ "$word" = "$" ]; then @@ -1283,7 +1283,7 @@ __git_has_doubledash () < local c=1 - while [ $c -lt $cword ]; do + while (( c < cword )); do if [ "--" = "$" ]; then return 0 fi @@ -1449,7 +1449,7 @@ < local i c="$__git_cmd_idx" only_local_ref="n" has_r="n" - while [ $c -lt $cword ]; do + while (( c < cword )); do i="$" case "$i" in -d|-D|--delete|-m|-M|--move|-c|-C|--copy) @@ -2479,7 +2479,7 @@ __git_config_get_set_variables () < local prevword word config_file= c=$cword - while [ $c -gt "$__git_cmd_idx" ]; do + while (( c >__git_cmd_idx )); do word="$" case "$word" in --system|--global|--local|--file=*) @@ -3213,7 +3213,7 @@ _git_tag () < local i c="$__git_cmd_idx" f=0 - while [ $c -lt $cword ]; do + while (( c < cword )); do i="$" case "$i" in -d|--delete|-v|--verify) @@ -3388,7 +3388,7 @@ local __git_C_args C_args_count=0 local __git_cmd_idx - while [ $c -lt $cword ]; do + while (( c < cword )); do i="$" case "$i" in --git-dir=*)
На практике я использую несколько меньший набор алиасов, в списке же привёл все, какие могут пригодиться в повседневной работе. Надеюсь, этот список кому-то окажется полезным, удачного использования!
Вопросы-Ответы
Как прописать псевдонимы (алиасы) к своему домену? Я хочу чтобы по разным доменам открывался один и тот же сайт.
Иногда возникают ситуации, когда необходимо, чтобы по нескольким адресам открывался один и тот же сайт. Здесь речь не идет о редиректе или переадресации. Это делается путем добавления к основному домену псевдонимов, или, как их еще часто называют, алиасов. В таком случае, заходя и на один свой домен, и на второй домен, Вы будете видеть одно и то же содержимое. Для добавления псевдонима Вам необходимо перейти в панель управления Вашим хостинг-аккаунтом ISPManager, авторизировавшись под своими данными, после чего перейти во вкладку "WWW-домены". Данная вкладка отображается все домены и поддоменны, которые работают в рамках Вашего аккаунта. Двойным щелчком мыши выберите домен, которому необходимо добавить алиасы, после чего перед Вами откроется окно редактирования настроек Вашего домена (также это можно сделать выделив одним щелчком мыши Ваше доменное имя и нажав на иконку "Изменить" в правой верхней части панели управления).
Для добавления псевдонима в окошке "Параметры домена" в поле Псевдонимы нажмите на стрелочку "вверх-вниз", это расширит поле "Псевдонимы" и позволит Вам удобно работать с псевдонимами Вашего основного домена. Это поле уже содержит один псевдоним - это Ваш основной домен с www. Для добавления псевдонима с новой строчки впишите домен, который необходимо прописать как алиас для основного, и в следующей строчке пропишите его-же, но уже с приставкой www (так, как показано на верхней картинке).
После этого нажмите ОК и дождитесь перезагрузки сервера для обновления его настроек. Обратите внимание: для того, чтобы такая конструкция работала, необходимо чтобы псевдоним был направлен на тот же хостинг, что и основной домен.
Способы оплаты
script type="text/javascript"> jQuery(document).ready(function($) < //Показывать кнопки, если только браузер достаточно широк if( $(window).width() >= 1030 ) $('#social-float').show(); // Update when user resizes browser. $(window).resize(function() < if( $(window).width()