linux基本操作:
命令格式: ls cd mkdir rm echo mv cat touch cp
命令名 [选项参数] [操作对象]
目录相关命令
ls 列出当前目录下的内容
一个终端打开之后,直接就会处于一个目录下
目录:文件夹
-a 浏览所有文件,包含隐藏文件
linux下以.开头的文件是隐藏文件
. 目录自身
.. 目录自身的上一层路径
-l 浏览文件的详细信息
-t 对浏览的文件进行按时间排序
-S 按时间排序
-r 逆序
pwd 显示当前所在路径(绝对路径)
绝对路径:以根目录为起始的路径(linux的目录结构就是以根目录起始的)
相对路径:以当前目录作为起始的路径
mkdir 创建文件夹
-p 递归多层级创建
rmdir 删除空目录
-p 递归多层级删除空目录
rm 删除普通文件
-r 删除目录(递归删除目录及内部文件)
-f 忽略提示信息,直接进行操作
cp 拷贝文件到指定位置
-r 拷贝目录(递归拷贝目录及内部文件)
-f 忽略提示信息,直接进行操作
mv 将文件/目录移动到指定位置
-i 增加提示信息
cd 进入指定目录(改变当前所在路径为另一位置)
~ 快速返回当前用户的家目录
- 返回上一次所在路径
文件相关命令
linux一切皆文件
文件类型:linux并不以文件后缀名区分文件类型
- 普通文件
d 目录文件
l 符号链接文件
p 管道文件
c 字符设备文件
b 块设备文件
s 套接字文件
touch 若文件不存在则创建新文件,否则刷新时间属性
-d 使用指定时间刷新文件的时间属性
-r 使用指定文件的时间属性刷新另一个文件时间属性
cat 打印文件内容到终端显示
-n 显示内容行号
tac 按行逆序打印文件内容
more 分页显示文件内容
空格 向下翻页
b 向上翻页
回车 向下按行滚动
q 退出
less 分页显示文件内容
向下翻页 空格 f PgDn
向上翻页 b PgUp
向上滚动 ↑ k
向下滚动 ↓ j
字符串匹配功能:
/string 向下匹配string字符串
?string 向上匹配string字符串
n 找下一个匹配位置
q 退出
head 默认显示文件前10行内容
-n 用于指定显示文件前n行内容
tail 默认显示文件末尾10行内容
-n 用于指定显示文件末尾n行内容
-f 一直刷新文件末尾的新数据 日志
压缩/解压缩命令:
zip/unzip zip格式的压缩/解压缩
gzip/gunzip gzip格式的压缩/解压缩
bzip2/bunzip2 bzip2格式的压缩/解压缩
tar 打包工具
-c 打包
-x 解包
-z 打包/解包同时进行gzip格式压缩/解压缩
-j 打包/解包同时进行bzip2格式压缩/解压缩
-v 显示详细些的打包/解包信息
-f 指定压缩包名称
tar -czvf abc.tar.gz abc.txt
tar -xzvf abc.tar.gz
时间日期命令:
cal 查看日历
-3 显示相邻三个月日历
-y 显示全年日历
-j 显示日期的时候以day of year的形式显示
date 查看系统当前日期时间
+ 用于指定显示时间的格式
+"%Y-%m-%d %H:%M:%S"
+"%s"
-s 设置系统时间
匹配查找命令:
grep 文件内容的字符串匹配
-i 忽略大小写进行匹配
-v 反向匹配(匹配不包含指定字符串的行)
-R 递归对目录下所有文件进行字符串匹配
find 文件的查找
-name 按文件名查找
-type 按文件类型查找
f d l s c b p
-size 按照文件大小查找
+/-n[cbwkMG]
-mtime -ctime -atime
+/-n 按天查找
-mmin -cmin -amin
+/-n 按分钟查找
-exec 连接其它命令,对找到的文件进行处理
find ./ -size +5k -exec rm '{}' \;
tab 自动补全
ctrl+c 中断当前操作
reboot 重启
shutdown -h now 立即关机
halt 立即关机
其它命令:
man 查看手册命令
stat 查看文件的详细状态信息
链接数
| 管道符
连接两个命令,将前边命令的输出结果作为后边命令的输入
>> 重定向
改变数据流向,将数据追加到文件末尾
> 重定向
改变数据流向,先清空文件原有数据,然后写入新数据
调研根目录下的目录各自都有什么含义!!!
shell:
命令行解释器(程序)
linux中有各种解释器:bash dash cash
权限:
用户分类:管理员用户(root); 普通用户
文件的权限:
文件对用户的分类
文件所有者 文件所属组 其它用户
u g o
文件对操作的分类
可读 可写 可执行
r w x
rwx rwx r-x
位图
111 111 101
7 7 5
564 所有者权限:可读可执行
所有者是可读可写,所属组是可读,其它用户没人任何
640
权限的相关命令:
umask 查看/设置权限掩码
作用:影响创建一个文件实际的默认权限
实际权限 = 给定权限 & (~umask)
777 002
653 022
110 101 011
111 101 101
chmod 修改文件的权限
o-w 针对某一类用户的权限进行增删
a+x
-x
0777 直接使用8进制数字权限设置
chown 修改文件所有者
chown username filename
chgrp 修改文件所属组
chgrp groupname filename
沾滞位:
若一个目录设置沾滞位,那么目录将具有特点:
其它用户都可以在目录中创建文件
其它用户可以删除自己的文件
但是其它用户不能删除别人的文件
useradd -m username
passwd username
userdel -r username
常用工具
yum:软件包管理工具
软件安装方法:
1. 手动源码安装
2. 使用工具安装
工具自身可以解决软件包安装的依赖关系
yum常用操作:
查看
查看能够安装什么
yum list | grep package_name
查看已经安装了什么
yum list installed | grep package_name
安装
yum install package_name
移除
yum remove package_name
vim:编辑器
12种操作模式,但是常用的有三种
普通模式
插入模式
底行模式
模式切换
普通《=》插入:i a o I A O ESC
普通《=》底行:: ESC
底行:
q w wq q!
set nu
!pwd
/string ?string
普通模式:
光标移动
hjkl ctrl+f/b w/b gg G
复制
yy nyy
粘贴
p P
删除
x dw D dd ndd
撤销
u ctrl+r
其它
gg=G
/etc/vimrc
~/.vimrc
gcc/g++:编译器
功能:将c/c++高级语言代码翻译成机器可识别代码
编译过程:
预处理:展开所有代码
编译:语法语义纠错,翻译成为汇编代码
汇编:将汇编代码翻译成二进制机器可识别指令
链接:链接库,将所有代码合到一起生成可执行程序
库文件:已经汇编完成的公共代码
链接:将库中的代码拿到要生成的可执行程序中
静态链接:链接静态库,将库中的代码直接全部拷贝到可
可执行程序中,好处是程序运行时,不需要依
赖库文件的存在;缺点是占用资源较多
动态链接:链接动态库,只是记录库中的接口符号位置信
息,好处是资源占用冗余较小,缺点是程序运
行时需要动态库的存在
共享库/运行时库
gcc默认链接方式:动态链接
gdb:调试器
功能:调试一个程序的运行过程
linux下程序编译默认生成release版本程序,不带有调式
符号信息,意味着程序无法被调试
所以程序调试的前提就是编译生成debug版本程序,因此
gcc编译程序时需要加上-g选项,开启调试,向程序中添
加调试符号信息
1. gcc -g main.c -o main
gdb调试程序,需要将程序信息,加载到gdb中
2. gdb ./main
gdb 进入gdb后 运行 file ./main命令
开始调试:
运行程序加载运行参数
r param1 param2 ...
start 开始逐步调试
n 下一步;并不跟踪进入函数
s 下一步;跟踪进入函数
p var 查看变量数据
l line 查看指定行(默认当前调试行)附近代码
until line 直接运行到指定行
b line 向当前调式文件指定行添加断点
b file:line 向指定文件指定行添加断点
b func 向函数添加断点
watch var 变量监控,给变量添加断点,当变量
内容发生改变,停止
i b 查看所有断点信息
d id 删除指定断点,默认删除所有
c 继续运行
bt 查看函数调用栈信息
make/Makefile:项目自动化构建工具
Makefile:定义编译规则的普通文件
make:是一个解释程序,解释执行Makefile中定义的
编译规则
执行make命令,这时候make程序会到当前目录下寻找
Makefile文件,解释其中的编译规则
如何编写Makefile;编写规则:
通过目标对象与依赖对象最后一次修改时间,判断目
标对象是否需要重新生成
make在Makefile中只找第一个目标对象,为了生成这个目
标对象,而执行命令,完毕之后直接退出(后边的对象都
不会在生成了)
make在Makefile中找到第一个对象,这时候如果这个对象
的依赖对象不存在,则在后续编译规则中,寻找是否可以
生成这个依赖对象,当所有依赖对象生成完毕后,最终生
成目标对象
预定义变量
$@ 要生成的目标对象
$^ 所有的依赖对象
$< 依赖对象中的第一个
.PHONY关键字用于声明伪对象
伪对象:不管对象是否是最新,每次都要重新生成
git:项目版本管理工具
svn:集成式版本管理
git:分布式版本管理
三板斧:
克隆代码到本地
git clone git地址
添加本地文件
git add 新文件
提交代码到本地仓库
git commit -m "本次提交备注信息"
提交本地代码到服务器分支
git push origin master
master 是git项目版本主分支