Показаны сообщения с ярлыком log. Показать все сообщения
Показаны сообщения с ярлыком log. Показать все сообщения

вторник, 20 декабря 2022 г.

Разделить экран Vim по горизонтали и вертикали, запускает vim в режиме diff

 

Разделение Экрана Vim По Вертикали

  • Войдите в командный режим, нажав кнопку ESC.
  • Нажмите комбинацию клавиш Ctrl + w , а затем букву «v«.
Разделение экрана VIM по вертикали
Разделение экрана VIM по вертикали

Чтобы перейти к правой панели, нажмите Ctrl + w, а затем букву «l«.

Навигация по экранам VIM
Навигация по экранам VIM

Чтобы вернуться к левой панели, используйте комбинацию Ctrl + w, а затем букву «h«.

Разделение Экрана Vim По Горизонтали

Чтобы разделить экран vim по горизонтали или открыть новое рабочее пространство в нижней части активного выделения, нажмите Ctrl + w, а затем букву «s«. В приведенном ниже примере левый раздел был разделен на два рабочих пространства.

Разделение экрана VIM по горизонтали
Разделение экрана VIM по горизонтали

Для перехода в нижний раздел нажмите Ctrl + w кнопку, а затем букву «j«.

Перейдите к нижнему экрану VIM
Перейдите к нижнему экрану VIM

Чтобы вернуться в верхний раздел, нажмите Ctrl + w кнопку, а затем букву «k«.

Перейдите к верхнему экрану VIM
Перейдите к верхнему экрану VIM

Увеличение ширины текущего рабочего пространства Vim

Чтобы увеличить ширину текущего выделения в Редакторе Vim, нажмите Ctrl + w кнопку, а вскоре после этого-комбинацию SHIFT + «>».

В приведенном ниже примере я увеличил ширину левой панели.

Увеличение Ширины Рабочего Пространства Vim
Увеличение Ширины Рабочего Пространства Vim

Чтобы уменьшить ширину текущего выделения Vim-файла, нажмите Ctrl + w , а потом комбинацию SHIFT + «<» .

На скриншоте ниже хорошо видно, что левый раздел уменьшился в ширину.

Уменьшить Ширину Рабочего Пространства Vim
Уменьшить Ширину Рабочего Пространства Vim

Увеличение высоты текущего рабочего пространства Vim

Чтобы увеличить высоту текущего рабочего пространства, используйте комбинационное нажатие Ctrl + «w», а затем комбинацию SHIFT + «+» .

Увеличение Высоты Рабочего Пространства Vim
Увеличение Высоты Рабочего Пространства Vim

Чтобы уменьшить высоту рабочей области, нажмите Ctrl + w , а потом  знак минус.

Уменьшение Высоты Рабочего Пространства Vim
Уменьшение Высоты Рабочего Пространства Vim

Чтобы убедиться , что высота верхнего и нижнего рабочих пространств одинакова, нажмите Ctrl + w , а потом знак равно = .

Установите равные размеры рабочего пространства Vim

vimdiff

vimdiff показывает три версии программы Hello World

$ vim -d [параметры] файл1 файл2 [файл3 [файл4]]

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

Навигация между окнами

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

В vim четыре основные команды для перемещения курсора влево, вниз, вверх и вправо — это h , j , k и l соответственно. Так что неудивительно, что команды для перемещения курсора из одного окна в другое есть,

CTRL wh: Перейти к окну слева
CTRL wj: Перейти к окну ниже
CTRL wk: Перейти к окну выше
CTRL wl: Перейти к окну справа

Открыть файл

  1. Esc
  2. :e filename.txt

Выход из программы

Вы можете сохранить измененные файлы в каждом окне с помощью команды :w и закрыть отдельное окно буфера с помощью команды :q . Это займет некоторое время для нескольких окон. Команда :qa закрывает все файловые окна, если ни один файл не был изменен. Кроме того, :qa! command force закрывает все окна буфера, и любые изменения, сделанные в любом из файлов, отбрасываются. Если вы хотите сохранить любые файлы, которые могли быть изменены, и выйти из всех файловых окон, используйте команду :xa .


Шпаргалка по работе с Tmux

 

Шпаргалка по работе с Tmux



Например, на работе правим файлы в Vim. Окно терминала с открытыми файлами, процессами. Отключаемся от сессии. Далее подключаемся к этой сессии из дома и получаем те же окна с открытыми файлами в Vim, процессами и т.д. Можно продолжить работу с того же момента, на котором остановились. Также удобно при разрыве связи. Дополнительно можно работать совместно с другими в терминале, если подключены к одной сессии. Каждый видит, что делает другой.

1. Установка


CentOS (нужен подключенный репо EPEL)
# yum install tmux 

Fedora
# dnf install tmux

Ubuntu/Debian
# apt-get install tmux

2. Конфигурационные файлы


(пользователя, системный):

~/.tmux.conf
/etc/tmux.conf

С версии 2.1 для включения режима мыши (скролл, изменение размера панели, выбор панели и др.) нужно добавить в tmux.conf:

