ssh user@machine
subprocess.run(args, *, stdin = None, input = None, stdout = None, stderr = None, capture_output = False, shell = False, cwd = None, timeout = None, check = False, encoding = None, errors = None, text = None, env = None, universal_newlines = None, ** other_popen_kwargs)
import subprocess
x = subprocess.run("pwd", shell=True)
/mnt/c/Users/ASUS/Desktop/PPT
print(x.stdout)
x = subprocess.run("pwd", shell=True, capture_output=True)
print(x.stdout)
print(x.returncode)
None b'/mnt/c/Users/ASUS/Desktop/PPT\n' 0
!pwd
/mnt/c/Users/ASUS/Desktop/PPT
%pwd
'/mnt/c/Users/ASUS/Desktop/PPT'
%%bash
pwd
echo $SHELL
/mnt/c/Users/ASUS/Desktop/PPT /bin/bash
pwd
:打印/当前工作目录。打印你当前所在的目录。ls
:列出当前目录的内容。cd dirname
:将工作目录更改为dirname。~
:你的家目录。..
:当前目录以上的目录。subprocess.run("pwd;", shell=True)
/mnt/c/Users/ASUS/Desktop/PPT
CompletedProcess(args='pwd;', returncode=0)
subprocess.run("cd lecture02_files; pwd;", shell=True)
/mnt/c/Users/ASUS/Desktop/PPT/lecture02_files
CompletedProcess(args='cd lecture02_files; pwd;', returncode=0)
subprocess.run("cd lecture02_files; ls;", shell=True)
figure-html libs
CompletedProcess(args='cd lecture02_files; ls;', returncode=0)
echo
¶echo string
:将字符串打印到shell。subprocess.run("echo 'hello world!'", shell=True)
hello world!
CompletedProcess(args="echo 'hello world!'", returncode=0)
>
重定向¶subprocess.run("echo 'hello world!' > myfile.txt", shell=True)
CompletedProcess(args="echo 'hello world!' > myfile.txt", returncode=0)
!cat myfile.txt
hello world!
cat
¶cat filename
:打印文件filename的内容。subprocess.run("cat myfile.txt", shell=True)
hello world!
CompletedProcess(args='cat myfile.txt', returncode=0)
mkdir
mkdir dirname
:如果不存在,则创建一个名为dirname的新目录mv
mv file1 file2
:“移动”file1到file2,覆盖file2。cp
cp file1 file2
:类似于mv,但创建一个名为file2的file1副本rm
rm filename
:删除文件filename。subprocess.run("mkdir mydir", shell=True)
CompletedProcess(args='mkdir mydir', returncode=0)
!ls -d mydir
mydir
subprocess.run("cp myfile.txt mydir", shell=True)
!ls -l mydir
total 0 -rwxrwxrwx 1 pingjianding pingjianding 13 Nov 4 10:13 myfile.txt
subprocess.run("mv mydir/myfile.txt image", shell=True)
CompletedProcess(args='mv mydir/myfile.txt image', returncode=0)
subprocess.run("cp myfile.txt mydir", shell=True)
!ls -l mydir
print("*********************************************")
subprocess.run("rm mydir/myfile.txt", shell=True)
!ls -l mydir
total 0 -rwxrwxrwx 1 pingjianding pingjianding 13 Nov 4 10:16 myfile.txt ********************************************* total 0
sh <example.sh
或 bash <example.sh
sh example.sh
或 bash example.sh
path/example.sh
(当前文件夹下使用./example.sh
,指定解释器的路径)*
(星号) 如file*
、 *.fa
#任意个任意字符?
(问号) 如file?.txt
#1个任意字符[字符集合]
如[13579]
[agh]
#集合中的任意一个字符[字符范围]
如[0-9]
[a-z]
#范围中的任意一个字符!
或^
如file[!3-9]
#除了某范围或集合中的任意一个字符subprocess.run("ls *.ipynb", shell=True)
lecture01.ipynb lecture02.ipynb lecture03.ipynb lecture04.ipynb lecture05.ipynb lecture06.ipynb lecture07.ipynb lecture08-2.ipynb lecture08.ipynb lecture09-2.ipynb lecture09.ipynb lecture10-Copy1.ipynb lecture10.ipynb lecture11.ipynb lecture12.ipynb test.ipynb
CompletedProcess(args='ls *.ipynb', returncode=0)
subprocess.run("ls lecture??.ipynb", shell=True)
lecture01.ipynb lecture02.ipynb lecture03.ipynb lecture04.ipynb lecture05.ipynb lecture06.ipynb lecture07.ipynb lecture08.ipynb lecture09.ipynb lecture10.ipynb lecture11.ipynb lecture12.ipynb
CompletedProcess(args='ls lecture??.ipynb', returncode=0)
subprocess.run("ls lecture[!0][0-9].ipynb", shell=True)
lecture10.ipynb lecture11.ipynb lecture12.ipynb
CompletedProcess(args='ls lecture[!0][0-9].ipynb', returncode=0)
grep
(Global Regular Expression Print),用于搜索文本文件中的特定模式或字符串。它可以根据正则表达式搜索文件中的内容,并打印出匹配的行。subprocess.run("cat nucleic_acid", shell=True)
DNA RNA mRNA tRNA rRNA snRNA snoRNA miRNA lncRNA
CompletedProcess(args='cat nucleic_acid', returncode=0)
subprocess.run("grep '[mt]RNA' nucleic_acid", shell=True)
mRNA tRNA
CompletedProcess(args="grep '[mt]RNA' nucleic_acid", returncode=0)
## 案例: 双引号内的$作为变量开始的标志
subprocess.run("""LONGNAME=peter;
echo "Hello $LONGNAME";""", shell=True)
Hello peter
CompletedProcess(args='LONGNAME=peter; \n echo "Hello $LONGNAME";', returncode=0)
subprocess.run("""LONGNAME=peter;
echo 'Hello $LONGNAME';""", shell=True)
Hello $LONGNAME
CompletedProcess(args="LONGNAME=peter; \n echo 'Hello $LONGNAME';", returncode=0)
subprocess.run("cat example.sh; ", shell=True)
print("*******************************************************")
subprocess.run("bash example.sh;", shell=True)
#!/bin/bash # 指定解释器的路径 echo "The current time is `date`;" ******************************************************* The current time is Sat Nov 2 23:58:40 CST 2024;
CompletedProcess(args='bash example.sh;', returncode=0)
cat fern | grep sinensis
#命令1的输出作为命令2的输入cd plant; touch rose.txt
#依次执行命令1和命令2touch
用于创建新的空文件或者修改现有文件的时间戳touch cow && rm cow
#如果命令1执行成功则执行命令2test -e animal || mkdir animal
#如果命令1执行不成功再执行命令2myfile=tmp/c.fa
#等号两边不能有空格mypath=/home/xiezy/$myfile
#字符串中可以包含变量name=“Zhang San”
#字符串中有空格要用引号current_dir=$(pwd)
!current_dir=`pwd`; echo $current_dir;
/mnt/c/Users/ASUS/Desktop/PPT
city[0]=Beijing
week=(Mon Tue Sun)
$var
name=peter
echo $name
echo ${name}
${var}
name=first
echo ${name}_name
#此处大括号不能省略!name=peter; echo $name;
!name=peter; echo "Hello $name";
!name=peter; echo "Hello ${name}_name";
peter Hello peter Hello peter_name
${array[i]}
${array[*]}
${array[@]}
${#array[i]}
${#array[*]}
${#array[@]}
%%bash
arr=(Mon Tue Wes)
echo ${arr[0]}
echo ${arr[*]}
echo ${#arr[0]}
echo ${#arr[*]}
Mon Mon Tue Wes 3 3
%%bash
# 整数运算,(())
i=3;
((i=i+1)); echo $i;
j=$((i*3)); echo $j;
# 整数运算,let
let i=i+1; echo $i;
# expr
expr 1 + 1 #运算符两侧需有空格
# $[]
j=$[i*2]; echo $j;
4 12 5 2 10
if
、 case
for
、 while
、 until
、 select
%%bash
# if语句
if test -f lecture10.ipynb
then
echo “File exists!”
else
echo “File does not exist!”
fi
“File exists!”
%%bash
week=Sunday
case $week in
Saturday|Sunday)
echo “Weekend”
;;
Monday|Tuesday|Wednesday|Thursday|Friday)
echo “Work day”
;;
*)
echo “Unknown date”
;;
esac
“Weekend”
%%bash
person=(Ding Luo)
for i in "${person[@]}"
do
echo $i
done
Ding Luo
%%bash
for i in {1..3} #注意是两对小括号
do
echo $i
done
1 2 3
%%bash
function add() {
echo $(($1 + $2))
}
# 调用函数
result=$(add 2 3)
echo "结果是: $result"
结果是: 5