在Linux中别名多个命令

在Linux中别名多个命令,linux,git,bash,alias,website-deployment,Linux,Git,Bash,Alias,Website Deployment,我正在使用git管理一个网站。git存储库的一个要求是bare=true。它使用post接收钩子来管理来自本地计算机的推送。问题是,有时我想使用wp admin视图在线更改我网站上的WordPress目录。因此,我只需ssh进入目录并运行git--work tree=“BLAH”add.和git--work tree=“BLAH”commit-m“BLAH”。是否有一种方法可以设置别名,如alias git=“git--work tree=\“BLAH\”并使其适用于所有git命令?Linux中

我正在使用
git
管理一个网站。
git存储库的一个要求是
bare=true
。它使用post接收钩子来管理来自本地计算机的推送。问题是,有时我想使用wp admin视图在线更改我网站上的WordPress目录。因此,我只需
ssh
进入目录并运行
git--work tree=“BLAH”add.
git--work tree=“BLAH”commit-m“BLAH”
。是否有一种方法可以设置别名,如
alias git=“git--work tree=\“BLAH\”
并使其适用于所有
git
命令?

Linux
中有一个
.bashrc
文件。您可以对其进行编辑,以便为您喜爱的和常用的命令创建
别名

要永久创建别名,请将别名添加到.bashrc文件中

gedit ~/.bashrc
别名应类似于:

alias al='cmd'

您可以在上面阅读更多信息。

有时,
alias
是一个很好的工具。然后有时候事情变得太复杂,shell脚本更好

要创建执行其他命令的单个命令,只需创建一个文件(可能称之为
git add all
),然后键入以下命令:

#! /bin/bash

git --work-tree="BLAH" add .
git --work-tree="BLAH" commit -m "BLAH"
然后,只需执行以下操作即可运行脚本:

bash git-add-all
更好的是,使脚本可执行:

chmod +x git-add-all
然后,您可以像使用任何命令一样使用它:

./git-add-all

高级提示: 为了能够从任何git目录运行脚本,您可以将文件复制/移动到
$PATH
中的一个目录。例如
/usr/loca/bin
。然后您可以简单地运行
git add all
,而不是
/git add all

更好的方法是创建自己的个人脚本目录,并将其包含在
$PATH
中。我个人使用
~/bin
。要将目录添加到
$PATH
中,只需将以下内容添加到
.bashrc
.profile

export PATH=/home/username/bin:$PATH
或者,如果您是为root用户执行此操作:

export PATH=/root/bin:$PATH

如果有人好奇我是如何解决的(多亏了),我编写了一个bash脚本,然后提示用户输入如下内容:

#!/bin/bash
function fix {
        git --work-tree="PATH_TO_WORKING_TREE" $1
}
echo -n "git "
read -e INPUT
until [ "$INPUT" = "quit" ]; do
        fix $INPUT
        echo -n "git "
        read -e INPUT
done
运行它:

user@server [repo.git] $ git-fix
git status
# On branch master
nothing to commit (working directory clean)
git quit

我知道,bashrc已经试过了。当我运行
git
时,它会将其展开,但如果命令有两个部分(如
git status
),它将不会展开它。请尝试将别名命名为
git
以外的名称。例如,ll是ls-alF的别名。如果键入
ll-h
ll-a
,它仍然有效。别名仅适用于静态值和操作,即
alias workDir='cd$workDir'
。当您想要处理参数时,您需要使用函数。在这里搜索
[bash]函数
,您将找到100个示例。祝你好运。老实说,不搞砸部署的最好方法是自动化,以Capistrano为例。