序言:从未创建过shell bash脚本。所以,首先,我什至不确定这是否是正确的工作工具。如果不是这样,请,首先,让我知道您认为什么是最好的选择。
上下文:每次尝试建立网站时,我通常都会执行重复的任务。我希望通过运行一个或两个命令来自动执行这些任务。更新:共享主机是基于Unix的。本地计算机是Mac OS X,也基于Unix。
例如,以下是我经常执行的一些任务(命令):
SCP:
scp ~/local/path/general_web_app/.bash_profile [email protected]:/home/HOSTNAME/.bash_profile
scp ~/local/path/general_web_app/.gitconfig [email protected]:/home/HOSTNAME/.gitconfig
直接使用SSH:
ssh [email protected]
cd /www/www/
git init
git add .
git commit -a -m "first commit"
cd ~/private/ && mkdir repos
编辑,查找,替换保存并退出:
pico ~/remote/private/repos/general_hub.git/hooks/post-update
replace "user" WITH "hostname";
hit "cmd x"
hit "y"
AFAIK:这些是我希望脚本执行的不同类型的任务。
问题1: bash脚本可以直接处理SCP,SSH并编辑查找替换保存和退出吗?
问题2:应该向运行脚本的用户询问一些参数,并且应该将这些参数用于放置在某些文件中(替换存在的特定关键字)-这可以实现吗?
问题3:我们应该将文件复制到远程服务器上并直接在远程计算机上进行编辑,还是应该在本地抓取文件,“在临时位置上本地对其进行编辑”,然后将其放置在服务器上?我想第二个要复杂得多。
我可能会看一些例子吗?
在此先多谢
简短的答案是:所有人都同意。
我会给你一些例子。以下是在远程计算机上执行本地bash脚本的命令示例:请注意,不必远程复制它:
ssh user@remote_pc 'bash -s' < local_file.sh
这是如此简单,可能不值得编写一个完整的脚本来处理它,但是如果您愿意,也可以通过脚本来安排它。但是,要使此方法起作用,您将必须设置passwordless login
ssh连接。否则,脚本中的ssh / scp命令将停止,因为它们等待您输入远程用户的密码。
至于编辑等,Unix具有终极的流编辑器sed
,它可以做到这一点:例如,命令
sed 's/a/A/g' old_file.txt > new_file.txt
将小写字母替换a
为大写字母A
,然后将输出放置到新文件中。这也可以很容易地编写脚本。
至于参数,shell脚本可以从文件中读取参数,也可以查询环境中的某些参数。无需询问用户其登录名,
echo $USER
whoami
即使在脚本中也可以做到。家庭地址echo $HOME
等也是一样。
关于第三个问题,我希望我的第一个答案也能回答该问题:第一个命令允许您将脚本文件(在本地编辑)执行到远程服务器上,而不必在此复制。
欢迎来到* Nix的世界,您的愿望就是我的命令。
抱歉,我忘记了:此命令
export -p | more
将显示所有局部变量(从技术上讲,已导出),这些局部变量在任何地方都可用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句