[TOC]
| 命令 | 说明 | 选项 |
|---|---|---|
| ls | 列出当前目录下的文件和文件夹 | - a 显示所有文件及目录(包括隐藏文件)- l 除文件名外,文件类型,权限,大小等信息也列出来- R 如果目录下面有文件,也列出来 |
| find | 查找文件 | - name 查找指定名称的文件- depth 先找当前目录的文件,再找子目录- user 按照文件所属人来查找- group 按照文件所属组来查找- mtime -n +n 按照文件的更改时间来查找,-n表示距离现在n天以内的文件,+n表示距离现在n天以前的文件- size n[c] 查找文件长度为n块(1块=512字节)的文件,带c时文件长度以字节计- mount 查找时不跨越文件系统的挂载点- exec 找到文件后执行shell命令- ok 更安全版本的exec命令,每步都要确认- TODO |
| grep | 查找文件内容 | - ? 同时显示匹配行的上下?行- c 只打印匹配的行数,不现实匹配的内容- e 正则匹配- h 不显示匹配的文件名前缀- i 不区分大小写- l 列出匹配到的文件清单- n 在匹配的行前面打印行号- TODO |
| df | 查看磁盘分区使用情况 | - h 使用人类可读格式列出信息 |
| du | 查看目录/文件大小 | - h 以高可读性列出信息- s 仅列出总计- D 列出符号链接指向的文件大小- k 以kb为单位列出信息 |
# 示例
ls -al # 列出所有的文件和文件夹(包括隐藏的);
find ~/tmp -name 1.txt # 在`~/tmp`目录下查找名为1.txt的文件
find ~/tmp -mtime -3 +15 *.txt # 在`~/tmp`中查找3天内或15天前的txt文件
find ~/tmp -size +1M # 查找`~/tmp`中大于1M的文件
find ~/tmp -size +1M -a -size -1G # 查找`~/tmp`中大于1M小于1G的文件
find ~/tmp -name 1.txt -exec rm {} \ # 查找`~/tmp`中名为1.txt的文件并删除
grep -2 "hello" *.txt # 查找所有包含hello的txt文件,同时显示匹配行的上下2行
grep -l "hello" *.txt # 查找所有包含hello的txt文件,并把他们的名字列出来
grep -r "hello" ./ # 递归搜索当前目录下的包含"hello"的文件
df -h # 显示磁盘使用情况
du -sh tmp # 以人类可读的方式显示tmp文件夹大小
du -sh * # 查看当前文件夹下目录大小| 命令 | 说明 | 选项 |
|---|---|---|
| scp | 上传本地文件/文件夹到远程 远程下载文件/文件夹到本地 |
- r 递归- C 压缩- q 静默- v 详细- l 带宽限制 |
# 示例
scp -r 用户名@远程ip:远程路径 本地路径 # 从远程下载文件夹到本地
scp -r 本地目录 用户名@远程ip:文件路径 # 上传本地目录到远程| 命令 | 说明 | 选项 |
|---|---|---|
| tar | 压缩/解压文件或文件夹 |
- c 建立新的备份- z 以gzip命令处理文件- x 从备份文件中还原文件- v 显示执行的过程- f 指定备份文件- t 列出备份文件的内容 |
| zip | 压缩成zip文件 | - q 表现时指令执行过程- r 递归处理- d 从压缩文件内删除指定的文件- v 显示指令执行过程 |
| unzip | 解压缩zip文件 | - l 显示压缩文件内所包含的文件- d 解压到指定目录 |
| rar | 压缩成rar文件 | |
| urar | 解压缩rar文件 |
# 示例
tar -czvf 1.tar.gz 1.txt # 将1.txt压缩为1.tar.gz
tar -tzvf 1.tar.gz # 列出压缩文件1.tar.gz的内容
tar -xzvf 1.tar.gz # 解压文件1.tar.gz
tar -xvf 1.tar.xz # 解压文件1.tar.xz
zip -qr test.zip ~/test # 将test目录压缩成test.zip文件
zip -dv test.zip /home/he/test/1.txt # 删除test.zip文件中的1.txt文件
unzip -l test.zip # 查看压缩文件`test.zip`中包含的文件
unzip test.zip -d ~/tmp #将文件`test.zip`解压到目录`~/tmp`| 命令 | 说明 | 选项 |
|---|---|---|
| bg | ||
| lsof | 查看当前系统文件 | - a 列出打开文件存在的进程- c 里处指定进程所打开的文件- g 列出GID好进程详情 |
| ps | 查看进程快照信息 | - a 显示同一终端下的所有程序- A 显示所有进程- e 等同于"-A"- f 显示程序间的关系- u 指定用户的所有进程- H 显示树状结构- au 显示较为详细的资讯- aux 显示所有包含其它使用者的行程二级选项: -- lines 行数 每页显示的行数-- width 字符数 每页显示的字符数 |
| top | 查看进程持续信息 | - c 切换显示模式- q 无延迟显示- i 不显示闲置和僵尸进程- n 设置更新次数- d 设置更新时间- p 指定进程id行内命令: 空格键 立即刷新P 以占据CPU百分比排序M 以占据内存百分比排序T 以累积占用CPU时间排序t 显示或隐藏进程和cpu状态信息s <秒数> 修改刷新时间间隔k <进程id> <enter> <信号> 杀死指定id的进程 |
| nohup | 后台运行程序 | |
| screen | 分屏/共享屏 |
- A 将所有的视窗都调整为目前终端机的大小- d 将指定的screen作业离线- h 指定视窗缓冲区行数- r 恢复指定的离线screen作业- x 恢复之前离线的screen作业- S 指定screen作业名称- ls 显示目前所有的screen作业 |
| kill | 杀进程 | - `9 |
lsof | wc -l # 查看当前系统打开的文件数量
lsof -p xx | wc -l # 查看当前进程xx打开的文件数量
ps -aux | grep he # 查看用户he的所有进程]
ps -ef # 显示所有进程信息,包括进程的命令行
ps -axjf # 列出程序树信息
ps -aux|egrep '(vim|chrome)' # 列出与vim或chrome相关的进程
top -d 2 # 2秒刷新一次信息
top -p 2444 # 只显示进程2444的信息
#杀死id为2444的进程
top
>> k 2444
>> 15
nohup chrome & # 后台运行chrome并在当前目录生成一个默认名为nohup.out的日志文件
nohup chrome &>/dev/null & # 后运行chrome,同时不生成日志文件
nohup chrome >test.log 2>&1 & # 后台运行chrome,同时输出到日志文件test.log
screen # 创建screen作业
screen -ls # 列出所有的作业
screen -x he # 恢复一个名叫he的screen作业
# 创建一个名叫he的screen作业
screen -S he
<Ctrl+a+d> # 离开当前screen作业(注意:此作业会继续保留)
exit # 直接退出当前作业,不保留
kill -9 1234 # 使用最高等级杀id为1234的进程i| 命令 | 说明 | 选项 |
|---|---|---|
| ldd | 查看程序的依赖共享库列表 | - v 详细模式- u 打印未使用的依赖- d 执行重定位和报告任何丢失的对象- r 执行数据对象和函数的重定位,并且报告任何丢失的对象和函数 |
| which | 查看命令的可执行文件路径 | - n <数字> 指定文件名最小长度- p+数字 指定文件完全路径最小长度- w 指定输出时栏位宽度- V 显示版本信息 |
| tail | 查看日志 | - f TODO |
| file | 查看文件类型 | - b 不显示文件名- c 显示指令执行过程- f 指定文件名- L 直接显示符号链接所指向的文件类型- m 指定魔法数字文件- v 显示版本信息- z 解读压缩文件的信息 |
| nm | 查看文件的符号信息 | - a 显示所有符号- D 显示动态符号(对动态链接库有效)- g 只显示外部符号- l 使用debug信息找到文件名和行号- n 按符号对应地址的顺序排序- p 按照目标文件中遇到的符号顺序显示,不排序- P 按照POSIX2.0标准格式输出- r 反转排序- s 当列出库中成员的符号时,包含索引- u 只显示未定义符号二级选项 --defined-only 只显示定义的符号--no-demangle 默认选项,不将低级符号名解析成用户级名字 |
| strings | ||
| size | 查看文件各段和总和大小 | |
| readelf | 查看ELF格式的文件信息 | - h 显示文件开始的文件头信息- l 显示程序头信息- S 显示节头信息- g 显示节组信息- t 显示节点的详细信息- s 显示符号表段中的项- e 显示全部头信息- n 显示内核注释信息- r 显示可重定位段的信息- u 显示unwind段信息- d 显示动态段信息- V 显示版本段信息- A 显示CPU架构信息- l 显示bucket list长度的柱状图- x 以16进制方式显示指定段内内容- D 使用动态段中的符号表显示符号,而不是使用符号段- a 显示全部信息- v 显示readelf的版本信息- H 显示帮助信息 |
| objdump | 反汇编程序 | - c- x |
| addr2line | 翻译出错信息,定位出错的代码位置 | - e |
# 示例
ldd cmake # 列出cmake的所有依赖
which bash # 显示bash可执行程序的绝对路径
tail -f 007.log # 查看007.log这个文件最新的内容
file /usr/local/bin/lua # 显示文件的文件类型
file -L /bin/dd # 显示链接指向的文件类型
nm /bin/dd |grep copy # 查看程序是否包含copy函数
readelf -x 1 hello.so # 以16进制方式显示文件`hello.so`中段索引为1的内容
addr2line -e hello 40053b # 翻译hello的报错信息40053b,定位到源码位置| 命令 | 说明 | 选项 |
|---|---|---|
| ifconfig | 查看,设置网络接口属性 | - a 所有网络接口- down 关闭指定的网络设备- up 开启指定的网络设备 |
| netstat | 查看网络使用情况 | - a 列出所有连线中的socket- c 持续列出网络状态- e 显示网络其它相关信息- F 显示路由缓存- i 显示网络界面信息表单- l 显示监控中的服务器的socket- n 直接使用IP地址,不通过域名服务器- o 显示计时器- p 显示正在使用socket的程序识别码和程序名称- t 显示tcp的连线状况- u 显示udp的连线状况 |
| ufw | 防火墙设置 | - status 查看端口开放情况 - allow 开放端口 - enable 开启防火墙- reload 重启防火墙 |
# 示例
ifconfig eth0 down # 禁用网卡eth0
ifconfig eth0 up # 启用网卡eth0
ifconfig -a # 查看系统的所有网络接口
netstat -tunlp | grep 10086 # 查看端口10086占用情况
netstat -i # 显示网卡列表
netstat -nu # 显示udp连接情况
netstat -apu # 显示udp端口使用情况
ufw allow 8080 # 开放8080端口
ufw enable # 开启防火墙
ufw reload # 重启防火墙| 命令 | 说明 | 选项 |
|---|---|---|
| source | 使设置生效 | |
| su | 切换账户 | |
| ulimit | 资源限制 |
# 示例
source /etc/profile # 让profile配置生效
su he # 切换到账户he
ulimit -c # 查看core文件配置,0表示未开启
ulimit -c unlimited # 不限制core文件大小
ulimit -c 1024 # 限制core文件最大为1024kb| 命令 | 说明 | 选项 |
|---|---|---|
| uname | 查看内核/操作系统 | - a 显示全部信息- m 显示电脑类型- n 显示网络上主机名称- r 显示操作系统的发行编号- s 显示操作系统名称 |
| lscpu | 查看cpu信息(更详细的信息用命令: cat /proc/cpuinfo) |
|
| free | 查看内存信息(更详细的信息用命令:cat /proc/meminfo) |
- m 以MB为单位- k 以KB为单位- g 以GB为单位- t 显示内存总量 |
| fdisk | 查看磁盘信息 | - l 列出所有分区表- u 显示区分数目- s 指定分区 |
| lspci | 查看PCI总线信息(包括显卡,网络,usb,SATA控制器等) | - n 以数字方式显示PCI厂商和设备代码- t 以树桩形式显示PCI设备的层次关系- b 以总线为中心的视图- s 仅显示指定总线插槽的设备和功能块信息- i 指定PCI编号列表文件,不使用默认文件- m 以机器可读方式显示PCI设备信息 |
# 示例
uname -a # 显示系统信息
uname -s # 显示操作系统信息
free -m # 查看内存情况(MB)
free -g # 查看内存情况(GB)
fdisk -l # 查看磁盘信息
lspci |grep -i 'eth' # 查看网卡硬件信息| 命令 | 说明 | 选项 | 常用 |
|---|---|---|---|
| tree | 查看文件夹树形结构 | - TODO | tree 列出树状文件结构 |
| gdb |
| 变量 | 描述 |
|---|---|
* |
含有所有命令行参数(以单个文本值的形式) |
@ |
含有所有命令行参数(以多个文本值的形式) |
-
在
/etc/passwd中找到当前用户的目录配置并修改vim /etc/passwd # 修改目录:smy:x:1000:1000:Shelming.Song:/home/smy:/bin/bash -> smy:x:1000:1000:Shelming.Song:/root:/bin/bash -
保存并重启
通过shell自动输入密码有以下几种方式:
-
通过管道
例子:自动安装gdb
#!/bin/sh passwd=root123 echo $passwd|sudo -S apt-get install
-
通过重定向
例子:自动安装g++
#!/bin/sh passwd=root123 sudo apt-get install g++ << EOF $passwd y EOF