文章目录
1 linux基础
1.1 shell
shell:命令解释器,对终端的输入解释成内核识别的指令,是按照$PATH环境变量查找的
1.2 linux键盘快捷键
字符命令 | 含义 |
---|---|
ctrl+d | 删除光标后的字符 |
ctrl+h | 删除光标前的字符 |
ctrl+u | 删除光标前的所有内容 |
ctrl+k | 删除光标后的所有内容 |
1.3 linux目录结构
目录 | 介绍 |
---|---|
/bin | 二进制文件、可执行程序、shell命令(ls、rm、cp) |
/sbin | 系统管理员使用的命令(ifconfig、shutdown、reboot) |
/dev | 硬盘、显卡、鼠标,字符设备文件和块设备文件 |
/lib | 加载的动态库文件 |
/mnt | 手动挂载的目录(U盘) |
/media | 外设的自动挂载目录,如光驱 |
/usr | unix system resource(unix系统资源)类似于window下的progaram files目录 |
/etc | 存放配置文件 |
/opt | 安装第三方应用程序 |
/tmp | 存放临时文件(系统重启后会自动清楚) |
1.4 linux终端提示符
duan@duan-virtual-machine:~$
duan:当前登录的用户名
@:中文“在”的意思
duan-virtual-machine:主机名(/etc/hostname)
~:当前的工作目录
$:表示当前用户为普通用户(# 表示当前用户为root用户)
1.5 linux常用命令
which:显示命令所在的路径
mkdir:创建目录,多级目录要加 -p 参数
cp:也可以用来拷贝目录,但要加 -r 参数
more:可以分页显示文件内容,优于cat
less:显示文件内容,优于more
head:head -n显示前n行
tail:tail -n显示后n行
tail -f filename:实时的显示文件内容,常用来调试代码(需要两个终端)
ln:ln -s 源文件 链接文件,软链接相当于window快捷方式
- 注意:创建软连接文件一定要使用绝对路径,否则,当软链接文件移动位置之后,就会找不到指向的文件了;软链接文件的大小是源文件的路径字符+文件名长度
ln:ln 源文件 链接文件,硬链接相当于window复制文件
- 硬链接不能建立在目录上
- 创建一个硬链接文件,硬链接计数+1,删除则-1,为0则找不到文件了
- 硬链接和源文件的inode是相同的,inode指向了文件块的位置;不同文件系统的可能会用不同的inode,所以硬链接不能跨文件系统
wc:wc filename,查看文件行数、字节数、单词数
find:查找命令
find 路径 -name "filename"
find 路径 -type 文件类型
find 路径 -size +100M/-100k
find 高级查找
find 路径 -name "filename" -exec shell命令 {} \;
find 路径 -name "filename" -ok shell命令 {} \;
find 路径 -name "filename" | xargs shell命令
grep:grep 参数 "查找内容" 路径
-r:递归搜索,路径为目录时使用
-n:显示内容所在的行号
-i:忽略大小写
-v:取反,不显示查找内容的行
man
- 1 user comand:用户在shell中可以操作的命令
- 2 system call:系统调用函数
- 3 c library function:C函数
- 4 devices and special file:设备或特定文件
- 5 file format and conventions:配置文件
ps
——查看进程ps -aux
ps -ajx
ps -ef
kill
kill -l
:查看系统有哪些信号kill -9 pid
:杀死某个进程
1.6 linux软件安装和压缩
1.6.1 apt-get和yum在线安装和卸载
- apt-get
- 软件安装:
sudo apt-get install 软件名
- 软件卸载:
sudo apt-get remove 软件名
- 更新软件列表(Ubuntu会存放软件的安装链接):
sudo apt-get update
- 清理安装包:sudo apt-get clean`
- 清理的路径是:
/var/cache/apt/archives
- 清理的路径是:
- 软件安装:
- yum
yum install -y gcc
- 软件安装:
yum install -y xxx.rpm
- 软件更新:
yum update -y xxx.rpm
- 软件卸载:
yum remove -y xxx.rpm
- 软件安装:
1.6.2 deb和rpm格式的软件包安装
- deb格式的安装与卸载
- 软件安装:
sudo dpkg -i xxx.deb
- 软件卸载:
sudo dpkg -r 软件名
- 软件安装:
- rpm格式的安装与卸载
- 软件安装:
rpm -ivh xxx.rpm
- 软件更新:
rpm -Uvh xxx.rpm
- 软件卸载:
rpm -e 文件名
- 软件安装:
1.6.3 tar和zip的压缩与解压缩
- tar
- 参数
-z:用gzip来压缩/解压缩文件
-j:用bzip来压缩/解压缩文件
-c:创建新的压缩文件,与-x互斥使用
-x:从压缩文件中释放文件,与-c互斥使用
-v:详细报告tar处理文件
-f:指定压缩文件的名字
-t:查看压缩包中有哪些文件
- tar常用命令
- 打包:
tar -cvf 打包名字.tar 原材料[待打包的文件]
- 打包压缩:
tar -zcvf 压缩包名字.tar.gz 原材料
- 解包:
tar -xvf 已有的打包文件(.tar)
- 解压缩:
tar -zxvf 已有的压缩包文件(.tar.gz)
- 解压到指定目录:
tar -xvf 已有的打包文件(.tar) -C 解压目录
- 打包:
- 参数
- zip
- zip常用命令
- 压缩:
zip -r 压缩包名字 要压缩的文件(可以是目录)
- 解压缩:
unzip 压缩包名字 [-d 解压目录]
- 压缩:
- zip常用命令
2 vim补充
2.1 命令模式
-
代码格式化
"gg=G",可以用来格式化代码
-
光标移动
命令 含义 gg 光标移动到文件开头 G 光标移动到文件结尾 ^ 移动到行开头 $ 移动到行结尾 w 移动一个单词 nG 移动到第n行 shift+% 匹配对应的大括号 -
快速翻屏
命令 含义 ctrl+f 向上翻一屏(front) ctrl+b 向下翻一屏(back) -
删除
命令 含义 x/del 删除光标后面的一个字符 d0 删除当前行光标前面的所有内容 D 删除当前行光标后面的额所有内容 dd 删除光标所在的行 ndd 从当前行删除向下的n行 v和ctrl+v 可视化块删除(d删除,y复制,p粘贴) -
撤销和反撤销
命令 含义 u undo,撤销 ctrl+r 反撤销 -
复制粘贴
命令 含义 yy 复制光标所在的当前行 nyy 复制包括当前行的下面n行 p 在光标的下一行粘贴 -
查找和替换
命令 含义 /xxxx 从光标所在的位置开始搜索,n向下,N向上 r 替换当前字符 R 替换当前行光标后的字符
2.2 编辑模式
- 列插入
命令 含义 ctrl+v 先移动选择某列,按 I ,然后插入字符,最后按两次esc
(即可在选中的所有行前面插入)
2.3 末行模式
-
替换
命令 含义 :s/old/new/
光标所在行的第一个old替换成new :s/old/new/g
光标所在行的所有old替换成new :m,ns/old/new/g
将m~n行之间的所有old替换成new :%s/old/new/g
当前文件的所有old替换成new -
shell命令执行
命令 含义 !shell 执行shell命令 -
分屏操作
命令 含义 vsp 当前文件垂直分屏 vsp 文件名 当前文件和另一个文件垂直分屏 ctrl+w+w 多个窗口切换光标 wqall/qall! 退出都要加all
2.4 vim配置文件
~/.vimrc
,修改用户级别目录下的配置文件只会影响当前用户
set tabstop=4 #设置缩进为4个空格
set nu #设置行号
set nonu #取消行号设置
set shiftwidth=4 #设置gg=G缩进4个空格,默认是8个空格
3 gcc编译器
3.1 gcc 编译过程
预处理:把 .h, .c 文件展开形成一个.i 文件——宏定义展开、头文件展开、条件编译、去掉注释
gcc -E hello.c -o hello.i
编译:.i 文件生成一个汇编代码文件 .s——检查语法
gcc -S hello.i -o hello.s
汇编:.s 文件生成一个 .o 文件——二进制文件
gcc -c hello.s -o hello.o
链接:对 .o 文件进行链接,并将C语言依赖库链接到程序中
gcc hello.o -o hello
3.2 gcc常用参数
命令 | 含义 |
---|---|
-I | 指定头文件所在的路径 |
-L | 指定库文件所在的路径 |
-l | 指定库的名字 |
-g | 使用gdb调试必须要加 |
-On(n=1~3) | 编译优化,n越大优化的越多 |
-Wall | 提示更多的警告信息 |
-D | 编译时指定宏的值 |