Основная проблема, которая создает ошибки, заключается в том, что вы используете строку чтения в $line
в качестве имени файла для cut
для чтения.
Вы также используете echo
для вывода результата подстановки команд. Это анти-паттерн -. Просто запустите конвейер, без echo
и подстановки команд. Он сам выведет свой результат на терминал.
Здесь мы используем printf
, чтобы дать cut
строку, прочитанную из файла:
file="filename"
while IFS= read -r line; do
printf '%s\n' "$line" | cut -d '[' -f2 | cut -d ' ' -f1
done <"$file"
Следующее, что следует отметить, это то, что цикл while
совершенно не нужен. Вы вызываете cut
дважды для каждой строки в файле журнала. Утилита cut
сама по себе способна читать файл построчно:
file="filename"
cut -d '[' -f2 "$file" | cut -d ' ' -f1
Или вы можете использовать GNUgrep
:
grep -oP '(?<=\[)[^ ]+' "$file"
(Это извлекает все до первого пробела после первого[
)
или стандартные sed
,
sed 's/\].*//; s/.*\[//; s/.*//' "$file"
(Это удаляет все после первого ]
, затем удаляет все до первого [
,затем отбивные из космоса и остальное часто)
Связанные:
Вы не используете startx
для соединения ssh, вы используете переадресацию X. После подключения с помощью ssh -Y
или ssh -X
вы можете запустить X-приложение, которое будет рисовать окна на вашем локальном компьютере, используя ваш локальный X-сервер. Попробуйте выполнить xclock &
или firefox &
или любое другое приложение с графическим интерфейсом, которое вам нужно выполнить на удаленной машине, но отобразите его окна локально.
Проверить наличие этой строки в/etc/ssh/sshd_config
:X11Forwarding yes
В современных системах с включенной переадресацией X вам не нужно устанавливать переменную DISPLAY
; если у вас возникнут проблемы,export DISPLAY=[your local display, for example :0]
На самом деле вы даже можете запускать X-приложения локально, вообще не запуская X на удаленной машине, поскольку используется ваш локальный X-сервер.
Xpra
тоже интересно, особенно на медленных соединениях. Это более сложный способ пересылки X-приложений.
Если вам нужен полный доступ к удаленному рабочему столу, вы должны использовать что-то вроде VNC
, X2Go
, xrdp
и т. д.