命令:
在虚拟中断输入命令,shell会解析输入的命令,搜索环境变量:路径,找到了输入的命令,运行这个程序
History:历史输入命令
快捷键:
删除光标前所有的字符:ctrl+u
删除光标后所有的字符:ctrl+k
移动到最头部:ctrl+a
移动到最尾部:ctrl+e
Tab:按一次:补全命令和目录名
按两次:列出此单词开头的命令和目录
目录结构:linux目录结构为树
/ :根目录
. :当前目录
.. : 当前目录的上级目录
Sudo:管理员权限
Tree: 查看目录结构,需要安装 sudo apt-get install tree :使用apt-get 安装 tree
Ls:查看文件或目录
-a:显示所有文件
隐藏文件:文件或目录名前边有一个点
-l:详细信息、-lh 带单位的详细信息
例如:-rwxrw-r-- 1 zhaofei zhaofei 3231145 11月 23 23:08 vimplus.tar.gz
第一个字符:文件的类型
7种:
普通文件:-
目录:d
符号链接: l
管道: p
套接字:s :socket
字符设备: c
键盘、鼠标
块设备: b
U盘、硬盘
Rwx :文件所有者权限
Rw- :文件所属组用户
R-- :其他人
1:硬链接计数
Zhaofei: 文件所有者
Zhaofei:文件所属组的名字
3231145 :文件大小
如果是目录,大小为4k
11月 23 23:08 :日期
vimplus.tar.gz :文件名
Cd ~ :进入家目录
Mkdir:创建目录
Mkdir 目录名
-p:创建多级目录
Touch:创建文件
Touch 文件名:如果不存在,创建文件
如果存在,更新文件的时间
Rmdir: 只能删除空目录
Rm :删除文件或目录
Rm 目录名 -ri
-r:用递归的方式处理
-i:删除的时候提示
Rm 文件名 -i
Cp : 拷贝 cp a b 把a的内容拷贝到 b,如果b不存在,创建b 再拷贝
拷贝目录要 -r 递归拷贝
Cp dir(存在) dir1(存在) -r
将dir1目录整个拷贝到dir目录中,包括dir目录
Cp dir(存在) dir1(不存在) -r
创建 dir1
只将dir中的内容拷贝到dir1中,不包括dir目录
Mv: 改名或者移动文件
Mv file(存在) file1(存在)
file会覆盖file1,file会被删除
改名:
Mv file(存在) file1(不存在) file为文件
Mv dir(存在) dir1(不存在) dir为目录
移动:
Mv file(文件) dir(存在目录)
Mv dir(目录存在) dir1(目录存在)
查看文件内容:
Cat
Cat filename : 将文件的内容打印到终端
More
More filename : 另开辟一块缓存打开文件内容
Pwd:显示当前所在目录
$:当前用户为普通用户
#:当前用户为超级用户
~:用户的家目录 <==> /home/zhaofei
根目录下常见目录:
/boot:开机启动项
/bin: binary,二进制文件,可执行程序,shell命令
/dev:device,设备,linux下一切皆文件,将硬盘、显卡、显示器抽象成文件
/lib:linux运行的时候需要加载的动态库
/mnt:手动的挂在目录
/media:外设的自动挂在目录
/root:linux的超级用户的家目录
/usr:unix system resource 系统资源目录:头文件、游戏
/usr/local:用户安装的程序
/etc:存放配置文件
/etc/passwd:用户
/etc/group:用户组
/opt:安装第三方应用程序
/home:linux操作系统所有用户的家目录(宿主目录)
/tmp:存放临时文件,重启电脑时会清空
软硬链接:ln
软链接 :快捷方式:大小为路径的字符数量
Ln - s 文件名(使用绝对路径) 快捷方式的名字
硬链接:为文件起个别名,不占用空间。每个文件都有索引节点号 inode,inode指向 磁盘中的数据块,为文件创建一个硬链接,两个文件名指向的索引节点号是同 一个,指向同一块内存
1.创建一个新文件:硬链接计数为1
2.给文件创建了硬链接:硬链接计数为2
3.删除一个硬链接:硬链接计数为1
4.再删除硬链接计数对应的文件:0
Filename ==> 索引节点号 inode ==> 磁盘的数据块
Ln 文件名 硬链接的名字
用户权限、用户和用户组:
1.chmod : 修改文件或目录权限
文字设定法:
Chmod who [+|-|=] mode 文件名
Who:
U :user,文件所有者
G :group ,文件所属组
O: other ,其他人
A: all,以上所有人(默认值)
+|-|= := 覆盖
Mode:
R:读
W:写
X:执行
-:没有任何权限
练习:chmod uo-rw file.c :去掉文件所有者和其他人读写权限 chmod u+r,g-x file.c 文件所有者加读,同组用户减执行
数字设定法:
Chomd [+|-|=] mode 文件名
Mode:八进制的数 0777: 0表示八进制
第一个数字表示文件所有者的权限
第二个数字表示用户用户的权限
第三个数字表示其他人的权限
R : 4
W: 2
X: 1
-: 0
例如:0750
0:八进制
7:rwx :文件所有者的权限
5:r-x :同组用户的权限
0: ---:其他人的权限不修改
2.chown : 修改文件所有者或所属组
Chown 新的所有者 文件名
Chown 新的所有者:新的所属组 文件名
3.chgrp : 修改文件所属组
文件查找和检索:
1.根据文件属性查找 find
文件名:
Find 查找的目录名 -name “查找的文件名”
Find . -name “*” :查找当前目录下所有文件
文件类型:
Find 查找目录 -type 文件类型
Find . -type f 查找当前目录下的普通文件
普通文件:在这用f 表示
目录:d
符号链接:l
文件大小:
Find 查找目录 -size 10M 查找等于10M的文件
+: 大于
-:小于
单位:
K:小写
M:大写
当前目录下查找大于10k小于100k
Find . -size +10k -size -100K
按日期:
创建日期 :-ctime -n/+n
-n: n天以内
+n : n天以外
Find . -ctime -1 查找当前目录1天以内创建的
修改日期:-mtime -n/+n
访问日期:-atime -n/+n
按深度:
-maxdepth n 最深查找到第n层
-mindepth n 搜索n层以上
高级查找:
例:查找指定目录,并列出该目录中文件详细信息
Find ./ -type d -exec ls -l {} \;
Find ./ -type d -ok ls -l {} \;
ok比 exec安全些
Find ./ -type d | xargs ls-l(shell 命令)
| :管道
2.根据文件内容查找 : grep
Grep -r(有子目录时加 -r ) “查找的内容” 搜索的路径 -n(显示查到的字符串在第几行)
例如:搜索家目录中带 hello 字符串的文件
Grep -r “hello” ~
3.总结:
(1)Find 搜索的路径 参数 搜索的内容
(2)Grep 搜索的内容 参数 搜索的路径
压缩包管理:
1.linux 下常见压缩格式
.gz 是用gzip压缩出来的
.bz2 用bzip2压缩出来的
2.常用压缩命令
Tar : 打包
参数:
C: 创建压缩文件
X: 释放压缩文件
V: 打印提示信息(可不写)
F: 指定压缩包的名字
Z: 使用gzip压缩文件 --xxx.tar.gz
J: 使用bzip2的方式压缩文件 --xxx.tar.bz2
压缩:
Tar 参数 压缩包的名字 要压缩的东西
例如:用 gz 的方式将文件 file1 目录 dir1压缩到一起
Tar zcvf test.tar.gz file1 dir1
解压:
Tar zxvf test.tar.gz
Tar zxvf test.tar.gz -C 目录 :解压到指定目录
Rar:
Rar 需要安装
Sudo apt-get install rar
压缩:
Rar a 压缩包名(不需要指定后缀) 要压缩的东西
压缩目录要加 -r 进行递归压缩
解压:
Rar x 压缩包的名字 目录
Zip/unzip:
压缩:
Zip 参数 压缩包名 要压缩的东西
参数:如果有目录: -r
解压:
Unzip 压缩包的名字 -d 解压目录
3.总结:
压缩:
Tar/rar 参数 压缩包名 原材料
解压缩:
Tar/rar 参数 压缩包名 参数 解压路径
rar解压到指定目录时不需要参数
软件的安装和卸载:
1.在线安装: ubuntu环境下
安装:管理员权限 sudo apt-get(apt) install 安装包的名字
卸载:sudo apt-get(apt) remove 软件的名字
软件列表的更新:sudo apt-get(apt) update :更新了软件列表下的软件
清空缓存的安装包 :sudo apt-get(apt) clean :/var/cache/apt/archives
2.软件包安装(Ubuntu下 .deb格式)
安装:sudo dpkg -i xxx.deb -i:install
卸载:sudo dpkg -r 软件的名字 -r : remove
Vim相关:vim是vi的扩展
Gui:用户图形接口
1.vim需要自己安装
Shell敲命令:vimtutor : vim向导
2.vim是三种工作模式
1.命令模式
2.编辑模式
3.末行模式
3.vim命令模式下的相关操作
(1)保存退出:ZZ(不会创建新文件)
(2)代码格式化:gg=G
(3)光标的移动
HJKL:左下上右
光标移动到行首:0 (零)
....................行尾:$
光标移动到文件头部:gg
....................文件尾部:G
跳转到第200行:200G
4.删除命令 : 删除其实是剪贴
(1)删除字符
光标前的字符:X
光标后的字符:x
(2)删除光标前字符串:d0
(3)删除光标后字符串:d$ <==> D
(4)删除光标所在行:dd
(5)从光标所在行向下删除3行:3dd
(6)删除光标所在行及下面所有内容:dG :按了d以后,将光标移动到尾部
(7)删除.......................上面.................: dgg :按了d以后,将光标移动到头部
5.撤销和反撤销
撤销:u
反撤销:ctrl+r
6.复制和粘贴
复制:
1行:yy
n行:nyy
粘贴:
p(小写):粘贴到光标的下边一行
P(大写):..............上边一行
7.可视模式:v
(1)移动光标:hjkl
(2)复制:y
(3)删除:d
(4)粘贴:
①P(小写):粘贴到光标的后边
②P(大写):粘贴到光标的前边
8.替换操作:
(1)替换一个,光标盖住的字符: r
(2)替换多个,从光标盖住的这个往后替换:R
9.查找
(1)/xxx
(2)?xxx
1)用n查看下一个关键字的位置,N查看上一个关键字的位置
(3)将光标移动到某个单词下,按# 会将所选单词都显示出来,nN切换
10.查看man文档
章节号+K(大写)
11.命令模式切换到文本编辑模式
(1)a:从光标的后面开始插入字符。A:从行尾插入
(2)i:从光标的前面开始插入字符。I:从行首插入
(3)o(小写):在光标所在下面创建一行进行插入。O:在光标所在上面创建一行进行插入
(4)s(小写):删除光标盖住的字符。S:删除光标所在行
(5)从编辑模式切换回命令模式:esc
12.Vim末行模式下相关操作:
(1)从命令模式 -> 末行模式
1)键盘输入冒号(:)
(2)末行模式下的命令:
①输入行号,实现行跳转
②保存不退出:w
③退出:q
④退出不保存:q!
⑤保存退出:wq == x (会创建新文件)
(2)末行模式 -> 命令模式:两次esc
(3)替换:
①替换光标所在行的字符串:
1):s/old/new/gc old:要被替换的字符串,new:要替换的字符串
a.参数g:替换当前行所有的old ,如果不加,只替换第一个
b.参数c:替换时提示,是否确认替换
②替换一个范围
1):x,ys/old/new/gc x,y是一个范围(行数)
③替换当前文档所有的
1):%s/old/new/gc
(4)分屏:水平分屏还是垂直分屏是根据分隔线
①当前文件分屏
1)水平:sp
2)垂直:vsp
②两个屏幕显示不同的文件
1)水平:sp 文件名
2)垂直: vsp 文件名
③屏幕的关闭
1)关闭所有:qall
2)保存关闭所有:wqall
3)保存所有:wall
④屏幕的切换
1)Ctrl+w+w
⑤打开的时候分屏
1)水平:vim -on 文件名 文件名
2)垂直:vim -On 文件名 文件名
a.n可以省略,表示分屏的个数
(5)末行模式下执行shell命令
①:!+shell命令
13.Vim配置文件
(1)用户级别
①~/.vimrc
(2)系统级别
①/etc/vim/vimrc
gcc相关:
1.gcc工作流程
(1)预处理
①调用预处理器 (cpp)
②参数:-E
③宏替换
④头文件展开
⑤注释去掉
⑥Xxx.c -> xxx.i(还是c文件)
(2)编译(时间最长)
①调用编译器(gcc)
②参数:-S
③Xxx.i -> xxx.s(汇编文件)
(3)汇编
①调用汇编器(as)
②参数: -c (小写)
③Xxx.s -> xxx.o(二进制文件)
(4)链接(没有参数)
①调用链接器 (Ld)
②Xxx.o -> xxx(可执行程序)
③gcc xxx.c -o app 直接生成一个名为app的可执行程序
1)-o : 指定生成的名字
2.gcc 常用参数
(1)-v / -version :版本
(2)-I(大写i):编译的时候指定头文件路径
(3)-c:将汇编文件生成二进制文件(.o)
(4)-o:指定生成文件的名字