如何根据命令行中前一个命令生成的结果自动执行一个命令?

如何根据命令行中前一个命令生成的结果自动执行一个命令?

用例示例

我有一个用例,我使用它克隆 Android Studio 项目git clone <urL>,克隆后我从 repo 中获取包括.idea文件夹在内的所有文件夹。

.idea文件夹位于repositoryName/.ideagit 克隆后生成的

.idea文件夹对我的用例没有用,大多数时候我必须删除它才能将项目导入Android Studio,否则会显示错误。

预期结果

我期望有一个命令可以执行此操作:

克隆 GitHub 仓库并自动删除repositoryName/.idea文件夹。

解决方案可以基于 Windows 或 Linux。

答案1

使用 powershell,您可以克隆目录,然后按创建日期将 CD 放入最新目录(假设它是新的),然后删除 .idea 文件夹。假设您在 C:\projects 中,从那里启动并运行 git clone:

git clone url
$folder = gci | ? { $_.PSIsContainer } | sort CreationTime -desc | select -f 1
cd $folder
Remove-Item .idea

第二条命令自动将 $folder 的值分配给最近创建的文件夹的路径。(可能是新的项目文件夹,因为您刚刚使用 git clone 命令创建了它)

答案2

解决方案

脚本<url>以以下参数作为输入:

哪里<url>可以[email protected]:username/repositoryName.git

这对 bat 文件有效。

使用:文件.bat<url>

@echo off

SET url=%~1
git clone %url%
SET %url%repo=%url%
SET %url%%url%folder=%repo%
DEL /S %folder%\.idea

或者这个用于 bash。

使用:sh 文件.sh<url>

#!/bin/bash

url=$1
git clone $url

repo=${url##*/};
folder=${repo%.*}
rm -r $folder/.idea

答案3

在 bash 中这可能是

git clone <url> && rm -rf repositoryName/.idea

如果前一个命令成功,则运行&&以下命令。

有关“抨击此事”的更多阅读内容请参见此处:

https://unix.stackexchange.com/questions/208870/how-do-i-run-a-command-only-after-previous-command-is-unsuccessful-in-bash

相关内容