1. 一些小知识
- 版本号16.04、18.04 … 中的04表示4月发布的。4月发布的是稳定版LTS,10月发布的是测试版beta。
- 文件或目录颜色一般情况
- 白色——普通文件
- 绿色——可执行文件
- 红色——压缩文件
- 蓝色——目录
- 青色——链接文件
- 黄色——设备文件
- 灰色——其他文件
- 白色——普通文件
- 命令选项前的横杠 (-)
- 大多数命令选项前有横杠(-) (System V风格)
ls -arm -r dir- 有些命令选项前有没有横杠都行(BSD风格)
tar -xvf filenametar xvf filenameps -auxps aux- 一般格式
- 接字母(- h)
- — 接单词(— help)
- 大多数命令选项前有横杠(-) (System V风格)
2. shell常用快捷键
- shell — unix — Bourne shell
bash — linux — Bourne again shell
补齐
光标移动
光标向右移动——ctrl + f(Forward)
- 光标向左移动——ctrl + b(backward)
- 光标移动到头部——ctrl+a (ahead)
-
字符删除
删除光标后的字符——ctrl+d
- 删除光标前的字符——ctrl+h/删除键
- 删除光标前所有字符——ctrl+u
- 删除光标后所有字符——ctrl+k
3. Linux目录结构
- /bin
- binary 二进制文件,可执行程序,shell命令
- /dev
- device,一切皆文件,硬盘、显卡、显示器
- /lib
- 程序运行时需要加载的一些动态库
- /lib/x86_64-linux-gnu:libc
- /mnt
- 手动挂载目录
- /media
- 外设的自动挂载目录
- /root
- root用户的home目录
- /usr
- unix system resource
- 头文件—stdio.h stdlib.h :usr/include
- 游戏
- 用户安装的应用程序:/usr/local
- /etc
- 存放配置文件
- /etc/passwd
- /etc/group
- /opt
- 安装第三方应用程序
- /home
- linux操作系统所有非root用户的家目录
- /tmp
- 存放临时文件,重启电脑时会清空
4. 文件和目录相关命令
tree
tree查看当前目录结构tree dir查看指定目录结构
ls
- -a 查看所有目录
- -l 查看详细信息:Linux 的 ls 和 ll 的使用方法 ```shell -rwxr-xr-x 1 lzx lzx 3454 10月 30 00:29 docker-compose.yml
第一个字符(-):文件的类型(7种):
- 普通文件:- (.txt、压缩包、可执行程序)
- 目录:d
- 符号链接:l
- 管道:p
- 套接字:s
- 字符设备:c(键盘、鼠标)
- 块设备:b(U盘、硬盘)
三种类型的用户(rwxr-xr-x):
- 文件所有者:user —— rwx
- 文件所属组用户:group —— r-x
- 其他人:other —— r-x
1:硬链接计数
第一个lzx:
- 文件所有者
第二个lzx:
- 文件所属组
3454:文件大小
- 如果是目录,一定是4K(4096)
10月 30 00:29:时间
docker-compose.yml 文件名 ```

cd
- 切换最近切换的两个目录,适用于很长的目录。

mkdir
- 一次创建多级目录:
mkdir aa/bb/cc -p
touch
- 如果文件不存在,创建文件
- 如果文件存在,更新时间
rmdir
- 只能删除空目录
rm
rm -r dir递归删除目录(即删除目录dir下所有文件和目录)rm file删除文件rm -i file/dir删除的时候给提示
cp
cp file1 file2(不存在):创建file2,然后拷贝file1内容到file2cp file1 file2(存在):file1覆盖file2cp file1 dir1(存在):file 拷贝到dir1目录下cp -r dir1(存在) dir2(存在):将dir1拷贝到dir2下,包括dir1目录cp -r dir1(存在) dir2(不存在):创建dir2,然后将dir1的内容拷贝到dir2下,不包括dir1目录
mv
- 改名
mv file1(存在) file2(不存在)mv dir1(存在) dir2(不存在)
- 移动
mv file1(存在) dir1(存在)mv dir1(存在) dir2(存在)
mv file1(存在) file2(存在)file1覆盖file2,然后删除file1
cat
小文件
vim
more
大文件
- more filename
- 一行一行向下:回车键
- 翻页:空格键
- 退出:q
less
- less filename
- 向下一行:回车,ctrl+n
- 向上一行:ctrl+p
- 向下翻页:空格/pagedown
- 向上翻页:pageup
- 退出:q
head
默认显示头部前10行head -行数 文件名
tail
默认显示尾部10行tail -行数 文件名
5. 软硬链接 ln
- 软链接 — 快捷方式
ln -s 文件名 快捷方式的名字- 文件名:使用绝对路径
- 生成的软链接大小就是文件名(路径)的长度(字节为单位)
- 目录也可以创建软链接
- 硬链接
ln 文件名 硬链接的名字

