unix课上笔记整理.docx
- 文档编号:29846107
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:33
- 大小:35.47KB
unix课上笔记整理.docx
《unix课上笔记整理.docx》由会员分享,可在线阅读,更多相关《unix课上笔记整理.docx(33页珍藏版)》请在冰豆网上搜索。
unix课上笔记整理
进入超级用户:
suroot
密码:
123456
输入要新增的用户名:
useradd用户名1
更改用户密码:
passwd用户名1
输入密码:
456789
切换用户:
su-用户名2
显示当前目录:
pwd
Why:
程序
简单文件系统
系统管理(CD.USB.harddisk)
What:
叶
结点:
文件根
结构:
倒置的树中间结点
文件系统边:
文件之间的关联
行为(访问)①从根到结点的路径:
/home/xy/a1
②现在的位置
Where:
文件系统在哪:
分区
How:
怎样去用访问文件系统
1.pwd:
当前目录
创建用户即创建目录
2.mkdir:
创建目录
①在xy下创建a1文件:
Mkdir/home/xy/a1
②pwd已经知道当前位置.
Mkdir./b1或mkdirb2
3.cd进入目录
①目录(内部结点)绝对cd/home/xy/a1
不能执行相对cda1或cd./a1
只能进入和退出
4.返回(切换)
绝对cd/home/xy/b1
相对cd../b1
5.删除目录
绝对rmdir/home/xy/b1
相对rmdir./b1或rmdirb1
rma*把目录文件下所有a的文件删掉
目录非空无法删除
rmdir-rtmp1
tmp1下所有目录文件删掉
1.touch文件名创建文件
2.ls-l查看当前位置下所有文件
d开头:
目录文件
-开头:
普通文件
②叶节点(文件):
3.执行文件:
./a2权限不够
①rw-rw-r--
用户组其他组
ugo
对文件的权限
rw-
读写执行
给用户本人对a2增加执行的权限
chmodu+xa2
用二进制数
4.删除文件
rma2
不能使用rm-ra1
5.拷贝文件
cp源目标
把源节点拷到目标节点
cpa1b1/a2
把a1拷到b1下再换名为a2
把目录b1拷到b2:
cp-rb1b2
改名:
cp-rb1b2/b3
在linux文本编程
程序→文件→对应树上的节点
Linux文本编辑器vi
占用内存小
运行快
Vi
结构
What
行为
状态:
①初始②命令③插入④退出
vi程序名.cpp
①把源程序转换为可执行程序。
语法检查。
g++-o可执行程序源程序
②设定行号:
senu
取消行号:
senonu
③删除:
在命令状态下:
删除一个字符:
x
删除3个字符:
3x
删除一个单词:
dw
删除n个单词:
ndw
删除一行:
dd
从当前光标删至此行最后:
D
删除第2行:
2d
利用行号删除,从第2行删除到第7行:
2,7d
④修改:
命令状态下
修改一个字符:
r
插入状态下
修改一个单词:
cw
修改一行:
cc
从当前位置任意:
R
⑤查找
在命令状态下输/+要查找的字符
运行完后还在命令状态下
n光标指示
^开头$结尾/^查找空白行
⑥复制粘贴
在命令状态下先复制再粘贴
执行完后还在命令状态
复制n行:
nyy
粘贴到光标下面:
p
粘贴到光标上面:
P
复制2~7行在8行下面:
2,7t8
复制单词:
yw
p→粘贴到光标右面
P→粘贴到光标左面
Make
微语言自助编译语言
可执行程序名与源程序名要相同
:
6直接到第6行
①编译链接
②执行
1.问题→vi编辑器
2.g++转换为可执行程序(结构)
3.把可执行程序执行./mytest
4.自动化
⑦移动
在命令状态下
移动4.5.6行到8行下:
4,6m8
4m8把4行移动到8行
⑧替换
在命令状态下替换
替换完后还在命令状态下:
S/include/INCLUDE/g
被替换替换
只替换找到的第一个
从1~11行的include都替换
1,11S/incldue/INCLUDE/g
从1到最后一行
(1,$)S/incldue/INCLUDE/g
嵌入执行在命令状态下:
:
!
pwd→在哪
回车
:
!
ls-l
把6~11行复制并保存在mytset2上:
6,11wmytest2.cpp
程序设计
程序:
问题算法(解决问题步骤)程序
数据结构
属性
结构
对象操作→接口
①面向对象行为:
提供服务,职责
程序对象的协作→发送消息
②脚本程序:
面向命令
看到mybin
tarcvfz0131122351_yangfan.tar.gzmybin
字节数
tartvfz0131122351_yangfan.tar.gz
解压
tarxvfz0131122351_yangfan.tar.gz
进程之间的关系:
进程树
1.通过信号kill-q2407杀死^c退出
进程间的协作:
进程间的通信
2.通过管道
pwd|ls-l查看进程树
pwd>a.txt在输入到a.txt
Shell脚本语言
Why:
Unix系统维护:
→自动化
BASHshell脚本语言特点:
解释型:
边解释边执行,不需像c/c++编译链接
解释器:
pwd,ls-l等都在解释器下存在
解释器不一样,语言不一样
语用
语言语法
语意
变量a=2+2(单个的3个字符)
所有的数据都是字符串
Shell脚本程序命令:
cd,mkdir,g++,vi等
算法:
每一个步骤都是命令
如何写脚本程序
vimytest.sh
1.写解释器:
#!
/bin/bash
2.①directory=mybin3
②readdirectory
③echo“pleaseinputdirectory”
pwd
ls-l
命令mkdirmybin2
cd$directory
ls-l
3.存盘
如何执行:
不能直接运行,得改权限!
rw-
chmodu+xmytest.sh
764
./mytest.sh
1.直接赋值directory=mybin
2.从键盘上赋值readdirectory
对象之间的关系:
1.包含(关联)聚合可单独存在
组合不可单独存在
2.继承(泛化)
3.依赖
1.a+b一个个加循环
解决:
算法
2.求和公式:
n(n+1)/2
bash中所有都是字符串
a=2+2
→2+2
echo$a
a=$((2+2))
→4
echo$a
#!
/bin/bash
N
result
temp1=$(($N+1))
temp2=$(($N*$temp1))
result=$(($temp2/2))
echo“result=$result”
while循环
whilecondition
do
done
判断符
-lt小于
-le小于等于
-gt大于
-ge大于等于
-eq等于
-ne不等于
#!
/bin/bash
a=0
b=1
echo“pleaseinputNvalue”
readN
while[$b-le$N]
do
a=$(($a+$b))
b=$(($b+1))
done
echo“result=$a”
编译自动化
#!
/bin/bash
g++-cmy_date.cpp
g++-ctest_my_date.cpp
g++-otest_my_datetest_my_date.omy_date.o
./test_my_date
v语言:
一类问题只写一次
v语言
vimymake.mk
test_my_date:
test_my_date.omy_date.o
g++-otest_my_datetest_my_date.omy_date.o
test_my_date.o:
test_my_date.cpp
g++-ctest_my_date.cpp
mydate.o:
my_date.cpp
g++-cmy_date.cpp
make-fmymake.mk
bc从用户终端上输入→结果输入到屏幕上
输在终端文件→输出到屏幕文件
任意文件→任意文件
进程p文件bc进程文件
管道管道
echo“2.5*.35”|bc在终端上输入
8.0在屏幕输出
a=$(echo“2.5*3.5”|bc)
echo$a
8.0
a=$(echo“scale=6;2.3*3.5”|bc)
ehco$a
7.500000
从文件中读取
vifloat.sh
#!
/bin/bash
file_name=float.txt
first=0
second
reada (可替换为$file_name) 浮点数求和 viadder.txt 2.3 3.4 89.45 345.82 76.54 vifloat_sum.sh #! /bin/bash file_name=add.txt result=0.0 whilereadadder do result=$(echo“$result+$adder”|ba) done echo“result=$result” chmod764float_sum.sh ./float_sum.sh 选择判断: if[condition] then else fi #! /bin/bash file_name=float.txt first=1 flag=1 second whilereadsecond do if[$flag-eq1) then first=$second flag=0 else first=$(echo“scale=6;$first-$second”|bc)//定义浮点数精度为6位 fi done<$file_name echo“result=$second” vilogin.sh #! /bin/bash input_user input_pass 直接设定用户名、密码 store_user=xy store_pass=123 从文件中读取用户名、密码 file_name=user.txt flag=1 whilereadvar do if[flag-eq1] then store_user=$var flag=0 else store_pass=$var fi done<$file_name 输入密码 echo“pleaseinputuser_name” readinput_user echo“pleaseinputpassword” readinput_pass if[[$input_user=$store_user]]&&[[$input_pass=$store_pass]] then echo”logging” else echo”wrong” 输入数据: 在文件中 数据 输出数据 算法: +.-.*./ while循环,从文件当中获取数据 whilereadadder do done #! /bin/bash file_name=add.txt→文件名为固定 换为参数file_name=$1 执行时: ./vector.shadd.txt利用参数传入文件名 if[$#-ne1] then echo”Usage: $0file_name” exit1 fi 多项选择: caseexp(待判断的变量)in $flag 0) result=$adder flag=1 ;; 1) result=$(echo”scale=20;...) flag=2 ;; 2) .. ;; *)//其余情况 .. ;; easc 数据不是一行一个的数据 23.4545.5432.21678.83 9.237893.2121.21 forvarinset do ... done whilereadline//一行一行读取 do foriteminline//每一行,一个词一个词读取 do if[$flag-eq0] then result=$item flag=1 else result=$(echo“scale=20;$result-$item) fi done done<$1 A cbp=(a+b+c)/2 S= BaC 1.triangle接口: areatriangle.h triangle.cpptriangle.o 2.line接口: lengthline.h line.cppline.o 3.point接口: x,ypoint.h point.cpppoint.o →main.cpp linux下做c++ 1. vitriangle_test.cpp #include #include”triangle.h” usingnamespacestd; intmain() { doublex_A,y_A,x_B,y_B,x_C,y_C; cout<<”inputA,B,C”< pointA,B,C; lineAB(A,B),BC(B,C),AC(A,C); triangletri(AB,BC,AC); cout<<”Area=”< return0; } 2. vitriangle.h #include”line.h” classtriangle { public: trianle(linel1,linel2,linel3); doublearea(); private: line_l1,_l2,_l3; } vitriangle.cpp #include #include”triangle.h” triangl: : triangle(linel1,lnel2,linel3); _l1(l1),_l2(l2),_l3(l3){}; duobletriangle: : area() { doublep=(_l1.get_len()+_l2.get_len()+_l3.get.len())/2; returnsqrt(p*(p-_l1.get_len())*(p-_l2.get_len())*(p-_l3.get_len()); }; viline.h classline { public: line(pointp1,pointp2); doubleget_len(); private: point_p1,_p2; } viline.cpp #include”line.h” #include”point.h” line: : line(pointp1,pointp2): _p1(p1),_p2(p2) {}; doubleline: : get_len() { returnsqrt(pow((_p1.get_x()-_p2.get_x()),2)+pow((_p1.get_y()-_p2.get_y()),2)); }; vipoint.h classpoint { public: point(doublex,doubley); doubleget_x(); doubleget_y(); private: double_x; double_y; } vipoint.cpp #include”point.h” point: : point(doublex,doubley): _x(x),_y(y); {}; doublepoint: : get_x() { return_x; } doublepoint: : get_y() { return_y; } 编译 g++-cpoint.cpp g++-cline.cpp g++-ctriangle.cpp g++-ctriangle_test.cpp 链接 g++-otest.triangletrianle_test.otriangle.oline.opoint.o 写make文件 vitriangle.mk test_triangle: triangle_test.otriangle.oline.opoint.o目标文件和o文件 g++-otest_triangletriangle_test.otriangle.oline.opoint.o triangle_test.o: triangle_test.cpp g++-ctriangle_test.cpp triangle.o: triangle.cpp g++-ctriangle.cpp line.o: line.cpp g++-cline.cpp point.o: point.cpp g++-cpoint.cpp rm*.o make-ftriangle.mk vitriangle.mk GCC=g++ CFLAG=-c OFLAG=-o OBJ=triangle_test.otriangle.oline.opoint.o EXE=triangle_test ${EXE}: ${OBJ} $(GCC)$(OFLAG)$@$^ %.o: %.cpp $(GCC)$(CFLAG)$^ = 计算3次: M! N! (M-N)! 把通用的用函数调出 脚本中的函数: 先定义再使用,先看主程序需要什么,再去看定义 计算fac #! /bin/bash #functiondefintion Usage() { echo“Usage: $0n” exit1 } fac() { localinputresult input=$1 result=$1 if[$input-eq1] then result=1 else input=$(($input-1)) result=$(($result*$(fac$input))) fi echo$result } #mainprogram if[$#-ne1] then Usage fi fac$1 chmod764fac.sh $./fac.sh5 语意的错误→调试 运行时 如何调试: 1.收集信息→如何收集 2.调试 3.OFLAG=-g-o CFLAG=-g-c收集信息的作用 1.gdb./test.classes 调试器 2.l(列出程序)显示 3.设定断点b7(第7行) 4.运行程序r(run) 5.进行调试s(step) 6.p(print) shell编写菜单程序 vimenu.sh #! /bin/bash #fuctiondefinition edit_fun() { echo“pleaseinputfilename” readfilename vi$filename } compile_fun() { echo“pleaseinputsourcetarget” readsource readtarget g++-o$source$target } quit_fun() { exit1 } err() { echo“wrongpleasetryagain” } show_menu() { clear//清屏 echo““ echo”1.editfile“ echo”pilefile“ echo“3.exit“ } get_choice() { readchoice } do_command() { case$1in 1) edit_fun ;; 2) comile_fun ;; 3)quit_fun ;; *) err ;; esac } wait_fun() { echo“pleaseinputanykeytocontinue” readkey } menu() { whiletrue doshow_menu get_choice do_command$choice wait_fun done } #mainprogram menu c++模拟出题+-*/ vitest_iminate.cpp #include"exam.h" #include usingnamespacestd; intmain() { examju; ju.iminate(); cout<<"iminatetestgrades: "; ju.get_grade(); return0; } viexam.h #include"item.h" classexam { public: exam(); voidiminate(); voidget_grade(); private: item_item[11]; intgrade; }; viexam.cpp #include"exam.h" #include #include #include usingnamespacestd; exam: : exam() { srand(time(0)); inti=0; intleft; intright; charoper; intanswer; intlf; intrg; intop; for(i=0;i<10;i++) {for(;;) {lf=rand()%10; rg=rand()%10; op=rand()%4; if(lf! =0&&rg!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- unix 笔记 整理
![提示](https://static.bdocx.com/images/bang_tan.gif)