我有大约 10 条终端命令,用于与 Git 存储库和实时服务器同步。我怎样才能将它们归结为单个命令?这是脚本的用例吗?
步骤包括:
- 导航到本地目录。
- 将更改添加/提交/推送到 Git。
- 通过 SSH 进入实时服务器。
- 从 Git 同步更改。
答案1
是的,您可以使用脚本或 shell 函数。它们的编写方式基本相同 - 首先列出所有命令,就像手动运行一样,然后逐渐添加诸如检查错误之类的内容。
Shell 函数在 Shell 本身中配置,~/.bashrc
位于狂欢(与 zsh 等类似),并且只能在交互式 shell 中使用。语法为name() { commands...; }
:
allthethings() {
cd ~/things
thing2 --whatever
git thingify origin/master
}
注意:无论何时编辑~/.bashrc
,只有在打开新终端时或使用“点”命令手动重新读取时才会重新读取:. ~/.bashrc
。
也可以在交互式 shell 中直接创建函数;只是它们不会被记住。
脚本是独立文件,通常在~/bin
或中/usr/local/bin
,以#!
解释器行开头,然后是脚本本身 - 在 shell 脚本中,它几乎与编写函数完全相同;主要区别在于是否使用exit
vs return
,以及变量 & 是否cd
影响交互式 shell。
#!/usr/bin/env bash
cd ~/things
thing2 --whatever
git thingify origin/master
请注意,您需要先获取chmod +x
脚本文件,然后才能直接运行它们,而不必每次都指定“bash”。 (如果您使用#!/usr/bin/env python
,其余部分将由 Python 或 Ruby 或您选择的任何其他语言解释。)
脚本目录也必须列在$PATH
变量中。自定义位置通常~/bin
必须手动添加,方法是编辑~/.profile
:
export PATH="$PATH:$HOME/bin"