- inode是给操作系统看的。
- 文件名是给用户看的。
- 访问file1文件,其实就是访问其对应的inode,通过inode找到磁盘里对应的数据块。
6. 用户权限、用户和用户组
chmod — 修改文件或目录权限 (change mode)
- 文字设定法
chmod who[+|-|=]mode 文件名- who
- u——user,文件所有者
- g——group,文件所属组
- o——other,其他人
- a——all,所有的(默认)
- +|-|=
- +——添加权限
- -——削减权限
- =——覆盖权限
- mode
- r —— 读
- w —— 写
- x —— 执行
- —— 没有任何权限
- who
- 示例:rwxrwxrwx — file
- 文件所有者和其他人 减去读写权限:
chmod uo-rw file - 所有者添加读权限,同组用户减去执行权限:
chmod u+r,g-x file
- 文件所有者和其他人 减去读写权限:
- 数字设定法
chmod [+|-|=]mode 文件名- mode:八进制的数(eg. 0756)
- r:4
- w:2
- x:1
- -:0
- 0756
- 0:八进制
- 7:rwx - 文件所有者
- 5:r-x - 文件所属组
- 6:rw- - 其他人
- mode:八进制的数(eg. 0756)
- 示例1:
--xrwx--x 1 itheima itheima 0 10 月 18 15:51 file- 所有者和同组用户的权限设置为 -wx:
chmod 331 file - 其他人只有执行权限:
chmod 331 file
- 所有者和同组用户的权限设置为 -wx:
- 文件权限:777给所有者和所属组减去r:
chmod -440 file
如果所有人初始权限为777,给所有人减去x权限,那么命令应该是
chmod a-x file。 如果输入chmod -x file,那么只会把文件所有人和文件所属组的x权限减去,其他人的x权限不会减去。
chown — 修改文件所有者/所属组 (change owner)
chown 新的所有者 文件名chown 新的所有者:新的组 文件名
chgrp — 修改文件所属组(change group)
chgrp 新的组 文件名
7. 文件查找和检索
find — 根据文件属性查找
- 文件名
find 查找目录 -name "查找的文件名"
- 文件类型
find 查找目录 -type 文件类型- 普通文件:f
- 目录:d
- 符号链接:l
- 管道:p
- 套接字:s
- 字符设备:c
- 块设备:b
- 文件大小
find 查找目录 -size -10M- +:大于 +10k
- -: 小于 -10k
- 等于10k:10k
- 单位:
- k - 小写
- M - 大写
- 大于10k,小于100k:
find . -size +10k -size -100k
- 按日期
- 创建日期: -ctime -n/+n
- -n : n天以内
- +n:n天以前
find . -ctime -1:搜索一天以内创建的文件和目录
- 修改日期: -mtime -n/+n
- 访问日期: -atime -n/+n
- 创建日期: -ctime -n/+n
- 深度
- maxdepth n(层数):搜索n层以下的目录
- mindepth n(层数):搜索n层以上的目录

高级查找
例:查找指定目录,并列出该目录中文件详细信息
- exec:
find ./ -type d -exec shell命令(ls -l){} \; - ok:
find ./ -type d -ok shell命令(ls -l) {} \;- ok比exec更安全
- exec:

- 管道+xargs:
find ./ -type d | xargs shell命令(ls -l)

