清空命令行命令
Ctrl + l
查看内存命令
free -m
查看cpu命令
top
直观查看cpu的工具
安装
sudo apt-get install htop
命令
htop
清空屏幕命令1
clear
清空屏幕命令2
reset
当前用户
whoami
用户当前所在的工作目录
pwd
当前目录
./ 或 .
上一级目录
../ 或 ..
直接切换到当前用户的home目录
cd
或
cd ~
登录root用户
su root
退出root用户
exit
查看当前目录的文件
ls
显示所有的隐藏文件
ls -a
显示文件的详细属性信息(文件大小默认为字节显示)
ls -l
以人类可以直观文件大小的方式显示详细属性信息
ls -lh
直观的显示文件和目录
ls -F
ubuntu中
ll 相当于 ls -laF
查看要执行的命令所在的实际路径,命令解析器工作的时候也会搜索这个目录
- 需要注意的是该命令只能查看非内建的shell指令所在的实际路径
- 有些命令是直接写到内核中的, 无法查看
#查看可执行程序的位置:如查看pwd命令
which pwd
输出环境变量PATH
echo $PATH
查看输入的历史指令
history
自动补齐
Tab
创建目录
mkdir 新目录的名字
创建多层目录,需要加参数 -p
mkdir parent/child/baby1/baby2 -p
只能删除空目录
rmdir 目录名
删除目录或删除文件
- 删除目录需要加参数 -r, 递归的意思, 删除之后是不能恢复的
- -i: 删除的时候给提示
- -f: 强制删除文件,没有提示直接删除并且不能恢复,慎用
rm 目录名 -r
树状结构查看目录情况
安装
sudo apt install tree
命令
tree [-L n] # 查看当前目录的结构, n为显示的目录层数
tree 目录名 [-L n] # 查看指定目录的结构, n为显示的目录层数
tree -L 1
拷贝文件
cp 要拷贝的文件 得到的文件
拷贝目录需要参数 -r
#场景1: 目录A, 通过拷贝得到不存在的目录B
cp 目录A 目录B -r
#场景2: 目录A存在的, 目录B也是存在的, 目录A会被拷贝并将其放到目录B中
cp 目录A 目录B -r
#场景3: 把A目录里的某一个或者多个文件拷贝到B目录中
拷贝 A目录中的 a.txt 到目录B中
cp A/a.txt B
#拷贝A目录中的所有文件到目录B中, 不能确定A目录中是否有子目录, 因此需要加 -r
cp A/* B -r
文件的移动
- 有一个文件A, 移动到目录B中,其中A可以是文件也可以是目录, B必须是目录而且必须是存在的
mv 要移动的文件 目录
文件改名
- 其中A可以是文件也可以是目录,并且是存在的,B原来是不存在的
mv 要改名的文件 新名字(原来是不存在的,这点很重要)
文件覆盖
- 其中A是文件(非目录)并且是存在的, B也是一个文件(非目录)并且也存在
- A文件中的内容覆盖B文件中的内容, A文件被删除, 只剩下B文件
mv 存在文件A 存在的文件B
将文件内容显示到终端(大数据只能显示部分内容)
cat 文件名
以翻屏的方式查看文件中的内容1
- 回车: 显示下一行
- 空格: 向下滚动一屏
- b: 返回上一屏
- q: 退出more
more 文件名
以翻屏的方式查看文件中的内容2
- b: 向上翻页
- 空格: 向后翻页
- 回车: 显示下一行
- 上下键: 上下滚动
- q:退出
less 文件名
查看文件头部的若干行信息
- 默认显示文件的前10行
head 文件名
指定显示头部的前多少行
head -行数 文件名
查看文件尾部的若干行信息
- 默认显示文件的后10行
tail 文件名
指定显示尾部的最后多少行
tail -行数 文件名
创建软链接
ln -s 源文件路径(建议绝对路径,这样软链接移动位置后依旧能够实现链接) 软链接文件的名字(可以带路径)
创建硬链接
- 目录是不允许创建硬链接
ln 源文件 硬链接文件的名字(可以带路径)
修改文件文件权限
文字设定法
- who:
- u: user -> 文件所有者
- g: group -> 文件所属组用户
- o: other -> 其他
- a: all, 以上是三类人 u+g+o
- 对权限的操作:
- +: 添加权限
- -: 去除权限
- =: 权限的覆盖
- mod: 权限
- r: read, 读
- w: write, 写
- x: execute, 执行
- -: 没有权限
chmod who [+|-|=] mod 文件名
#将文件所有者权限设置为读和执行, 也就是权限覆盖
chmod u=rx b.txt
数字设定法
- 对权限的操作:
- +: 添加权限
- -: 去除权限
- =: 权限的覆盖, 等号可以不写
- mod: 权限描述, 所有权限都放开是 7
- 4: read, r
- 2: write, w
- 1: execute , x
- 0: 没有权限
- 5: r + x
- 6: r + w
- 3: w + x
- 7: r + w + x
权限的开头八进制表示符0可以省略
chmod 0567 a.txt
修改文件所有者
- 只修改所有者
sudo chown 新的所有者 文件名
sudo chown lisi a.txt
- 同时修改所有者和所属组
sudo chown 新的所有者:新的组名 文件名
sudo chown lisi:zhangsan a.txt
修改文件所属组
sudo chgrp 新的组 文件名
sudo chgrp lisi a.txt
创建一个新的空文件
- 如果指定的文件是已存在的,只会更新文件的修改日期,对内容没有任何影响
touch 文件名
在终端打印字符串
echo 字符串
echo hello,world
输出日期
date
重定向
> #将文件内容写入到指定文件中,如果文件中已有数据,则会使用新数据覆盖原数据
>> #将输出的内容追加到指定的文件尾部
#日期信息被写入到文件 test.txt中
date > test.txt
#日期信息被追加到 test.txt中
date >> test.txt
切换用户
- su只切换用户,当前的工作目录不会变化
- su - 不仅会切换用户也会切换工作目录,工作目录切换为当前用户的家目录
- 从用户 A 切换到用户 B, 如果还想再切换回用户 A,可以直接使用 exit
su 用户名
su - 用户名
exit
添加新用户
#所有linux版本
sudo adduser 用户名
#ubuntu -m: 创建用户家目录 -s: 设置命令解析器
sudo useradd -m -s /bin/bash 用户名
删除用户
#所有linux版本
#删除用户, 添加参数 -r 就可以一并删除用户的家目录了
sudo userdel 用户名 -r
#ubuntu也支持deluser
#deluser不能添加参数-r, 家目录不能被删除, 需要使用 rm 命令删除用户的家目录
sudo rm /home/用户名 -r
添加删除用户组
#基于普通用户创建新的用户组
sudo groupadd 组名
#基于普通用户删除已经存在的用户组
sudo groupdel 组名
修改密码
#修改当前用户
passwd
#修改非当前用户密码
sudo passwd 用户名
#修改root
sudo passwd root
压缩 (.tar.gz .tar.bz2 .tgz)
- .tgz 文件就等同于 .tar.gz 文件
- c: 创建压缩文件
- z: 使用 gzip 的方式进行文件压缩
- j: 使用 bzip2 的方式进行文件压缩
- v: 压缩过程中显示压缩信息,可以省略不写
- f: 指定压缩包的名字
- 压缩使用 gzip 方式, 标准后缀格式为: .tar.gz
- 压缩使用 bzip2 方式, 标准后缀格式为: .tar.bz2
tar 参数 生成的压缩包的名字 要压缩的文件(文件或者目录)
#压缩目录中所有文件
tar zcvf all.tar.gz *
tar jcvf part.tar.bz2 a.txt b.txt
解压缩 (.tar.gz .tar.bz2 .tgz)
- .tgz 文件就等同于 .tar.gz 文件
- x: 释放压缩文件内容
- z: 使用 gzip 的方式进行文件压缩,压缩包后缀为.tar.gz
- j: 使用 bzip2 的方式进行文件压缩,压缩包后缀为.tar.bz2
- v: 解压缩过程中显示解压缩信息
- f: 指定压缩包的名字
- 解压到指定目录,需要指定参数 -C
#语法1: 解压到当前目录中
tar 参数 压缩包名
#语法2: 解压到指定目录中
tar 参数 压缩包名 -C 解压目录
#将 all.tar.gz 压缩包解压缩到 temp 目录中
tar zxvf all.tar.gz -C temp
zip安装
#ubuntu
sudo apt install zip #压缩
sudo apt install unzip #解压缩
压缩 (.zip)
#自动添加压缩包后缀 .zip, 如果要压缩目录, 需要添加参数-r
zip [-r] 压缩包名 要压缩的文件
zip all a.txt b.txt -r
解压缩 (.zip)
#解压到当前目录中
unzip 压缩包名
#解压到指定目录, 需要添加参数 -d
unzip 压缩包名 -d 解压目录
#将 all.zip 解压缩到 temp 目录中
unzip all.zip -d temp/
rar安装
#ubuntu
sudo apt install rar
压缩 (.rar)
#文件压缩, 需要使用参数 a, 压缩包名会自动添加后缀 .rar
#如果压缩了目录, 需要加参数 -r
rar a 压缩包名 要压缩的文件 [-r]
rar a all a.txt b.txt -r
解压缩 (.rar)
#解压缩: 需要参数 x
#解压缩到当前目录中
rar/unrar x 压缩包名字
#解压缩到指定目录中
rar/unrar x 压缩包名字 解压目录
rar x all.rar temp/
压缩(.tar.xz)
#第一步
tar cvf xxx.tar 要压缩的文件
#第二步, 最终得到一个xxx.tar.xz 格式的压缩文件, 上一步得到的.tar没有了
xz -z xxx.tar
tar cvf all.tar a.txt b.txt
xz -z all.tar
解压缩 (.tar.xz)
#第一步: 压缩包解压缩, 得到 xxx.tar
xz -d xxx.tar.xz
#第二步: 将 xxx.tar 中的文件释放到当前目录
tar xvf xxx.tar
xz -d all.tar.xz
tar xvf all.tar
find
- 文件名 (-name)
- 精确查询
- 模糊查询: * 可以匹配零个或者多个字符, ?用于匹配单个字符
- 模糊查询,建议(非必须)将带有通配符的文件名写到引号中(单引号或者双引号都可以)
#根据文件名搜索
find 搜索的路径 -name 要搜索的文件名
find /root -name "a.txt"
find /root -name "*.txt"
- 文件类型 (-type)
- 普通文件类型 f
- 目录类型 d
- 软连接类型 l
- 字符设备类型 c
- 块设备类型 b
- 管道类型 p
- 本地套接字类型 s
find 搜索的路径 -type 文件类型
find /root -type l
- 文件大小 (-size)
- k(小写), M(大写), G(大写)
- -size 4k: 表示的区间为 (4-1k,4k], 表示一个区间,大于 3k, 小于等于 4k
- -size -4k: [0k, 4-1k], 表示一个区间,大于等于 0 并且 小于等于 3k
- -size +4k: (4k, 正无穷), 表示搜索大于 4k 的文件
find 搜索的路径 -size [+|-]文件大小
find ./ -size -3M
#搜索当前目录下 大于1M 并且 小于等于 3M 的文件
find ./ -size +1M -size -4M
- 目录层级
- -maxdepth: 最多搜索到第多少层目录,
- -mindepth: 至少从第多少层开始搜索
- 这两个参数不能单独使用, 必须和其他属性一起使用
- 必修写在其他属性前,参数必须按着下面例子的顺序
#查找文件, 从根目录开始, 最多搜索5层, 这个文件叫做 *.txt (1 <= 层数 <= 5)
sudo find / -maxdepth 5 -name "*.txt"
#查找文件, 从根目录开始, 至少从第5层开始搜索, 这个文件叫做 *.txt (层数>=5层)
sudo find / -mindepth 5 -name "*.txt"
同时执行多个操作
- exec
- 在exec参数后添加其他需要被执行的shell命令
- 命令的尾部需要加一个后缀 {} ;
find 路径 参数 参数值 -exec shell命令2 {} \;
find ./ -maxdepth 2 -name "*.txt" -exec ls -l {} \;
- ok
- -ok 和 -exec 都是 find 命令的参数,使用方式类似,但是这个参数是交互式的
find 路径 参数 参数值 -ok shell命令2 {} \;
find ./ -maxdepth 1 -name "*.txt" -ok ls -l {} \;
find ./ -maxdepth 1 -name "*.txt" -ok rm -rf {} \;
- xargs
- xargs的效率比使用 -exec 效率高
- -exec: 将find查询的结果逐条传递给后边的shell命令
- -xargs: 将find查询的结果一次性传递给后边的shell命令
find 路径 参数 参数值 | xargs shell命令2
find ./ -maxdepth 1 -name "*.cpp" | xargs ls -l
grep
- -r: 如果需要搜索目录中的文件内容,需要进行递归操作,必须指定该参数
- -i: 对应要搜索的关键字,忽略字符大小写的差别
- -n: 在显示符合样式的那一行之前,标示出该行的编号
#对应要搜索的文件内容,建议放到引号(单双都可以)中
grep "搜索的内容" 搜索的路径/文件 参数
grep "include" ./ -rn
locate
- 在使用locate之前,先使用updatedb命令,手动更新数据库
#使用管理员权限更新本地数据库文件
sudo updatedb
locate test # 搜索所有目录下以 test 开头的文件
#搜索指定目录下以某个关键字开头的文件,指定的目录必须要使用绝对路径
locate /home/zhang3/test
#搜索文件的时候,忽略文件名的大小写,使用参数 -i
locate TEST -i
#列出前 n 个匹配到的文件名称或路径名称,使用参数 -n
locate test -n 5
#基于正则表达式进行文件名匹配,查找符合条件的文件,使用参数 -r
locate -r "\.cpp$"