1.linux用户
ubuntu有三种用户:
1)初次创建的用户
2)root用户
3)普通用户
linux用户记录在etc/passwd这个文件内
linux用户密码在etc/shadow这个文件内
2.linux用户组
为了方便管理,将用户进行分组,这样就可以设置非本组人员不能访问某些文件。每个用户可以属于多个不同的组。
用户:家里有多个家庭成员,但是每个人都有自己的私人空间,别人不可以去乱翻
用户组:每个家庭成员却有公共的活动区域,例如:厨房,客厅......
每个用户都有自己的ID,叫做:UID。
每个用户组都有自己的ID,叫做:GID。
用户组查看命令为:/etc/group

3.图形化创建用户和用户组


4.创建并执行.c文件
步骤:
1.gedit hello.c
2.gcc hello.c -o hello
3../hello
查看当前的文件权限: ls hello -l 修改文件的权限:chmod 权限 hello
修改文件的用户及用户组 chown sudo chown xxx xxx 文件名
5.vim编辑器
vim 打开文本文档, 输入 “a,A”进入编辑模式
退出按一下 Esc,输入:wq,退出保存文档【Esc:文档进入一般模式】
:wq---保存退出 :q---退出 :q!---不保存退出 :w---保存
cat 文本文档: 显示当前的文档内容
6.linux c编程
建立c_project文件夹 ,打开修改vim的设置,将tab设置为4位,并且显示行号
输入下面两行的代码进行修改,然后保存退出


编辑 main.c


运行结果:
 
2)多文件c编程
创建了main.c tool1.c,tool1.h
main.c

 tool1.c
 tool1.h
使用命令 gcc main.c tool1.c -o main 进行编译,生成main文件
结果:

优化: 在多个文件的情况下,如果修改一个文件,则需要进行全部的重新编译,非常麻烦
使用 gcc- c 文件.c 进行文件的编译,后续只需要执行这个修改文件的代码,然后链接就行了
进一步优化:使用Makefile
将所有的编译和链接放在makefike文件中

然后使用命令make

结果:

可以使用 make clean删除生成的链接文件

7.Makefile基本语法:
注意:每条命令的开头一定是tab开头的,不可以是空格。【会为每个以tab为命令的开启一个shell命令】。
1.#makefile变量的使用
  1 objects = main.o tool1.o
  2 main: $(objects)
  3     gcc -o main$(objects)
2.
1)赋值符“=”【为最后被指定的】
 13 name = ms
 14 curname = $(name)
 15 name = olss
 16 
 17 print:
 18     @echo curname: $(curname)
 19 
结果:

2)“:=”将当前指定的数值进行赋值
 13 name = ms
 14 curname := $(name)
 15 name = olss
 16 
 17 print:
 18     @echo curname: $(curname)
 19 
v结果:

3)"?="当前变量未赋值,则将等号后面的赋值给变量
 13 name = ms
 14 curname := zzk
 15 curname ?= kkk
 16 name = olss
 17 
 18 print:
 19     @echo curname: $(curname)
结果:
 
4)"+="将等号后面的加在变量的后面
8.shell脚本
1)使用vim命令创建一个shell脚本文件,然后使用chmod命令将shell脚本文件权限打开。


2)接收键盘变量
read:读取接收变量

结果:

3)shell脚本的数值计算

4)test命令
test命令用于查看当前文件是否存在,权限等信息,可以进行数值,字符,文件三方面的测试。
&&和||命令:
cmd1&&cmd2 当 cmd1 执行完并且正确,那么cmd2 开始执行,如果cmd1 执行完毕错误,那么cmd2不执行
cmd1 || cmd2 当cmd1 执行完毕并正确,那么cmd2不执行,反之cmd2 执行。
5)$0,1.....的用法
$0 : Shell本身的文件名
 $! : Shell最后运行的后台进程PID
 $$ : 当前脚本运行的进程PID
 $? : 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
 $* : 所有参数列表。如"$*“用双引号引起来的情况、以”$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个
 $@ : 所有参数列表。如"$@“用双引号引起来的情况、以”$1" “$2” … “$n” 的形式输出所有参数
 $# : 添加到Shell的参数个数
 $- : 显示shell使用的当前选项,与set命令功能相同
 $1~$n :添加到Shell的各参数值。$1是第1参数、$2是第2参数…

结果:

6)if else 语句

格式:
if [条件判断] ;then
//条件成立的事件
elif 条件判断[];then
//条件成立的事件
else
//条件成立的事件
fi
7)case语句
格式:
case $变量 in
"第一个变量的内容")
程序段
;;
"第二个变量的内容")
程序段
;;
"第n个变量的内容")
程序段
;;
esac

结果:

8)shell脚本函数
shell脚本也支持函数,函数的写法如下:
function fname(){
//函数代码段
}

结果:

9)shell----while循环

结果:

10)for 循环语句
格式1:
for var in con con1 con2
do
循环语句
done
 
  
结果:
 
 
格式2:
for((初始值,限制值,执行步长)) //两个括号
do
//循环代码段
done
 
结果:



















