Учтите это, если вы всегда доверяете передаваемым ему аргументам:
$ cat script
awk 'BEGIN{ print '"$*"' }'
$./script 30 + 40
70
$./script 30 \* 40
1200
$./script 30 / 40
0.75
Обратите внимание на необходимость экранирования *
, так как это подстановочный символ, в противном случае укажите аргументы в кавычках, например.:
$./script '30 * 40'
1200
Кроме того, при таком подходе вы не ограничены простыми арифметическими выражениями:
$./script 'log(10)'
2.30259
$./script 'exp(10)'
22026.5
$./script '10^2 - sqrt(9)'
97
I have a file on a remote server
Итак, у удаленного сервера есть имя, скажем remote.server.com
, и у вас есть учетная запись на удаленном сервере, скажем, god
. Вы знаете, где находится файл на удаленном сервере, например, в домашнем каталоге god
в каталоге files
с именем myfile
.
Затем вы, со своего Mac,
scp god@remote.server.com:files/myfile localfile
и он скопирует удаленный файл как localfile
на ваш Mac.
ifconfig
ничего не скажет вам об удаленном сервере.
Если вы не знаете имя своей учетной записи god
на удаленном сервере, значит, у вас нет учетной записи на удаленном сервере. Итак, первое, что вам нужно сделать, это получить учетную запись. Как это сделать, зависит от вас, у вас есть файл на remote.server.com
, в первую очередь, о котором вы ничего нам не сказали. Обычно это включает в себя опрос того, кто управляет удаленным сервером.
I'm (good faith) accessing a terminal through a passthru exploit, where I can see different directories and files through an input field meant to do something else on the site.
Итак, это веб-сервер, и у вас нет учетной записи на сервере, что означает, что вы не можете использовать scp
. Конец истории.
Если вы делаете это добросовестно, это означает, что вы должны знать, кто управляет сервером, чтобы вы могли связаться с ними, чтобы получить учетную запись.
Итак, вы хотите скопировать что-то с удаленного компьютера на локальный Mac? Вы можете сделать это вот так:
# from your local mac machine
$ scp <username>@<remote-hostname>:/path/to/thing/to/copy.
# or if its a directory
$ scp -r...
Это скопирует файл в ваш текущий рабочий каталог (, следовательно,.
)
Чтобы получить имя пользователя и имя хоста удаленной машины, просто войдите в систему и запустите whoami
и hostname
(, предполагая, что удаленная машина работает под управлением Linux)
# e.g.
$ ssh remote-hostname
$ hostname
# prints machine hostname
$ whoami
# prints your username
Между прочим, если вы уже знаете, как ssh
подключиться к этой удаленной машине, то вы уже знаете, для чего предназначено имя хостаscp
:)
Дополнительная информация:
scp
хорош для начала, но rsync
может быть лучшим выбором в зависимости от того, какие типы копирования/синхронизации вы выполняете. Например. ты можешь попробовать:
# from local mac
$ rsync -auvz <username>@<remote-hostname>:/path/to/folder/.
rsync
при таком использовании будет сжимать файлы до/после отправки и будет учитывать различия между вашей локальной и удаленной структурой папок, обновляя только то, что должно быть (таким идемпотентным по сравнению с scp
, которое не является)