Если вы подключаетесь к SSH и запускаете приложение X11, и это приложение отображается X11 удаленном компьютере, а не через соединение SSH, есть три возможные причины.
ДИСПЛЕЕВ
. Внутри этого экрана/Tmux переменная среды ДИСПЛЕЕВ
остается прежней. Необходимо изменить его при повторном подключении к существующему сеансу: перед подключением к терминальному мультиплексору выполните команду echo $ DISPLAY
и установите переменную внутри мультиплексора. .profile
, .bashrc
и т.д.): вы изменили переменную среды ДИСПЛЕЕВ
. Кроме случая подключения к экранному мультиплексору, который был запущен с другого дисплея, не следует устанавливать DISPLAY
вручную. Если SSH куда-то и ДИСПЛЕИ
не установлен, это означает, что соединение SSH не пересылает X11 соединение, и настройка переменной среды вручную не может помочь. Поэтому, по всей вероятности, необходимо просмотреть файлы конфигурации и удалить строку, которая повреждает переменную среды ДИСПЛЕЕВ
.
-121--228907-
Самый простой способ - использовать dclient . Я использую это на своем сервере, в сочетании с свободным сервером доменных имен, как dynu.com.
В ссылке имеется дополнительная документация, но ddclient
опрашивает динамический IP-адрес клиента. При изменении он отправляет новый адрес dynu.com (например). У вас будет учетная запись в dynu.com, где вы указываете свое настраиваемое имя домена. Затем можно напрямую подключиться к http://yourname.dynu.com , который перенаправляется на IP-адрес клиента.
Преимущество использования цифрового IP-адреса состоит в том, что вам не нужно постоянно обновлять конфигурационный элемент ssh, и вы можете просто подключаться непосредственно к доменному имени. Это очень хорошо работает на моем сервере.
Кроме того, если вы не хотите использовать это и предпочитаете размещать цифровой IP где-то, вот старый сценарий, который я использовал. Для поиска локального IP-адреса используется внешняя веб-страница, что является единственным простым способом. Затем по электронной почте отправляется сообщение bar@email.com
, но его можно изменить в соответствии с потребностями пользователя. Вы можете запустить это в качестве cron-задания.
#!/usr/bin/env bash
CURRENTIP=$(curl -s http://myip.dnsomatic.com)
# Alternatively, use http://icanhazip.com
if echo $CURRENTIP | grep -qE '^([0-9]{1,3}\.){3}[0-9]{1,3}$' ; then
if ! cmp --quiet <(echo $CURRENTIP) /home/pi/.myipaddress ; then
echo "IP address changed to ${CURRENTIP}"
echo $CURRENTIP > /home/foo/.myipaddress
echo -e "Foo's IP address has changed to ${CURRENTIP} .\n" | mail -s 'Change of IP address' bar@email.com
fi
else
echo "ERROR: IP address enquiry returns ${CURRENTIP}"
fi
-121--108258-
При ответе на этот вопрос кто-то фактически подделал zsh-syntax-hightightiting
и создал гибкую функциональность для окрашивания в соответствии с узорами и множеством вещей на zsh.
Можно также проверить этот ответ . Не знаю, делает ли это твой дубликат, но хорошо. Несмотря на то, что он старый, вы можете попробовать суперкат , так как он работает с regexp, чтобы вы могли соответствовать URL и раскрашивать их.
Sería bastante fácil hacer esto con awk
, contando el número de campos en cada línea en fileA
que son iguales a las cadenas en el archivo include.txt
:
awk 'NR == FNR { p[$1]; next }
{
c = 0
for (i = 1; i <= NF; ++i) if ($i in p) c++
if ( c >= 2 ) print
}' include.txt fileA
Primero lee el archivo include.txt
y usa las palabras como claves en una matriz asociativa. Luego lee el segundo archivo y para cada fila, itera sobre los campos y prueba cada uno para ver si coincide con alguna de las claves.
Para cada coincidencia, incrementamos un contador, y si el contador es igual o mayor que dos al final, imprimimos la línea.
Formulación alternativa del código para personas a las que les gusta "una -líneas":
awk 'NR==FNR {p[$1];next} {c=0;for (i=1;i<=NF;++i) if ($i in p) c++} c>=2' include.txt fileA
Pude lograr esto con la siguiente grepcepción:
grep -Fwf <(grep -v $(grep -oFwf include.txt fileA | head -1) include.txt) fileA
Esto eliminará uno de los patrones coincidentes de include.txt
y garantizará que haya al menos otra coincidencia.
Otra incomodidad
awk '
NR==FNR {
a[NR]=$0
next }
!b { b=NR }
{
c=$0
for(i=1;i<b;i++)
if(!sub("\\<"a[i]"\\>","",c))
next
}1
' include.txt file\ A
Try to remove each word from include.txt in each line.
If a word is not remove not print the line.
grep -Fwonf include.txt file_A |
uniq |
cut -d: -f1 |
printf '%dp\n' $(uniq -d) |
ed -s file_A
El contenido de los archivos (archivo _Un más complicado para la prueba):
$ tail -n +1 -- file_A include.txt
==> file_A <==
data1 khc001 khc002 vp005
data1 fbc001 cs004 khc001
data1 khc001 khc001 vp005
data1 khc002 khc001 vp005
==> include.txt <==
khc001
khc002
Salida
data1 khc001 khc002 vp005
data1 khc002 khc001 vp005
Это должно работать, если предположить, что порядок шаблонов такой же, как во входном файле, но не в -порядке:
grep -F " $(tr '\n' ' ' <patterns)" infile