Вы уверены, что помещаете необработанные управляющие последовательности в текстовый файл? Я попробовал это сcurl
-7.52.1, используя как netcat, так и apache, и в обоих случаях curl правильно выводил escape-последовательность, чтобы слово на моем терминале окрашивалось в красный цвет.
Попробуйте это,
echo $'\e[0;31mTEST\e[0m' | nc -l -p 8080 -q0
curl localhost:8080
Вы можете сделать это с помощью GNUparallel
:
$ printf '%s\n' x* | parallel echo "{1}:{2}" :::: subdomains.txt :::: -
admin.site.com:xab
admin.site.com:xac
admin.site.com:xad
web.site.com:xab
web.site.com:xac
web.site.com:xad
api.site.com:xab
api.site.com:xac
api.site.com:xad
Необходим уродливый метод :eval
, поскольку раскрытие фигурных скобок обычно происходит перед раскрытием переменных, поэтому нам требуется 2 раунда оценки.
sub=$( paste -sd, subdomains.txt )
xs=$( ls -d x* | paste -sd, )
eval "printf '%s\n' {$sub}:{$xs}"
лучше :хранить результаты каждого отдельного шага в массивах, а затем использовать вложенные циклы для их объединения.
mapfile -t sub < subdomains.txt
xs=( x* )
for s in "${sub[@]}"; do
for x in "${xs[@]}"; do
echo "$s:$x"
done
done
Вам нужно только printf '%s\n' x*
, если у вас более 32000 файлов.
В противном случае это будет работать:
parallel mytool.sh --parm1 {1} --parm2 {2} :::: subdomains.txt ::: x*
Прочтите главы 1+2 из http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html(, которые можно загрузить сhttps://doi.org/10.5281/zenodo.1146014). Ваша командная строка будет любить вас за это.
(Если файлы x*
взяты из split
, вам также следует прочитать главу 9
parallel -a bigfile --block 10M --pipepart --argsep,, -I,, parallel --pipe --tee wc {} ::: -l -c -w
).
$ printf '%s\n' x* | join -t : -1 2 -2 2 -o 1.1,2.1 subdomains.txt -
admin.site.com:xaa
admin.site.com:xab
admin.site.com:xac
web.site.com:xaa
web.site.com:xab
web.site.com:xac
api.site.com:xaa
api.site.com:xab
api.site.com:xac
Это использует join
для создания своего рода перекрестного произведения между доменами, перечисленными в файле subdomains.txt
, и именами файлов, начинающимися с символа x
в текущем каталоге.
Перекрестное произведение создается путем запроса join
на объединение двух наборов данных в несуществующем -поле (столбце 2, указанном с помощью -1 2
и-2 2
). Мы также указываем разделитель полей ввода и вывода как :
с -t :
, и мы явно просим получить первый столбец из каждого файла, используя -o 1.1,2.1
(, иначе у нас был бы пустой первый столбец в результате ).