1、windows下的软件:
在VMware软件中可以安装操作系统:Centos–虚拟机
Vmware软件+密钥+Centos***.iso
文件夹:centos镜像最新版
用户:dev/test 密码:1
2、xshell:Linux的远程操作终端
secur-CRT:
基础指令:
命令名称 [操作选项] [操作对象]
目录相关命令:
ls 浏览目录中的内容,默认浏览当前所在目录
目录:文件夹
当第一次打开终端时,默认会出一个目录下,这个目录称为家目录(~)(每个用户都有一个)
-a查看所有文件,包括隐藏文件
Linux下以.命名开头的都为隐藏文件
-l 查完当前目录下的详细信息(包括最后修改时间)
man ls
pwd显示当前所在文件夹目录的路径(绝对路径)
/ 根目录
绝对路径:唯一路径,起始路径从根目录表达的路径 /home/data
相对路径:起始路径从当前目录表达的路径 ./data 或…/data
.当前所在路径
…当前路径的上一层路径
目录结构:唯一(目录结构与磁盘分区的多少没有关系)的树形结构,最底层是根目录
mkdir 创建目录:
-p 递归多层级创建目录,(自外而内)哪一层不存在则创建哪一层,
如mkdir -p ./test/abc/bcd直接创建根目录和对应文件
rmdir 删除空目录:
-p递归多层级删除目录,自内而外哪一层为空则删除哪一层
如rmdir -p./test/abc/bcd
rm默认删除普通目录
-r 递归删除目录下所有文件,包括目录本身
cp 将一个文件向指定位置拷贝一份
-r递归复制目录下所有文件,包括目录自身
mv 剪切文件/目录,将一个文件/目录移动到指定路径下
-i 增加提示信息
cd ~ 回到当前目录的家目录
~ 快速返回当前目录的家目录
su dev 切换到 dev 用户下
文件相关命令:
touch 若文件不存在创建一个新的空文件,若存在则刷新文件的时间属性
-d -d"2018-2-18 12:30:00"使用指定时间刷新文件的时间属性
cat 打印文件内容到终端显示
-n 增加行号
more 对文件内容进行分页显示(按回车向下按行滚动,按空格下一页,按q退出)
less 对文件内容进行分页显示(按Ctrl+f向下翻页,按Ctrl+b向上翻页,j/k上下按行滚动,q退出)
/string 在文件中向下匹配string字符串
?string在文件中向上匹配string字符串 n下一个匹配位置
head 默认显示文件的前十行内容
-n num 指定显示文件的前num行内容
tail 默认显示文件末尾十行内容
-n num 指定显示文件的末尾num行内容
-f 持续等待刷新文件的末尾num行内容
echo 打印数据在终端显示
>>输出重定向符号,将原本要写入标准输出的数据追加到新文件末尾
>输出重定向符号,清空文件内容,将原本要写入标准输出的数据写入文件
ls>>a.txt 将内容添加到文件末尾
压缩/解压缩文件:
zip/unzip:zip格式的压缩解压缩命令
gzip/gunzip:gzip格式的压缩解压缩命令
bzip2/bunzip:bzip2格式的压缩解压缩命令
tar 可以将大量的目录/文件进行打包生成一个文件,也可以在打包/解包的同时进行压缩和解压缩
-c 打包 -v打包/解包的同时显示详细信息
-x解包 -f必备选项-打包/解包是指定压缩包名称,通常是最后一个选项,因为气候紧跟压缩包名称
-z打包/解包的同时进行gzip格式的压缩/解压缩
-j打包/解包的同时进行bzip2个税的压缩/解压缩
tar -czvf hello.tar.gz file1 file2 ... tar -xzvf hello.tar.gz
匹配查找文件:
find 在指定路径下查找文件 find ./-name "hello"或 find ./-name “hello”
grep 在文件内容中匹配包含有指定字符串的行
-i 忽略大小写进行匹配
-v 反相匹配,匹配那些不包含指定字符串的行 grep -iv “string” filename
-R 对指定路径下的所有文件进行内容匹配
grep -R “string” ./
其他命令:
man 查看手册 man ls
su 切换用户 su username
ifconfig 查看/设置网卡信息(在Windows中为ipconfig)
|管道符,连接两个命令,将前一个命令输出作为后一个命令输入进行执行
shutdown -h now 立即开机(服务器不要用)
reboot 重启
shell:作为沟通的桥梁,连接着系统内核和用户,命令行解释器-解析用户的输入,执行相关的shell指令完成功能
Windows的ui就是一个shell。
操作系统=系统内核+外部应用
系统内核是不允许用户直接操作的
权限:
用户对操作系统所能进行的操作进行权利限制:
管理员=root/普通用户
文件的权限:
对文件操作发用户分类:
文件所有者u 文件所属组g 其他用户o
用户对文件进行的操作分类:
可读read® 可写write(w) 可执行(x)
可浏览 是否可在目录下传建或者删除文件 是否可进入目录
例:所有者可读可写可执行,所属组可读可写,其他可执行 rwxrw—x
umask查看或创建一个文件权限的掩码
032 创建一个文件权限是对多少:745
777&(~032)
chmod:修改一个文件的权限(文件已经创建)
chmod 777 file
chmod[ugoa]+/-[rwx] file
chown:修改文件所有者
chgrp:修改文件所属组
choewn username filename
沾滞位:常用于设置目录权限是,设置了沾滞位权限的目录,其他用户在目录下可以创建文件,但是只能删除自己的文件,不能删除别人的 chmod+t directory
常用工具:5个工具
软件包管理工具:yum
基本程序开发工具:编辑器:vim
编辑器:gcc/g++
项目管理工具:
项目的自动化构建工具:make/Makefile
项目木的版本管理工具:git
软件包管理工具:yum(红帽子系列)
更新源
在Linux下维护安装/移除应用工具(得有网)
ping www.baidu.com查看网络是否通畅
查看有哪些安装包:yum list / yum serch name
su root(在root下安装软件)
安装软件包:yum intstall package_name
移除软件包:yum remove package_name
开发工具:
个人编程相关的工具:编辑器/编译器/调试器
vim:编辑器
vim中的工作模式:12种,常用的有三种:
插入:向文本中插入数据
普通:完成对文本内容指令操作,vim打开默认所处模式
底行:保存文件内容以及退出编辑模式间的切换:
普通-》插入:i(从光标所在字符处开始插入数据),
I:光标移动到行首开始插入
a:光标向后移动一个字符,开始插入;
A:光标移动到行尾开始插入
o:向光标所在行下方新建一行,开始插入;
O:向光标所在行上方新建一行,开始插入
普通-》底行:冒号
插入-》普通:ESC
底行模式下的操作:
w保存 :q退出 :wq保存并退出 :q!强制退出(不保存) :x保存并退出(仅在修改之后才保存退出,未修改就直接退出)
普通模式下的操作:
光标移动:hjkl->上下左右 wb按单词移动 ctrl+f/b上下翻页 G/gg尾行/首行
内容操作:yy复制光标所在行内容; nyy从光标所在行向下复制n行数据
p(小写)向光标所在行下方粘贴新行; P(大写)向光标所在行上方粘贴新行
dd删除光标所在行; ndd从光标所在行开始向下删除n行数据; vim中删除就是剪切
x删除光标所在字符; dw删除光标所在单词; D删除当前行光标以后的数据
其他操作:u撤销上一步操作,ctrl+r反向撤销
gg=G全文对齐
将当前普通用户加入到sudoers配置文件中,添加之后,普通用户可以使用sudo操作,
临时为当前用户在任意位置可以执行任意命令,而不必切换用户。
su root
chmod u+w/etc/stdoers
vim/etc/stdoers
:90 跳转到文件第90行左右
向下方添加内容
username ALL=(ALL) ALL
编译器:gcc/g++
编译过程:
预处理:展开所有代码
编译:进行语义语法检测,将C语言代码解释成汇编代码
汇编:将汇编代码解释成二进制机器语言
链接:将当前代码和库函数还有其他文件代码打包生成可执行程序
动态链接:在链接时在可执行程序中记录库中函数符号信息表,并没有将具体函数的实现代码写入到可执行程
中,因此此后运行这个程序时,需要将库函数也加载到内存中,但是在内存中多个程序可使用同一
个库(节省资源)
静态链接:在链接函数库文件生成可执行程序的时候,直接将库中的代码实现写入到可执行程序中,生成的代码
会比较大一点,但是运行时不需要依赖库的存在。
gcc默认的链接方式就是动态链接;
调试器:gdb
调试程序运行过程,查看程序出问题的位置
程序调试的前提:使用gcc -g选项编辑程序,生成一个debug版的程序,程序中添加了符号信息,然而Linux下gcc编译器,默认生成的是release版程序,不包含调试符号的信息,无法调试。因此在编译程序的时候,需要增加gcc -g选项,表示生成debug版程序。
1.加载可执行程序:gdb ./main gdb->file ./main
2.单步调试:start/step/next/until file:file/continue/run
3.断点调试:run/break/watch varname/info break /delete
/print
4.调用栈:bracktrace
gcc常见选项:
-E当前gcc只完成预处理就会退出
-S当前gcc只完成编译阶段就会退出
-c当前gcc只完成汇编阶段就退出
-o用于指定要生成的目标文件名称
-g生成debug版本程序
开始调试命令:
run:程序直接开始运行; start:开始逐步调试
调试的流程控制命令;
list:查看指定文件指定行附近的代码,list filename:line
step:下一步,若当前调试位置是一个函数,则会进入函数
next:下一步,直接运行这一行的函数
until:直接运行到指定文件的指定行 until filename:line
conttinue:从当前位置继续进行
断点相关命令:
break:打断点 break filename:line break function_name
info break: 查看断点信息 delete:删除断点信息
watch:变量监控,当变量内容发生变化则停下来 watcb varible name
其他命令:
查看函数程序运行信息中的函数调用栈 backtrace
快速定位程序崩溃位置
因为程序崩溃后,栈顶函数就是出问题的函数
函数库:将大量已经实现的代码打包生成一个文件-库文件(已经编译好的机器指令代码)
项目相关工具:
项目自动化构建工具:
make/Makefile
Makefile是个普通的文本文件,在这个文件中可以遍历整个项目的编译流程规则。
make是一个Makefile解释程序,当前命令行下输入make,这个时候这个解释程序会到当前路径下寻找名字为Makefile的文件,对其内部的内容进行解释执行。
项目的版本管理工具:
Makefile的编写规则:
目标对象(要生成的文件名称):依赖对象(用于判断目标对象是否为最新,是否需要重新生成)
tab命令(生成这个目标对象所要执行的命令,但是有时候这个命令也不一定非要生成目标对象)
预定义变量:$^ / $@ / $< (分别为所有的依赖对象名称、所有的目标类型、依赖对象中的第一个)
声明伪对象:.PHONY: $(target) 伪对象:每次都需要重新生成
make的解释执行规则:
1.只生成第一个目标对象
2.会查看依赖对象是否存在,先生成依赖对象(依赖对象不存在则查找依赖对象生成规则)/通过双方时间关系,判断目标对象是否需要重新生成。
项目版本管理工具:git/svn
git clone远程仓库地址
git add./*添加本地修改
git commit -m “备注信息”提交本地版本仓库管理
git push origin master将本地版本上传到远程主分支
进度条程序:
\r为回车符,让光标移动到行首
\n为换行符,让光标移动到下一行;还有个功能是刷新标准输出的缓冲区(数据并没有立即写入文件,而是先写入到缓冲区中,等到刷新缓冲区的时候才将数据写入文件)