set -g mouse on

До версии 2.1

set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
set -g mode-mouse on

3. Работа с Tmux


Старт
# tmux //без параметров будет создана сессия 0
# tmux new -s session1 //новая сессия session1. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.

Префикс (с него начинаются команды)
<C-b> (CTRL + b)

Новое окно (нажать CTRL+b, затем нажать с)
<C-b c>

Список окон
<C-b w> // переключиться курсором вверх-вниз

Переключение
<C-b n> // следующее окно
<C-b p> // предыдущее окно
<C-b 0> // переключиться на номер окна

Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.

Деление окна горизонтально
<C-b ">
либо команда
# tmux split-window -h

Деление окна вертикально
<C-b %>
либо команда
# tmux split-window -v

Переход между панелей
<C-b стрелки курсора> // либо режим мыши

Изменение размеров панелей
<C-b c-стрелки> // либо режим мыши

Закрытие окон
<C-b x> // нужно подтвердить y
либо
# exit

Копировать в буфер обмена
<C-b Enter> или <Ctrl+b [> - Войти в режим копирования
Стрелками подвести курсор к нужному фрагменту текста
<пробел> - начало выделения
Стрелками выделить нужный фрагмент текста
<Enter> - Скопировать во внутренний буфер обмена tmux

<Ctrl-b ]> - вставить из внутреннего буфера обмена tmux

Отключение от сессии
<C-b d>
либо
# tmux detach

Список сессий
# tmux ls

Подключиться к работающей сессии
# tmux attach //подключение к сессии, либо к единственной, либо последней созданной
# tmux attach -t session1 // подключение к сессии session1

Выбрать сессию
<C-b s>

Завершение сессии
# tmux kill-session -t session1

Завершить все сессии
# tmux kill-server

Список поддерживаемых комманд
# tmux list-commands

понедельник, 30 ноября 2015 г.

Часто используемые команды и конструкции при разработке на Bitrix

Вывод массива php

Часто есть необходимость посмотреть что содержит переменная или массив. Ниже несколько вариантов как это можно сделать, в том числе незаметно для посетителей сайта.

<div style="display: none;"><? echo json_encode($arResult['ITEMS']);?></div>
<textarea style="display: none;"><? echo var_export($arResult['ITEMS']);?></textarea&gt
<?global $USER; if($USER->isAdmin()){echo ‘<pre>’;print_r($array);echo ‘</pre>}?>
<? echo "<pre>"; print_r ($arResult); echo "</pre>"; ?>
<?echo "<pre style='display: inline;'>"; print_r(get_defined_vars());echo "</pre>";?> //вывод массива всех определенных серверных и пользовательских переменных

Запись массива в файл или лог Apache

Если нет возможности вывести массив на страницу, то можно записать его в файл

$current = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/log.txt');

$current .= "John Smith\n";

$current .= var_export($_SESSION, true);

file_put_contents($file, $current);


или лог Apache


error_log ("blyat` ".var_export($arStatus, true), 0);
error_log ("blyat` ".var_export($arStatus, true), 1, "wer@mail.ru")

Вывод лога в реальном времени.

tail -f /var/log/syslog

Работа с базой

Посмотреть какие запросы идут в базу можно так:
В терминале
mysql -uroot -p
пароль
затем
SHOW PROCESSLIST;

Прямое обращение к базе работает на много быстрее чем через API битрикса.

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/dbconn.php");
$db=new PDO($DBType.':host='.$DBHost.';dbname='.$DBName, $DBLogin, $DBPassword);
$db->query("SET CHARACTER SET utf8");
$res=$db->prepare(" SELECT VALUE FROM `b_iblock_element_property`  WHERE (`IBLOCK_PROPERTY_ID`='3847' and `IBLOCK_ELEMENT_ID` LIKE '%".$item['id']."%')");
 $res->execute();// выборка из базы возвращает код товара поставщика по внутреннему коду товара
 if($row=$res->fetch()){
  if ($row<1){error_log ("пусто", 0);}
  else  echo $row[0];
 }

Интерактивная консоль php

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

SSH

Монтируем файловую систему удаленного сервера к своей
sshfs user@domen.ru:/ /media/sshfsdomen.ru -o reconnect

Если злобный админ закрыл куда-нибудь доступ
sudo ssh -D 777 user@domen.ru
получаем socks сервер на localhost:777

Просмотр лога в реальном времени.
ssh myyser@site.ru tail -f /var/log/nginx/error.log

Посмотреть кто зашел
who

Проверка свободного места на диске

Куда делось место на диске покажет команда
df -h
du -| grep "[0-9]M" | sort --r

Работа с архивами

Распаковать бэкап битрикса можно командой<
sudo cat *.* | tar xzv

Поиск куска кода

sudo find -type f -name '*.php' | xargs grep -l "echo '$aritem" --color

Задать права на файлы рекурсивно

sudo chmod -R 777 /bitrix/templates/newtempl

Дамп TCP

tcpdump -vX -i eth0 port 80

Смотрим подключения

netstat -tap | grep nginx


