通配符
*
匹配 0 个或者多个字符?
匹配一个字符[abcd]
匹配 abcd 中任意一个字符[a-z]
匹配 a-z 任意一个字符[!abc]
不匹配括号内任意一个字符,或者用^
代替!
linux 的文件目录
[!note]
- 磁盘结构——树状,与 Windows 不同
ls /
把根的目录显示出sudo apt-get install openssh -server
安装 ssh 服务sudo service ssh start
启动 ssh 命令/etc/init.d/ssh restart
重启 ssh 服务
目录结构
- bin
- 存放命令
- binary 的缩写
- boot
- 系统启动所需的目录
- dev
- 设备文件,把设备抽象成文件
- device 缩写
- etc
- 系统所需的配置文件
- home
- 存放用户文件的目录,可以是不同用户的
- lib
- 动态库,给应用程序使用
- library 缩写
- lost+found
- 异常关机产生的
- media
- 自动挂载的设备
- mnt
- 手动挂载的目录
- 一般是空的,需要手动创建目录
- opt
- 安装的文件的目录
- 类似 usr 目录
- proc
- 放进程有关的信息
- process
- root
- root 用户的文件
- sbin
- super usr
- 系统管理员会用的命令
- usr
- 用户程序的资源
- 类似 program files
- bin 用户所用的程序
- sbin 超级用户使用的高级程序
- src 内核源码
- var
- 存放经常修改的文件 如日志
- srv
- 系统服务启动后用到的数据
终端中不同颜色的含义
- 白色 普通文件
- 蓝色 目录
- 绿色 可执行文件
- 青色 链接文件 ln 文件
- 红色 压缩文件
- 黄色 设备文件
- 灰色 其他文件
终端中的快捷键
终端中 ctrl 类
- ctrl f 向前光标
- ctrl b 向后光标
- ctrl a 行首
- ctrl e 行尾
- ctrl p 上翻页(感觉和上下键的一样)
- ctrl n 下翻页
- ctrl h 删除前一个字符(就是 bcak 键)
- ctrl d 删除光标的字符,就是对应的,不同上面的
- ctrl u 删除光标前所有内容(不包括光标的字符)
- ctrl k 删除光标至末尾的内容(包括光标的字符)
- ctrl w 删除光标前单词(空格隔开)
- ctrl y 快速恢复擦除的文本
终端中 tab
- 补全输入的命令/路径(唯一的时候会补全,否则会下面)
- 提示可能要输入的命令/路径
文件权限
- 对于 drwxrwxrw-
- 所有者 用户组 其他人
- 权限类型
- r 可读
- w 可写
- x 可执行/可切换目录
-
- 无权限
命令
[!tip]
十分重要,但不局限于这些
一般类
man
- 查看帮助手册,比如查看命令的使用方法,或者应用程序
常用参数
- -f 显示简短描述信息(先使用这个,这样可以知道这个名字下是不是有同名的函数/命令)
- -k 根据关键词搜索手册,和这个相关的都会出来
- -w 显示手册文件所在位置
例子
[!note]
先打参数 再打需要操作的 word
man -f sleep
man 3 sleep
看第三个章节的 sleep (因为使用-f 查看时发现有多个 sleep,默认看的是 1)
快捷用法
- /word 在帮助文档中搜索 word 关键词
- n 下一个
- shift n 上一个
info
- 比 man 更复杂,有多页,有超链接
常见参数
- -w 显示物理位置
- -f 指定要访问的 info
- -n 在首个浏览过的 info 文件中指定节点
- -O 跳转至命令行选项节点
常用操作
- n 显示下一节点的内容
- p 显示上一节点的内容
- l 返回上一个访问节点的内容
- 空格 向前一页
- back 向后一页
- b/e 一个节点内容的开始/结束
- h 打开 info 教程
- d 回到 info 的初始节点
- 回车 跳转到链接文本
- q 退出
whatis
- 查询命令执行的功能是什么
- 相当于把 man -f 的结果打印出来
touch
作用
- 改变已有文件的时间戳属性
- 创建新的空文件
参数
- -a 改变读取时间的记录(access change)
- -m 改变修改时间的记录(modify change)
- -c 不创建新文件
- -t 设置文件时间记录,格式和 date 命令相同
touch -t 2201011030.55 file
2022 年 1 月 1 日 10 点 30 分 55 秒 - -r 使用参考文件的时间记录
touch file -r ref_file
- -d 使用指定字符串表示时间式
touch -d "tomorrow" file
mkdir
- 创建目录 makedir,使用很多
参数
- -p 递归创建多级目录
- -m 建立目录同时设置权限
- -v 显示目录创建过程
例子
- 多个目录
mkdir dir1 dir2 dir3
创建多个笔记mkdir dir{5..7}
创建 5 到 7 的目录mkdir -p dir7/dir8/dir9
文件夹里面又有文件夹
mkdir -m 700 dir1/dir10
700 权限的递归目录
rm
- 删除文件,remove
参数
- -r 递归删除,把子目录的文件也删除
- -f 忽略不存在的文件,不会出现警告信息
- -v 显示执行的过程
- -i 删除前会问是否进行操作
例子
rm -rf *
删除该目录下所有文件rm -r dir
删除这个目录rm file.txt
删掉这个文件
rmdir
- 删除空目录
参数
- -p 递归方式删除所有父级目录
- -v 显示过程
例子
rmdr -p dir1/dir2/dir3
递归删除多重目录
mv
- 移动文件
- 重命名文件
参数
- -i 存在同名,询问覆盖
- -f 直接覆盖,不询问
- -b 存在同名,覆盖前创建备份
- -u 当源文件比目标的新,或者目标文件不存在,才执行移动的操作
例子
mv file.txt newnew.txt
重命名mv file.txt /dir
移动到 dir 目录mv dir1 dir2
把 dir1 移动到 dir2 中,存在的时候才会移动,不存在就是重命名mv -i file1.txt file2.txt
提示是否覆盖mv * ../
移动当前文件夹下所有文件到上一目录mv dir3/* dir2
将当前目录的一个子目录文件移动到另外一个子目录里面
cp
- 复制文件和目录
参数
- -f 目标文件存在,直接覆盖,默认就是-f,不会提示
- -i 目标文件存在,询问是否覆盖
- -a 一般复制目录的时候用,保留链接,文件属性,并复制目录下的所有内容
- -r 递归复制文件和目录
- -b 覆盖已存在的文件目标前将目标文件备份
- -v 详细显示操作的过程
例子
cp file1.txt file2.txt
复制文件cp -r dir1 dir2
复制目录cp -a dir1 dir2
保留所有属性复制
cd
- 切换目录
特殊目录
~
用户家目录.
当前目录..
当前目录的上一级目录/
根目录-
上一次所在的目录
绝对路径和相对路径
- 起始路径为
/
的为绝对路径 - 不是
/
的是相对路径
例子
cd dir
切换到当前的 dir 目录cd ../../
切换到上上级目录cd
切换到家目录cd ~
切换到上一次的目录
pwd
- 打印当前路径,打印的是绝对路径
- print working directory
例子
pwd
直接显示
ls
- 显示目录信息
- list
参数
- -a 显示所有文件和目录(包括隐藏文件)
- -l 长格式列出文件和目录信息
- -r 相反次序显示(默认按英文字母显示)
- -t 根据修改时间排序
- -h 以人类可读的格式显示数字大小,会有 kb/mb/gb,不然就是直接比特显示
- -A 同 -a 但不列出
. 和 ..
这个是当前目录和父目录,-a 会列出 - -S 根据文件大小排序
- -R 递归列出所有子目录
- -F 在列出的文件名称后加一符号;
- 可执行文件多个
*
- 目录多个
/
- 可执行文件多个
例子
ls -a
列出所有文件,包括隐藏文件ls -l
显示详细信息ls /
列出根目录/
下的所有文件ls -lR
列出当前目录所有文件,包括子目录ls -l f*
列出带 f 开头的文件详细信息ls -ltr
列出所有文件,时间的倒序显示ls -AF
显示所有文件和目录,并且加上特定独好区分文件ls -lh
列出详细信息并显示文件大小
tree
- 以树状图列出目录内容
参数
- -a 显示所有文件和目录(加上隐藏文件)
- -L 层级限制
- -t 根据更改时间排序
- -r 更改时间倒叙
- -f 在每个文件或目录之前,显示完整的相对路径名称
- -d 显示目录名称而非内容
- -p 显示权限信息
例子
tree -L 2
显示 n 层目录
stat
- 显示文件或者文件系统的详细信息
参数
- -L 支持符号链接
- -f 显示文件系统的信息
- -t 简洁方式输出
三种时间
- acess time 访问时间
- 读取(more/less/cat/tail),修改时(vim/nano)改变
- modify time 修改时间
- 修改时改变
- change tiem 状态改变时间
- 修改,文件属性变化的改变(chmod/chown)
文件操作/工具类
rename
- 用字符串替换的方式批量改变文件名
语法
rename 's/oldname/newname/' files
- files 是修改的文件,可以是多个,用通配符表示
通配符
?
替代单个字符*
替代多个字符
参数
- -n 模拟运行
- -v 输出每步的执行信息
- -f 强制执行
例子
rename 's/.txt/.doc/ myfile.txt'
把.txt 改成了.docrename -n 's/file/file0/' file*
模拟把 file 开头的所有文件都改成 file0 开头
chattr
- 更改文件属性
参数
- -R 递归处理目录下所有文件
- -v 设置文件或目录版本
- -V 显示指令执行过程
-
- 开启某个权限
-
- 关闭某个权限(属性)
- = 指定某个权限
属性
- 略 太多了
例子
chattr +i file.txt
防止修改chattr -i file.txt
解锁chattr +a file.txt
只允许最佳内容chattr -R +i dir
给一个目录所有文件添加限制lsattr file.txt
查看文件属性
file
- 识别文件类型
参数
- -b 列出文件类型,不显示文件名称
- -c 详细限制执行过程
- -f 指定名称文件,显示多个文件类型信息
- -L 直接显示符号连接指向的文件类型
- -m 指定魔法数字文件
- -z 尝试区解读压缩包的内容
- -i 显示 MIME 类型
md5sum
- 生成和校验文件的 md5 值
参数
- -b 以二进制模式读取文件
- -t 以文本模式读入文件内容
- -c 根据已知的 md5,对现存的文件进行校验
例子
md5sum file.txt > file.md5
将生成的 md5 值重定向到指定文件(md5 文件)md5sum -c file.md5
直接对 file 文件进行 md5 验证md5sum -c --status file.md5
ech$?
校验但是不显示任何输出,echo 返回码表示成功与否
find
- 搜索指定文件
例子
find / -name *.conf
全盘搜索以 conf 结尾的文件find /etc -size +1k
搜索/etc 目录下大于 1k 大小的文件find . -type f
搜索当前目录所有文件find . -perm 664 -exec ls -l {} \;
搜索 664 权限文件并列出find .
列出当前目录和文件find . -iname "*.txt"
搜索后缀为 txt 的,有 i 就是包括大写的find . ! -name "*.txt"
反过来find . -mtime -7 -exec rm -i {} \;
搜索 7 天内被修改的文件,并询问删除
which
- 查找命令文件所在位置
- 搜索在 path 变量中
例子
which bash
找 bash 在哪
whereis
- 查找命令二进制程序、源码和 man 手册相关文件的路径
例子
whereis ls
找出所有whereis -b ls
只找二进制程序whereis -m ls
只找 man 手册页路径
locate
- 快速查找文件或者目录
例子
locate file.txt
找带file.txt
的所有文件locate /etc/sh
locate whereis
locate -i locate/f
查找该路径下 f 开头的文件,-i 不区分大小写
chown
- Change owner
- 改变用户和用户组
参数
- -c 显示变更信息
- -R 目录下所有都改变
例子
sudo chown alvin:alvin file.txt
把这个文件的用户组和用户改成 alvinsudo chown :alvin file.txt
改用户组sudo chown -R alvin:alvin dir
把指定目录和其他子文件都该了
chgrp
- 改变用户组
- 和 chown 很像
chmod
- Change mod
- 改变文件权限
模式
- 符号模式
- 对象
- u user 文件所有者
- g group 文件所有组所在组
- o others 其他用户
- A all 所有用户,相当于 ugo
- 操作
-
- 加权限
-
- 去除权限
- = 重新设置权限
-
- 权限
- r 读
- w 写
- x 执行
- 对象
- 数字模式
- 类似二进制的代码,加起来,数字代表权限
参数
- -R 递归处理所有文件
例子
chmod a+r file.txt
设置都可读chmod -R a+r
全部设置可读取chmod u+x file.txt
文件拥有者才能执行chmod ug+w,0-w file.txt
所有者和同组可写,其他人不可写chmod a+r,a+w,a+x file.txt
chmod 777 file.txt
设置所有人都可读可写可执行chmod 755 file.txt
拥有者可读可写可执行,其他人可读可执行chmod 9=rw,go= file.txt
拥有者可读可写,其他人没有权限
grep
- 文本搜索工具
参数
- -i 忽略大小写
- -c 输出匹配行的数量
- -l 只列出符合的文件名,不输出匹配行
- -n 列出所有匹配行,显示行号
- -h 查询多文件时不显示文件名
- -s 不显示不存在,不匹配的错误信息
- -v 显示不包含匹配文本的所有行
- -w 匹配整词
- -x 匹配整行
- -r 递归搜索
- -q 禁止输出任何结果,退出状态标识是否成功
- -b 打印距离文件头部偏移量,字节为单位
- -o 于-b 结合使用
- -F 匹配固定字符串的内容
- -E 支持扩展的正则表达式
例子
grep -rl hello *
目录下及其子目录搜 hellogrep root /etc/passwd /etc/shadow
搜索多个文件中的内容 root
egrep
- 性能更好且优化的 grep -E
- 可使用正则表达式
例子
egrep 'a+' file.txt
找包含一个以上 a 的内容egrep 'linux|666 file.txt'
包含 linux 或者 666egrep '(linux)+' file.txt
包含多个 linux 整体的内容egrep '^#' file.txt
查找#
开头的内容egrep 'linux$' file.txt
查找 linux 结尾的内容egrep '(ab){3} file.txt'
查找连续出现三次 ab 的内容egrep 'ab[cd]' file.txt
查找包括 abc 或者 abd 的内容
cat
- 查看文件内容
参数
- -n 显示行数
- -s 去除重复的空行
- -b 显示行数,空行不算
- -E 每行结束显示$
- -T 将 tab 显示为
^I
例子
cat -b file.txt
显示行数cat file.txt > file1.txt #
重定向内容- 若 file1 不存在则创建,内容被覆盖
- 换成
>>
就变成追加到末尾,不会覆盖
cat file1.txt file2.txt > combine.txt
合并文件cat > file.txt
创建文件,完成后 ctrl+d 保存
more
- 分页显示内容,只能往下翻,不能往前
操作
- 回车 下一行
- 空格下一页
例子
more -c -10 ~/.bashrc
清屏操作,每次十行显示more -s +10 ~/.bashrc
从第十行开始,连续两行空白,合并成一行空白显示
less
- 分页显示,可以上下翻页
操作
- 回车/j 下一行
- k 上一行
- 空格/f 下页
- b 上一页
- q 退出
- /xx 搜索
- n 下一个
- Shift n 上一个
例子
less abc def
查看两个文件:n
浏览下一个文件:p
浏览前一个文件
history | less
以 less 命令分页查看 history 命令,用管道
nl
- 添加行号显示
例子
nl -b t file.txt
空行没有行号,默认没有nl -b a -n rz -w 3 file.txt
行号右边显示,加 0 填充,宽度为 3,空行有行号
split
- 文件分割
例子
split -2 file2.txt
每两行分成一个文件split -b 10k file2.txt
每 10kb 切割split -b 10k -d -a 3 file2.txt
数字后缀,宽度为 3split -b 10k -d -a 3 file2.txt split_file
指定前缀
diff
- 比较文件的差异
参数
- -y 并列方式显示
- -c 显示全文,标出不同之处
- -u 合并的方式显示不同
- -W 设置宽度
显示提示
- a -add
- c -change
- d -delete
- | 前后两个文件内容不同
< 后面比前面少了一行
> 后面比前面多了一行
-
- 后面比前面多了一行
-
- 后面比前面少了一行
- ! 有差别的行
例子
diff -y -W 50 file1.txt file2.txt
并排格式输出diff -c file1.txt file2.txt
上下文格式输出diff file1.txt file2.txt > file.patch
生成补丁patch file1.txt file.patch
打补丁
tr
- 转换或者删除文件中的字符
参数
- -c 反选字符
- -d 删除集合中的字符
- -s 缩减连续字符成指定单个字符
例子
tr -d "[a-z]"
删除小写字母tr -d 0-9
删除数字tr -d -c '0-9 \n'
删除不在集合中的字符tr -s '\n'
压缩重复空白行
du
- 查看磁盘使用空间
参数
- -a 显示目录中所有文件大小
- -h 易读方式显示
- -s 看目录占用大小
df
- 查看磁盘空间使用情况
参数
- -a 显示所有文件系统
- -h 易读显示
- -i 显示 inode 信息
- -t<文件系统类型> 显示指定文件系统类型的文件系统
- -T 输出时显示系统类型
sync
- 强制将更改的内容立刻写入磁盘
mount
- 挂载文件系统
参数
- -o 挂载方式
- loop 用来把一个文件当成硬盘分区挂载接上系统
- ro 只读方式挂载
- rw 读写方式挂载
- iocharset 指定访问文件系统所用字符集
- -t 指定挂载类型
例子
mount -t tmpfs
查看当前系统挂载的所有文件系统信息sudo mount /dev/sdb /mnt/udisk
把 U 盘挂载sudo mount -0 loop /home/xxiso /mnt/iso
把 ISO 镜像挂载
umount
- 卸载文件系统
例子
umount -v /dev/sdb
设备名卸载umount -v /media/chris/xxx
挂载点卸载
tar
- 打包/解压工具
参数
- -c 新建打包文件
- -x 解压
- -f 指定需要处理的文件
- -z 通过 gzip 方式压缩
.tar.gz
为后缀 - -v 显示过程
- -t 查看打包文件内容
- -C dir 指定压缩/解压目录
例子
tar -zcvf file.tar *.txt
所有 txt 打包压缩tar -zxvf file.tar.gz
解压到当前目录
zip
- 压缩
参数
- -v 显示执行过程
- -d 更新包内内容
- -r 递归处理
例子
zip -r dir.zip dir
zip files.zip *.txt
zip -dv files.zip newfile.txt
添加新文件进去压缩包
unzip
- 解压
参数
- -l 显示压缩包包含文件
- -v 显示过程
- -d <目录> 解压到指定位置
例子
unzip -v file.zip
显示文件列表包含压缩比率unzip files.zip -d udir/
解压指定目录
gzip/gunzip
- 对文本高效率压缩
参数
- -d 解开压缩文件
- -k 保留源文件
- -l 列出压缩文件信息
- -r 递归
- -v 显示执行过程
- -t 测试压缩包
系统类
uname
- 显示系统信息
参数
- -a 显示所有
- -m 显示架构
- -n 主机名称
- -s 内核
- -r 内核发行版本号
- -v 内核版本
- -p 处理器
- -o 操作系统名称
- -i 显示硬件平台
hostname
- 设置系统主机名
- 略
uptime
- 显示系统启动时间和负载信息
参数
- -p 正常运行时间
- -s 系统启动时间
free
- 显示内存使用量
参数
- 略
ulimit
- 控制 shell 程序的资源
init
- 切换系统运行级别
service
- 控制系统服务
vmstat
- 显示虚拟内存状态
iostat
- 监视出入输出设备和 CPU 使用情况
ipcs
- 显示进程间通讯设备信息
网络类
route
- 显示并设置路由
例子
route add -net 244.0.0.0 netmask 24.0.0.0 dev ens33
添加网关/设置网关route -n
显示当前路由route add -net 244.0.0.0 netmask 24.0.0.0 reject
屏蔽一条路由
ping
- 测试网络连通性
参数
- -c 指定发送报文数目
- -i 指定发送间隔
- -s 设置大小
- -t 设置 TTL 大小
traceroute
- 追踪数据包在网络上传输的全部路径
参数
- -m <数量>设置检测数据包最大存活数值 ttl 的大小
- -n 直接使用 ip
- -p <端口> 指定 udp 端口
- -q 探测包个数
ifconfig
- 查询修改网络信息
- Network interface configuring
- 设置重启后失效
参数
- Add 设置设备 ipv6
- Del 上传
- Down 关闭指定设备
- Up 启动
ifup/ifdown
- 激活/禁用网络接口
netstat
- 查看网络状态
参数
- -a 显示连线中所有 socket
- -p 显示正在使用 socket 的程序识别码和程序名称
- -l 仅列出监听的服务状态
- -t 显示 tcp 的情况
- -u udp
- -i 显示网络界面信息表单
- -r 显示路由表信息
- -n 直接使用 ip 地址,不通过域名服务器
- -x unix 端口
- -s 所有端口
ss
- 显示活动套接字信息
- 很强大,东西太多了
例子
ss -at
显示 tcp 套接字ss -s
显示套接字使用情况ss -lp | grep 6010
找出端口/套接字应用程序ss -tlr
解析 IP 和端口号
telnet
- 远程登入服务器
ssh
- 安全远程连接工具
参数
- -l <登录名> 指定用户名
- -p <端口> 指定端口
ftp
- 文件传输协议客户端
sftp
- 安全的 ftp
参数
- -r 下载目录的时候使用,递归
例子
sftp -P 30 chris@192.168.2.34
可以不跟端口
lftp
- 优秀的文件客户端
- 支持各种协议
例子
get file.txt
mget file*.txt
mget -c *.txt
下载mirror dir
下载整个目录mirror -R dir
上传目录mput new*.txt
put file.txt
上传
wget
- 下载文件
参数
- -i 下载指定文件中列出的地址
- -O 下载后重命名
- -c 打开断点续传
- -b 启动后转入后台执行
- -P 只当保存路径
例子
wget --limit-rate=300k -O newname.zip https://xx/xx.zip
tail -f wget-log
查看下载进度
scp
- 远程拷贝文件
参数
- -r 递归复制目录
- -p 保留源文件的时间,模式属性
- -P 指定传输的端口号
例子
scp chris@ip:/home/file.txt /myhome/
复制文件到指定目录
curl
- 强大的文件传输工具
参数
- -o 指定新的本地文件名
- -O 保留远程文件的原始名
- -u 通过服务端配置的用户名和密码授权访问
- -A 设置用户代理标头信息
- -b 设置 cookie 信息
- -C 断点续传
- -s 静默模式
- -T 上传文件
例子
curl -T newfile.txt -u root:key ftp://xxxxx/xx/dir
上传curl -o myname.zip https://xxx/xx.zip
下载并重命名
host
- 查询域名
参数
- -a 详细信息
- -v 显示执行过程
tcpdump
- 监听网络流量
- 内容太多了
例子
tcpdump -i ens33
指定网络接口数据包tcpdump -c 10 -q
精简显示 10 个包tcpdump host www.xxxx.xx
tcpdump -i any port 22 -A
监听指定端口,并文本显示
nc
- 设置路由器,建立连接, 端口扫描等等,很强大
- 瑞士军刀,netcat
参数
- -v 显示执行过程
- -w<超时时间> 设置等待连线时间
- -u udp 协议
例子
nc-v -z -w2 192xxxxip 1-100
扫描端口范围nc ip port
连接端口
用户管理
useradd
- 创建并设置信息
参数
- -m 自动创建家目录
- -M 不要创建家目录
- -s 指定用户登录后使用的 shell
例子
useradd -m -s /bin/bash user2
常用创建方法useradd -g group username
指定组 id
passwd
- 修改密码
参数
- -d 删除密码
- -l 锁定用户密码值,不可改
- -u 解锁,可以改
- -e 下次登录强制修改密码
- -k 到期还能用
- -S 查询密码状态
例子
passwd -l chris
锁定密码
userdel
- 删除用户
例子
userdel -r chris
把家目录和账号都删掉
su
- 切换用户
例子
su -c whoami alivin
执行 whoami 之后退后原来的su - chris
切换账号并改到 chris 的家目录
sudo
- 管理员身份执行
例子
sudo -l
列出当前用户权限
id
- 显示 id
例子
id -g chris
显示所属组的 id
usermod
- 修改用户信息
例子
usermod -u 1234 chris
修改 uidusermod -l harry chris
修改名字成 harryusermod -L chris
锁定
groups groupadd groupdel
- 组管理
whoami
- 打印当前登录用户
who
- 查看当前登录用户信息(所有人)
参数
- -a 全面信息
- -b 系统最近启动工商局
- -l 系统登录进程
- -H 带有标题打印用户名,终端,时间
- -u 已登录用户列表
- -q 列出所有用户数量和名称
w
- 现在登录用户
参数
- -h 不打印头信息
- -u 显示当前进程和 cpu 时间时忽略用户名
- -s 短输出
- -f 从哪登录
- -o 老式输出
- -i 显示 ip 而不是主机名
last
- 显示用户或终端的登录情况
例子
last -n 5 -a -i
最后一列显示 ip,显示 5 行
user
- 显示当前登录的用户
进程查看
top
- 实时显示进程动态
参数
- -d 指定刷新间隔
- -c 切换显示命令名称和完整命令行
- -p 通过监控进程 id 看一个
- -n 信息更新最大次数
快捷键
- c 显示进程绝对路径
- P cpu 排序
- M 内存排序
ps
- 显示进程状态
参数
- -A 显示所有进程信息
例子
ps -aux
显示所有程序ps -axf
树形显示进程ps -u chris
指定用户ps -aux | less
配合 less
pstree
- 树状图显示进程
参数
- -a 显示完整指令
- -c 不使用精简表示法
- -G 使用 VT100 终端机的列绘图字符
- -h 特表指明正在执行的程序
pgrep
- 检索进程
参数
- -d 设置字符用于分割 id
- -f 模式参数仅用于匹配进程名
- -l 列出名字和 id
- -u 匹配指定有效用户 id 进程
lsof
- 查看进程打开的文件
例子
lsof +d /home
显示指定目录中被调用的文件信息lsof -c bash
只当某个程序的信息lsof +D /home
递归显示lsof /bin/bash
查看谁在用这个文件
进程操作
jobs/bg/fg
- 终端任务调度
例子
jobs -l
列出当前 shell 任务fg 2
调至前台ctrl+z
后台bg 2
后台
kill
- 发送信号到进程
常用信号
- 9 终止
- 3 退出 ctrl \
- 2 终端 ctrl+c
- 1 终端断线
- 15 终止
- 19 暂停
- 18 继续
例子
kill -9 18889
杀死进程
killall
- 杀死进程
- 也能发送信号
参数
- -l 打印所有信号
- -u 杀死指定用户进程
例子
killall sleep
杀死所有 sleep 进程
nice/renice
- 调整进程优先级
参数
- -n 接数值
- -g 指定进程组
- -p 改变优先级等级
- -u 指定开启进程的用户名
例子
nice -15 vim &
nice -n 15 vim &
设置优先级renice 6 -p 6666
把 6666 进程改优先值
nohup
- 后台运行,不显示终端
包管理
apt
- 包管理器
例子
sudo apt update upgrade
sudo apt upgrade vim
sudo apt install bat
安装sudo apt remove bat
卸载sudo apt show bat
展示软件包信息sudo apt autoremove
自动清理依赖和库文件sudo apt list --installed
列出已安装的软件包
apt-get
- 类似的,用 apt
环境变量
export
- 显示设置环境变量
- 仅仅本次登录
例子
export -p
列出export MYenv=7
定义环境变量export PATH=$PATH:/usr/local/mysql/bin
修改变量
配置文件
/etc/porfile
所有用户~/.bashrc
当前用户
source
- 更新环境变量
- 可以用
.
来代替
例子
. ~/.bashrc
读取和执行 bashrc 文件
终端操作
echo
- 输出字符串
例子
echo $PATH
$把 path 提取出来打印echo "hello" > file.txt
定向到文件echo -e "a\nb\nc"
开启转义- Echo `date` 能执行命令,显示结果
clear
- 清理屏幕
history
- 管理命令记录
参数
- -c 清空记录
- -d 删除指定序号的记录
- -n 读取命令记录
例子
!2039
重新执行 2039 命令!!
执行上一条
login/logout
- 登入登出
exit
- 退出终端/ssh