Чтобы получить точный результат обновленного вопроса:
ls -1 | awk -vhostname="$(hostname)" \
'NR == 1 { printf("%-20s\t%s\n", hostname, $0) }
NR > 1 { printf("%-20s\t%s\n", "", $0) }'
Это выделяет столбец шириной 20 символов для имени хоста и добавляет вывод ls -1
во второй столбец. Столбцы разделены табуляцией -, а имя хоста встречается только в первой строке.
Похоже, вы спрашиваете о том, как получить имя хоста текущей системы и как использовать его в имени файла или внутри файла, чтобы определить, из какой системы были получены данные.
Имя хоста машины задается командой hostname
. Обычно это дает полное имя хоста,включая доменное имя (, если оно определено ), а hostname -s
дает имя до первой точки:
$ hostname
client.local
$ hostname -s
client
Если у вас есть какая-то команда, и вы хотите создать имя файла для хранения ее вывода, вы можете сделать это:
somecommand >"$(hostname)_output.txt"
Это запустит somecommand
(, например, вашу ls
команду )и сохранит ее вывод в файле с именем, которое содержит имя хоста системы, на которой она выполнялась.
Если вы хотите вставить имя хоста в верхний или нижний колонтитул файла:
( echo "HEADER: The following comes from $(hostname)"
somecommand
echo "FOOTER: The above came from $(hostname)" ) >outputfile
или с помощьюawk
:
somecommand | awk -v hostname="$(hostname)" 'BEGIN { print "## From:", hostname }
{ print } END { print "## From:", hostname }'
, где somecommand
— это команда, вывод которой вы хотите сохранить.
Если вы хотите пометить каждую строку именем хоста:
somecommand | awk -v hostname="$(hostname)" '{ print hostname, $0 }'
или их варианты.
Опция -v
для awk
позволяет установить переменную awk
в командной строке.
Возможно, у вас также определена HOSTNAME
переменная окружения. В этом случае вы можете использовать это без использования команды hostname
:
awk -v hostname="$HOSTNAME"...
или вы можете получить доступ к переменной среды непосредственно внутри кода awk
с помощью ENVIRON["HOSTNAME"]
.
Наконец-то я понял, спасибо @Kusalananda
ssh ubuntu@$ip -n "aws s3 cp s3://bucket/$userlistlocation. --region eu-central-1; fbname=$(basename $userlistlocation) ; echo \"\$fbname\""