Если вы хотите путь текущего исполняемого исполняемого, посмотрите / proc / $ pid / exe
,
ls -l /proc/$PID | grep exe
Существует несколько программ для создания соединений сокетов из командной строки (или через скрипт оболочки). Наиболее распространенным, вероятно, NetCat, из которых существует как минимум три реализации:
Оригинал один © 1995-1996 Avian Research (NetCat Hobbit). Никакая хорошая допустимая связь, о которой я знаю, так вот здесь находится в пакете Debian Tacker: https://tracker.debian.org/pkg/netcat
netcat6, переписывание. Сейчас объявлено устаревшим; http://www.deepspace6.net/projects/netcat6.html
netcat-openbsd, переписывание проектом OpenBSD. , вероятно, тот, который вы хотите. код можно увидеть в http://bxr.su/openbsd/usr.bin/nc/
SOCAT, а не переписать, а ту же идею, со многими дополнительными функциями. Другой хороший выбор Если вам нужны все функции и не против дополнительной сложности. http://www.dest-unreach.org/socat/
Ручная страница дает много примеров, например, вот как (на основе гораздо более страшных пример на странице человека) вы можете запустить BC
через розетку:
mkfifo /tmp/f && cat /tmp/f | bc -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
Затем вы можете подключиться к этой сети BC
, используя:
nc localhost 1234
или с SOCAT
, это:
socat EXEC:'bc -i' TCP4-LISTEN:1234,bind=127.0.0.1 # server
socat - TCP4:127.0.0.1:1234 # client
-121--174906- Мои файлы были закодированы в ISO-8859-1, так что все, что пыталось прочитать вход в мой локаль по умолчанию (UTF-8), не распознает бы японские символы. В конце концов мне удалось решить мою проблему с помощью следующей команды:
env LC_CTYPE=iso-8859-1 grep -nP '[\x80-\xff]' ./*
- Perllike Syntax для диапазонов символов.
-N для печати номеров линии рядом с именами линейки
\ x80
- \ XFF
- символы «не ASCII»
изменяют переменную среды LC_CTYPE к ISO-8859- 1 Делает GREP прочитать мои полей Byte-Byte-Byte и позволяет обнаруживать любой «расширенный ASCII» байты как возможные японские символы. Если я использую системную кодировку системы по умолчанию GREP UTF-8, выходит с ошибкой «Неверная последовательность байтов UTF-8 в входе».
-121--105346-Используйте GREP для гораздо более простых растворов.
grep -E '^(.*,){3}' my_csv_file.csv
Так как 4 параметра или больше будут иметь как минимум 3 запятых, следовательно, 3 в Regex.
(. *,) будет соответствовать параметру, за которым следует запятая. . * означает совпадение любого CHAR (.) 0 или более раз.
Вот еще один подход, чтобы иметь значения в переменной:
my_var=$(grep -E '^(.*,){3}' my_csv_file.csv)
echo "$my_var"
Убедитесь, что у вас есть «« около $ my_var, иначе вы потеряете новые слова.
Это, конечно, не задача, которая должна быть решена с SED
, GREP
, или аналогично, но довольно естественно с awk
. Для фильтрации линий в файле с полем не менее 4 (разделенные запятыми):
awk -F, 'NF>=4' my_csv_file.csv
для фильтрации линий с, например, как минимум 4 и не более 6 (разделенные запятыми) полями:
awk -F, 'NF>=4 && NF<=6' my_csv_file.csv