grep — 根据文件内容查找
grep -r(有目录) "查找的内容" 搜索路径搜索home目录中带有helloword字符串的文件
find 搜索的路径 参数 搜索的内容grep 搜索的内容 参数 搜索的路径
8. 压缩包管理
常见压缩格式
- .gz — gzip/gunzip
- .bz2 — bzip2/bunzip2
这两类压缩包我们一般不直接用,因为:它们只能压缩文件,不能压缩目录,而且不能把多个文件压缩到一个压缩包里,只能分开压缩,而且不保留原文件。
tar - 打包
- 参数
- c - 创建压缩文件
- x - 释放压缩文件
- v - 打印提示信息(可不写)
- f - 指定压缩包的名字
- z - 使用gzip的方式压缩文件 - xxx.tar.gz
- j - 使用bzip2的方式压缩文件 — xxx.tar.bz2
命令:
tar 参数 压缩包的名字 原材料需要安装:
sudo apt-get install rar- 压缩
rar a 压缩包名(不用指定后缀) 压缩内容- 压缩目录要加参数 -r
- 解压缩
rar x 压缩包名 解压目录
zip/unzip
- 压缩
zip 参数 压缩包名 原材料- 如果有目录:-r
解压缩
压缩
tar/rar/zip 参数 压缩包名 原材料
- 解压缩
tar/rar/unzip 参数 压缩包名 参数 解压路径- rar解压缩到指定目录不需要指定参数
- unzip 不需要解压参数
9. 软件安装和卸载
- 在线安装
- 安装:
sudo apt-get(apt) install 安装包的名字(Ubuntu16.0以后可简写成apt) - 卸载:
sudo apt-get(apt) remove 软件的名字 - 软件列表的更新:
sudo apt-get(apt) update - 清空缓存:
sudo apt-get(apt) clean- /var/cache/apt/archives
- xxx.deb
- 安装:
- 软件包安装
- 安装:
sudo dpkg -i xxx.deb(dpkg:deb package; -i:install) - 卸载:
sudo dpkg -r 软件的名字(-r:remove)
- 安装:
- 源码安装
- 看readme,一般是
./configuremakemake verify # (optional)sudo make install
- 看readme,一般是
10. vim
帮助文档:shell命令——vimtutor
三种工作模式
- 命令模式
- 编辑模式
- 末行模式
命令模式下的相关操作
- 保存退出:ZZ
- 代码格式化:gg=G
- 光标的移动
- 上下左右:HJKL
- 光标移动到行首:0(零)
- 光标移动到行尾:$
- 光标移动到文件首部:gg
- 光标移动到文件末尾:G
- 行跳转到第123行:123G
- 行号n回车:当前行向下移动n行
- 删除命令
- 删除字符
- 光标前的字符:X
- 光标后的字符:x
- 删除单词:dw
- 删除整个单词,光标应该在单词的最前边
- 删除光标前的字符串:d0
- 删除光标后的字符串:d$(D)
- 删除行:dd(删除光标所在行)
- 删除多行:ndd
- n:行数
- 删除字符
- 撤销和反撤销
- 撤销:u
- 反撤销:ctrl+r
- 复制和粘贴:
- 复制:
- 1行:yy
- 多行:nyy
- 粘贴:
- p:粘贴到光标的下一行
- P:粘贴到光标的上一行
- 复制:
- 可视模式:v
- 移动光标:hjkl
- 复制:y
- 删除:d
- 粘贴:
- p:粘贴到光标的后面
- P:粘贴到光标的前面
- 替换
- r:替换一个,光标盖住的字符
- R:替换多个,从光标盖住的这个往后替换
- 查找命令
查看man文档
a:从光标后开始插入
- A:从光标所在行的行尾开始插入
- i;从光标前开始插入
- I:从光标所在行的行首开始插入
- o:从光标所在行的下面创建新行
- O:从光标所在行的上面创建新行
- s:删除光标盖住的字符
- S:删除光标所在行
末行模式相关操作
- 命令模式->末行模式
- 键盘录入冒号(:)
- 保存退出
- 保存不退出:w
- 退出:q
- 退出不保存:q!
- 保存退出:wq(或x)
- 行跳转
- 行号+回车
- 替换
- 替换光标所在行的字符串
:s/old/new/gc- g:替换当前行所有的old
- c:替换的时候加上提示信息
- 替换一个范围
:``x,y``s/old/new/gc- x,y是一个范围(行数)
- 替换当前文档所有的
:%s/old/new/gc
- 替换光标所在行的字符串
- 分屏
- 当前文件分屏
- 水平:sp
- 垂直:vsp
- 两个屏幕显示不同的文件
- 水平:sp 文件名
- 垂直:vsp 文件名
- 屏幕的切换:
- ctrl+w+w
- 打开的时候分屏
- 水平:vim -on 文件名 文件名
- 垂直:vim -On 文件名 文件名
- n可以省略,代表分屏的个数
- 屏幕的关闭
- 关闭所有:qall
- 保存关闭所有:wqall
- 保存所有:wall
- 当前文件分屏
- 执行shell命令
- :!+命令
- 末行模式-> 命令模式
- 两次esc
- 末行模式下执行一个命令
配置文件
- 用户级别:~/.vimrc
- 系统级别:/etc/vim/vimrc