fail2ban iptables

Забаннить
iptables -I INPUT -j DROP -s 58.40.10.2
iptables -I INPUT -m iprange --src-range 5.143.231.0-5.143.231.255 -j DROP


Алиасы .bashrc или в .bash_aliases для быстрого банна
alias ban=’iptables -I INPUT -j DROP -s’
alias unban=’iptables -D INPUT -j DROP -s’


Список забанненых
iptables-saveили
iptables -L -n -v --line-numbers


Удалить ip из банна
iptables -D fail2ban-ssh -j DROP -s 46.20.67.32/32
iptables -D fail2ban-ssh 1

Остановить, запустить файрвол.
service ufw stop
service ufw start


Сохраняем правила файрвола.
iptables-save > /etc/iptables.rules


Восстанавливаем правила.
iptables-restore < /etc/iptables.rules

Часто используемые команды и конструкции при разработке на Bitrix

Вывод массива php

Часто есть необходимость посмотреть что содержит переменная или массив. Ниже несколько вариантов как это можно сделать, в том числе незаметно для посетителей сайта.

<div style="display: none;"><? echo json_encode($arResult['ITEMS']);?></div>
<textarea style="display: none;"><? echo var_export($arResult['ITEMS']);?></textarea&gt
<?global $USER; if($USER->isAdmin()){echo ‘<pre>’;print_r($array);echo ‘</pre>}?>
<? echo "<pre>"; print_r ($arResult); echo "</pre>"; ?>
<?echo "<pre style='display: inline;'>"; print_r(get_defined_vars());echo "</pre>";?> //вывод массива всех определенных серверных и пользовательских переменных

Запись массива в файл или лог Apache

Если нет возможности вывести массив на страницу, то можно записать его в файл

$current = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/log.txt');

$current .= "John Smith\n";

$current .= var_export($_SESSION, true);

file_put_contents($file, $current);


или лог Apache


error_log ("blyat` ".var_export($arStatus, true), 0);
error_log ("blyat` ".var_export($arStatus, true), 1, "wer@mail.ru")

Вывод лога в реальном времени.
tail -f /var/log/syslog

Работа с базой

Посмотреть какие запросы идут в базу можно так:
В терминале
mysql -uroot -p
пароль
затем
SHOW PROCESSLIST;

Прямое обращение к базе работает на много быстрее чем через API битрикса.

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/dbconn.php");
$db=new PDO($DBType.':host='.$DBHost.';dbname='.$DBName, $DBLogin, $DBPassword);
$db->query("SET CHARACTER SET utf8");
$res=$db->prepare(" SELECT VALUE FROM `b_iblock_element_property`  WHERE (`IBLOCK_PROPERTY_ID`='3847' and `IBLOCK_ELEMENT_ID` LIKE '%".$item['id']."%')");
 $res->execute();// выборка из базы возвращает код товара поставщика по внутреннему коду товара
 if($row=$res->fetch()){
  if ($row<1){error_log ("пусто", 0);}
  else  echo $row[0];
 }

Интерактивная консоль php

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

SSH

Монтируем файловую систему удаленного сервера к своей
sshfs user@domen.ru:/ /media/sshfsdomen.ru -o reconnect

Если злобный админ закрыл куда-нибудь доступ
sudo ssh -D 777 user@domen.ru
получаем socks сервер на localhost:777

Просмотр лога в реальном времени.
ssh myyser@site.ru tail -f /var/log/nginx/error.log

Посмотреть кто зашел
who

Проверка свободного места на диске

Куда делось место на диске покажет команда
df -h
du -| grep "[0-9]M" | sort --r

Работа с архивами

Распаковать бэкап битрикса можно командой<
sudo cat *.* | tar xzv

Поиск куска кода

sudo find -type f -name '*.php' | xargs grep -l "echo '$aritem" --color

Задать права на файлы рекурсивно

sudo chmod -R 777 /bitrix/templates/newtempl

Дамп TCP

tcpdump -vX -i eth0 port 80

Смотрим подключения

netstat -tap | grep nginx


fail2ban iptables

Забаннить
iptables -I INPUT -j DROP -s 58.40.10.2
iptables -I INPUT -m iprange --src-range 5.143.231.0-5.143.231.255 -j DROP


Алиасы .bashrc или в .bash_aliases для быстрого банна
alias ban=’iptables -I INPUT -j DROP -s’
alias unban=’iptables -D INPUT -j DROP -s’


Список забанненых
iptables-saveили
iptables -L -n -v --line-numbers


Удалить ip из банна
iptables -D fail2ban-ssh -j DROP -s 46.20.67.32/32
iptables -D fail2ban-ssh 1

Остановить, запустить файрвол.
service ufw stop
service ufw start


Сохраняем правила файрвола.
iptables-save > /etc/iptables.rules


Восстанавливаем правила.
iptables-restore < /etc/iptables.rules

Split / разбить dump

//Разбить дамп по 50000 строк for i in `ls *.sql`; do split -d -l 50000 -a 4 --additional-suffix=.sql $i "$(basename "$i" .sq...