The Missing Semester of Your CS Education

第1讲 - 课程概览与 shell

第2讲 - Shell 工具和脚本

1
2
3
4
5
6
7
foo=bar
echo $foo
foo = bar(不能运行,空格!!!有空格要用引号)
echo "Hello"
echo 'World'
echo "Value is $foo" (输出为 Value is bar)
echo 'Value is $foo' (输出为 Value is $foo)
1
2
3
4
vim mcd.sh
source mcd.sh
mcd test
cd ..
1
2
3
4
5
# mcd.sh的内容
mcd (){
mkdir -p "$1"
cd "$1"
}
1
2
3
4
5
6
7
# $0 是文件的名字
# $1到$9 是第1到9个参数
# $_ 是上一条命令的最后一个参数
rmdir test
mkdir test
cd $_ # 然后进入test目录
cd ..
1
2
3
# "!!" 命令
mkdir /mnt/new #没有权限
sudo !! # "!!"会被替换为上次的命令,现在你可以再执行一次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
echo "Hello"
echo $? # 0表示一切顺利,没有错误
grep foobar mcd.sh
echo $? # 输出为1

true
echo $? # "true",他的错误代码始终为"0"
false
echo $? # 始终为1

false || echo "Oops fail"
true || echo "Will be not be printed"

true && echo "Things went well"
false || echo "This will not print"

false ; echo "This will always print"
1
2
3
4
5
6
# 将一个命令的输出存储到变量中
foo=$(pwd)
echo $foo
echo "We are in $(pwd)"

cat <(ls) <(ls ..)