shell and shell scripts

Unix shell是命令行解释器或shell,可为类Unix操作系统提供命令行用户界面。 shell既是交互式命令语言又是脚本语言,操作系统使用它通过shell脚本来控制系统的执行。

当shell完成执行程序后,它将在屏幕上将输出发送给用户,这是标准输出设备。 因此,它被称为命令解释器

shell解释器有很多种其中最常用的是bash,Linux中默认的shell是Bourne-Again shell(简称bash)

查看系统中所有的shell解释器

1
2
3
4
5
6
7
8
cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/usr/bin/screen

查看当前的shell解释器

1
2
echo $SHELL
/bin/bash

创建shell脚本

shell脚本是一种计算机程序,旨在由Unix shell(命令行解释器)运行。 shell脚本的各种“方言”被认为是脚本语言。 shell脚本执行的典型操作包括文件操作,程序执行和打印文本。

1.使用文本编辑命令如vim创建shell脚本

1
vim filename.sh

2.按i进入insert模式
3.脚本以#!/bin/bash开始
4.代码
5.保存脚本文件
6.执行脚本文件bash filename.sh

vim cheat sheet
vim常用

i - 光标前插入模式
Esc - 退出插入模式
:w - 保存文件但不退出文件
:wq or :x or ZZ - 保存并退出文件
:q! or ZQ - 强制退出文件且不保存改动

shell脚本包括:

  • 脚本申明:#!告知系统用何种shell来解释
  • 注释信息:#进行注释
  • 可执行语句:命令

如果采取在自己电脑上先建了txt文件然后修改后缀为sh,然后直接进行bash的时候会报

1
$'\r': command not found

这是由windows电脑上我们看不到的换行符造成的,dos2unix命令可以修改换行符使得其与Unix兼容。

1
2
3
4
sudo apt-get install dos2unix
dos2unix [file]
# Full documentation:
man dos2unix

例如可以用这样一个简单的shell脚本test.sh,执行bash test.sh后返回的是当前目录下的所有fasta文件名。

1
2
3
4
5
6
#!/bin/bash
filenames=$(ls *.fasta)

for file in ${filenames};do
echo ${file}
done