Linux 상에서 bash 쉘 실행하기
public static class ShellHelper
{
public static ShellOutput Bash(this string cmd, string sWorkingDir)
{
var sEscapedArgs = cmd.Replace("\"", "\\\"");
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "/bin/bash",
Arguments = $"-c \"{sEscapedArgs}\"",
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true,
WorkingDirectory = sWorkingDir
}
};
ShellOutput rv = null;
try
{
process.Start();
process.WaitForExit();
rv = new ShellOutput(process);
}
catch (Exception ex)
{
rv = new ShellOutput(null, ex);
LogEx.Logger.LogError(ex, nameof(ShellHelper));
}
return rv;
}
}
public class ShellOutput
{
public ShellOutput(Process process, Exception ex = null)
{
this.Process = process;
m_sStdErr = ex?.Message;
}
#region Fields
string m_sStdOut;
string m_sStdErr;
#endregion Fields
public Process Process { get; }
public bool IsSuccessful => this.Process?.ExitCode == 0;
public string StdOutText => m_sStdOut ??= this.Process?.StandardOutput.ReadToEnd();
public string StdErrText => m_sStdErr ??= this.Process?.StandardError.ReadToEnd();
}
qiime 2가 설치된 Python 가상환경에서 실행시키기 위한 스크립트 작성
#!/bin/bash
_CONDA_ROOT="/home/user/miniconda3"
export PATH=$_CONDA_ROOT/bin:$_CONDA_ROOT/condabin
source $_CONDA_ROOT/etc/profile.d/conda.sh
#echo conda activate qiime2-2023.5
conda activate qiime2-2023.5
if [ $# == 0 ]
then
qiime info
then
qiime $*
fi
#echo conda deactivate
conda deactivate
qiime 실행하고 결과 받기
string sResult = "Running...";
var rv = ShellHelper.Bash("~/qiime2/q2run.sh info", null);
//var rv = ShellHelper.Bash("~/qiime2/q2run.sh tools list-types", null);
//var rv = ShellHelper.Bash("~/qiime2/q2run.sh tools list-formats", null);
if (rv.IsSuccessful)
{
sResult = rv.StdOutText;
}
else
{
sResult = rv.StdErrText;
}
qiime 2가 설치된 Python 가상환경에서 여러 명령을 수행하는 스크립트
q2env.sh
#!/bin/bash
_CONDA_ROOT="/home/user/miniconda3"
export PATH=$_CONDA_ROOT/bin:$_CONDA_ROOT/condabin:$PATH
source $_CONDA_ROOT/etc/profile.d/conda.sh
#echo conda activate qiime2-2023.5
conda activate qiime2-2023.5
if [ $# == 0 ]
then
qiime info
else
tid=1
for i
do
echo "### q2-task-$tid"
echo "$i"
echo ">>>"
$i
echo "<<<"
tid=`expr $tid + 1`
done
fi
#echo conda deactivate
conda deactivate
Example:
$ ./q2env.sh "qiime info" "qiime tools list-types"
### q2-task-1
qiime info
>>>
System versions
:
<<<
### q2-task-2
qiime tools list-types
>>>
Bowtie2Index
No description
:
<<<
$
'BIO' 카테고리의 다른 글
ASP.NET Core Dockerfile에 QIIME 2 환경 추가하기 (0) | 2023.08.11 |
---|---|
FASTQ format in QIIME 2 (0) | 2023.08.01 |
Installing the QIIME 2 Core 2023.5 distribution using WSL (0) | 2023.07.31 |
QIIME 2 Core concepts (0) | 2023.07.31 |
FASTAQ (0) | 2023.07.31 |