计算机科学基础知识第二节讲义

课程链接
运行环境:WSL Ubuntu OMZ终端
PS:看到老师终端具有高亮和自动补全功能,我连夜肝出oh-my-zsh安装教程,实现了此功能。

这节课主要讲变量的语法、控制流程、shell功能等内容。

修改终端用户名,输入密码后重启终端。

sudo hostname xxx //XXX为新用户名

定义一个变量foo并赋值

foo=bar
echo $foo //查看foo 的值

在终端中,对空格很敏感。
如果输入foo = bar则显示错误。
系统会默认调用foo程序,=``bar为其两个参数。

  • 定义字符串
    使用"",''单引号定义字符串,但''无法引用变量
    计算机科学基础知识第二节讲义_第1张图片

  • 定义函数
    这时老师举例mcd()函数,vi在普通用户下无法写入文件,我们可以利用sudo vi来创建mcd()函数

sudo vi mcd() //进入vi界面

vi基本用法
键入ai即为写入模式,可以敲入代码

mcd() {
	sudo mkdir -p "$1"
	cd "$1"
}

按下Esc退出写入模式,:wq保存退出vi
source mcd.sh 运行脚本
mcd test 测试脚本

计算机科学基础知识第二节讲义_第2张图片
后面是关于$0$1$?的用法,不再赘述。

  • 逻辑字符
    || 相当于数学中的逻辑字符,前一个表达式为真,则不再运行后面的表达式,前面表达式为否,则运行第二个表达式。
false || echo "Hello world"
true || echo "will not be printed"

在这里插入图片描述&&相当于

true && echo "things go well"
false && echo "this will not print"

在这里插入图片描述$(表达式) 将表达式结果作为字符串输出

foo=$(pwd)
echo $foo
echo "we are in $foo"

计算机科学基础知识第二节讲义_第3张图片·流程控制
<(等方向字符,可以将为命令提供文件句柄,提供临时文件至父文件夹,因为某些函数希望来自具有某些参数的命令。

cat <(ls) <(ls ..)

计算机科学基础知识第二节讲义_第4张图片```

convert image.jpg image.png
touch foo{,1,2,10}
mkdir joo kar
touch {joo,kar}/{a..c}
touch joo/x kar/y
diff <(ls joo) <(ls kar) ##比较两者区别

vim script.py编写脚本,实现与机器交互

import sys
for arg in reserved(sys.argv[1:]):
	print(arg)

其中,sys.argv[1:]类似于$1$#等参数变量
退出vi后,运行程序

python3 script.py a b c

计算机科学基础知识第二节讲义_第5张图片
shell本身debug程序比较鸡肋,可以采用shellcheck来调试程序。

shellcheck mcd.sh

ls -l 以详细列表显示当前路径文档
man conmond 查看某命令使用方法
find . -name src -type d 在当前文件夹查找命名中src的文件夹
find . -path '**/*.py' -type f 查找某个路径下所有py类型的文佳
locate XXX 定位某类文件

你可能感兴趣的:(linux,linux,讲义)