Table of Contents generated with DocToc
- 系统管理
- 👉groupadd - 添加用户组
- 👉groupmod - 修改用户组
- 👉groupdel - 删除用户组
- 👉useradd - 添加用户
- 👉usermod - 修改用户
- 👉userdel - 删除用户
- 👉passwd - 修改用户密码
- 👉su - 切换用户
- sudo - 以系统管理者的身份执行指令
- chpasswd - 修改当前用户
- 👉date - 显示或设置系统日期与时间
- finger - 查询其他使用者的资料
- 👉who/whoami/w - 查看当前登录用户信息
- 👉sleep - 延迟当前命令的执行(s)
- usleep - 延迟当前命令的执行(us)
- 👉crontab - 管理定时计划任务
- at - 一次性定时计划任务
- batch - 指定时间执行任务
- 👉alias - 设置命令别名
- 👉time - 指令执行时所消耗的时间
- declare - 声明shell变量
- 👉export - 查看或设置环境变量
- 👉systemctl - 管理系统服务
- 👉service - 管理系统服务
- 👉clear - 清除屏幕
- 👉dmesg - 显示开机信息
- 👉halt - 关闭当前服务器系统
- shutdown - 关闭服务器的系统
- 👉reboot - 重启系统
- lsmod - 加载kernel模块管理
- 👉modprobe - kernel模块智能加载工具
- insmod - 用于载入kernel模块
- rmmod - 用于删除kernel模块
- modinfo - 显示kernel模块的信息
- 👉sysctl - 配置内核参数
- 👉kdump - 系统崩溃时记录日志
- lsscsi - 列出SCSI设备及属性
- lscpu - 列出cpu信息
- wall - 给所有打开的终端发送email
- jobs - 显示shell的作业信息
- 👉chronyc - 同步时间
- 👉timedatectl - 查看日期时间、时区及 NTP 状态
- 👉 journalctl - 查看系统日志
- 文件管理/目录管理
- 👉chown - 更改文件用户、属组
- 👉chmod - 更改文件权限
- 👉touch - 创建文件或修改文件访问时间
- 👉tree - 树状图列出目录的内容
- 👉vi/vim - 编辑文件内容
- 👉ls - 列出文件目录
- 👉dir - 列出文件
- 👉cd - 切换工作目录
- 👉pwd - 显示当前工作目录
- 👉dirs - 显示当前工作目录
- 👉cp - 文件文件或者目录
- 👉scp - 基于SSH协议远程复制文件或目录
- rcp - 远程复制文件或目录
- 👉mkdir - 创建文件或者目录
- rmdir - 删除一个空文件夹
- 👉rm - 删除文件或目录
- 👉mv - 移动或改名文件
- 👉cat - 查看文件内容
- more - 分页显示文件内容
- 👉less - 分页显示文件内容
- 👉head - 显示文件开头的内容
- 👉tail - 显示文件结尾的内容
- 👉grep/egrep - 文本过滤
- 👉awk - 文本和数据进行处理的编程语言
- 👉sed - 批量编辑文本文件
- 👉ln - 创建链接
- 👉diff - 比较文件内容差异
- which - 找查命令文件路径
- 👉whereis - 找查命令文件路径
- 👉find - 查找文件位置
- 👉locate/slocate - 查找文件位置
- 👉sort - 将文件进行排序并输出
- 👉uniq - 去除文件中的重复内容行
- 👉split - 文件分割
- 👉shuf - 打乱顺序产生随机的排列
- 👉tar - 归档使用工具
- 👉zip - zip格式压缩文件
- 👉unzip - 解压zip包
- gzip 压缩和解压文件(.gz文件)
- bzip2 - 压缩和解压文件
- dd - 转换和复制文件
- 👉chattr - 更改文件隐藏属性
- 👉lsattr - 显示文件隐藏属性
- cksum - 检查文件
- 👉md5sum - 检查文件md5值
- cmp - 比较文件差异
- file - 命令用于辨识文件类型
- 👉cut - 按列提取文件内容
- od - 八进制输出文件内容
- hexdump - 显示文件十六进制格式
- strings - 查找可打印的字符串
- stat - 显示文件或文件系统的详细信息
- diff3 - 比较3个文件的不同之处
- vimdiff - 同时对比编辑多个文件
- paste - 按对应行合并两个文件
- tmpwatch - 删除暂存文件
- comm - 命令用于比较两个已排过序的文件
- 👉tr - 字符转换
- 👉wc - 统计文件的字节数、单词数、行数
- zcat/zgrep - 过滤压缩包里面的内容
- tac - 反向打印文本
- 👉dos2unix - 将文本文件转成unix格式
- 进程和监控
- 文件系统和磁盘
- 网络配置与文件传输
- 👉ping - 测试主机间网络连通性
- ping6 - 测试主机间IPv6网络连通性
- 👉ip - 显示与配置网卡参数
- 👉route - 显示与设置路由信息
- ifup - 激活网络接口
- ifdown - 关闭网络接口
- 👉ifconfig - 显示或设置网络设备参数信息
- 👉telnet - 控制远程设备
- 👉nc- 网络端口检查
- 👉curl - 文件传输工具
- wget - 下载网络文件
- host - 域名查询
- 👉dig - 查询域名DNS信息
- 👉nslookup - 域名查询
- 👉tcpdump - 抓包,监听网络流量
- 👉firewalld - 防火墙
- 👉iptables - 防火墙
- 👉sz - 从Linux上下载文件到本地
- 👉rz - 上传文件到linux
- 👉ftp - ftp协议文件传送
- shell 其他常用
👉用户文件/etc/group。
groupadd [options] ${group_name}
# 常用options
-g, --gid GID # 用户组 组id
👉用户文件/etc/passwd。
useradd [options] ${user_name}
# 常用options
-d, --home-dir HOME_DIR # 用户工作目录
-g, --gid GROUP # 用户组id
-p, --password PASSWORD # 用户密码
-u, --uid UID # 用户id
# 例子
useradd stonebird
usermod [options] ${user_name}
# 和useradd一致
# 例子
usermod -g 1002 stonebird
userdel [options] ${user_name}
# options
-r, --remove 删除用户目录
# 例子
userdel stonebird
userdel -r stonebird
👉用户文件/etc/shadow。
passwd ${user_name}
# 非交互模式 root
--stdin read new tokens from stdin (root only)
echo "123456"|passwd --stdin stonebird
中间带 -
使用用户的环境变量
# options
-c 执行完指定的指令后,即恢复原来的身份
date [OPTION]... [+FORMAT]
## 例子
date +"%Y-%m-%d %H:%M:%S"
date +%s
finger root
## 常用options
number 时间长度,后面可接 s、m、h 或 d
<数字>s 秒数
<数字>m 分钟
<数字>h 小时
<数字>d 日期
## 例子
sleep 10 # 默认 s
sleep 3m
# 延迟0.1秒
sleep 0.1
usleep 100000
# 延迟 10 毫秒
sleep 0.01
usleep 10000
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
"*"代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;
"/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
"-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
","分散的数字(不一定连续),如1,2,3,4,7,9。
## 常用options
-e 编辑任务
-l 列出任务
-r 删除任务
-u 指定用户名字
## 例子
3,15 * * * * command # 每小时的第3和第15分钟执行command
3,15 8-11 * * * command # 8-10点,每小时的第3和第15分钟执行command
* */1 * * * /etc/init.d/smb restart # 每小时重启一次
## 常用options
atq 查看系统中的等待作业
-d 删除系统中的等待作业(等效于atrm命令)
## 常用options
-p 打印已经设置的命令别名
## 例子
alias ll=ls -lt
alias -p
time command
## 常用options
-a 声明数组变量
-f 仅显示函数
-F 不显示函数定义
-i 先计算表达式,把结果赋给所声明变量
-p 显示给定变量的定义的方法和值,当使用此选项时,其他的选项将被忽略
-r 定义只读变量
-x 将指定的Shell变量转换成环境变量
## 例子
declare -x file_name="test.txt"
推荐使用,内部会转成declare
-f 指定函数名称
-n 删除指定的变量
-p 列出所有的环境变量
## 例子
export file_name="test.txt"
export |grep file_name
## 常用options
start 启动服务
stop 停止服务
restart 重启服务
enable 使某服务开机自启
disable 关闭某服务开机自启
status 查看服务状态
cat 查看服务配置
list -units --type=service 列举所有已启动服务
## 例子
systemctl start httpd
## 例子
systemctl httpd [stop|start|restart|stauts]
原理是向后翻页
排查系统开机问题的重要参数 /var/log/dmesg
## 常用options
-w 模拟关机,把过程写入到日志文件
-d 不写入日志纪录
-f 强制关机或重启
-i 关机或重启前关掉所有的网络服务
-r 将系统重启
-t 送出警告信息和删除信息之间要延迟多少秒
lsmod命令的指定结果共有三列。 Module:模块名。 Size:模块大小。 Used by:模块是否被其他模块调用。
## 常用options
-a 加载命令行给出的全部的模块
-c 显示所有模块的设置信息
-d 使用排错模式
-l 显示可用的模块
-r 从内核中移除模块
-t 指定模块类型
-s 记录错误信息到系统日志中
install mod
-f 不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入。
-k 将模块设置为自动卸除。
-m 输出模块的载入信息。
-o<模块名称> 指定模块的名称,可使用模块文件的文件名。
-p 测试模块是否能正确地载入kernel。
-s 将所有信息记录在系统记录文件中。
-v 执行时显示详细的信息。
-x 不要汇出模块的外部符号。
-X 汇出模块所有的外部符号,此为预设置
rmmod [-as][模块名称...]
## 常用options
-a 显示模块开发人员
配置内核参数,sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录“/proc/sys”中。
sysctl命令对内核参数的修改仅在当前生效,重启系统后参数丢失。如果希望参数永久生效可以修改配置文件“/etc/sysctl.conf”。
-n 打印值时不打印关键字
-e 忽略未知关键字错误
-N 仅打印名称
-w 当改变sysctl设置时使用此项
-p 从配置文件“/etc/sysctl.conf”加载内核参数设置
-a 打印当前所有可用的内核参数变量和值
-A 以表格方式打印当前所有可用的内核参数变量和值
## 读取
sysctl net.ipv6.neigh.lo.locktime
net.ipv6.neigh.lo.locktime = 0
## 修改
sysctl net.ipv6.neigh.lo.locktime=1
net.ipv6.neigh.lo.locktime = 1
列出SCSI设备及属性 ,了解即可
显示CPU架构的有关信息,了解即可
输出信息 wall命令用于向系统当前所有打开的终端上输出信息
wall this is a test line
-l 显示作业列表时包括进程号
-n 显示上次使用jobs后状态发生变化的作业
-p 显示作业列表时仅显示其对应的进程号
-r 仅显示运行的(running)作业
-s 仅显示暂停的(stopped)作业
配置文件 /etc/chrony.conf
,是ntp命令的替代品
# 安装
yum -y install chrony
systemctl enable chronyd
systemctl start chronyd
# 查看时间同步状态
timedatectl status
# 开启网络时间同步
timedatectl set-ntp true
# 查看 ntp_servers
chronyc sources -v
# 查看 ntp_servers 是否存活
chronyc activity -v
chronyc sourcestats -v
# 强制同步时间
chronyc -a makestep
# 列出时区
timedatectl list-timezones
# 修改时区
timedatectl set-timezone Asia/Shanghai
# 修改时间
timedatectl set-time "2021-04-15 15:50:20"
# 开启ntp
timedatectl set-ntp true/flase
/var/log/message , /var/log/dmesg
检索 systemd 日志,是 CentOS 7 才有的工具。
Flags:
--system # 显示系统日志
--user # 显示当前用户的用户日志
-M --machine=CONTAINER # 在本地容器上操作
-S --since=DATE # 显示不早于指定日期的条目
-U --until=DATE # 显示不晚于指定日期的条目
-c --cursor=CURSOR # 显示从指定光标开始的条目
--after-cursor=CURSOR # 在指定光标后显示条目
--show-cursor # 在所有条目之后打印光标
-b --boot[=ID] # 显示当前启动或指定启动
--list-boots # 显示有关已记录引导的简洁信息
-k --dmesg # 显示当前启动的内核消息日志
-u --unit=UNIT # 显示指定单元的日志
-t --identifier=STRING # 显示具有指定系统日志标识符的条目
-p --priority=RANGE # 显示具有指定优先级的条目
-e --pager-end # 在pager中立即跳转到末尾
-f --follow # 关注期刊
-n --lines[=INTEGER] # 要显示的日志条目数
--no-tail # 显示所有行,即使在跟随模式下
-r --reverse # 首先显示最新的条目
-o --output=STRING # 更改日志输出模式 (short, short-iso,
short-precise, short-monotonic, verbose,
export, json, json-pretty, json-sse, cat)
--utc # 以协调世界时 (UTC) 表示的时间
-x --catalog # 在可用的情况下添加消息说明
--no-full # Ellipsize 字段
-a --all # 显示所有字段,包括长的和不可打印的
-q --quiet # 不显示特权警告
--no-pager # 不要将输出通过管道传输到寻呼机
-m --merge # 显示所有可用期刊的条目
-D --directory=PATH # 显示目录中的日志文件
--file=PATH # 显示日志文件
--root=ROOT # 对根目录下的目录文件进行操作
--interval=TIME # 更改 FSS 密封键的时间间隔
--verify-key=KEY # 指定FSS验证密钥
--force # 使用 --setup-keys 覆盖 FSS 密钥对
Commands:
-h --help # 显示此帮助文本
--version # 显示包版本
-F --field=FIELD # 列出指定字段的所有值
--new-id128 # 生成新的 128 位 ID
--disk-usage # 显示所有日志文件的总磁盘使用情况
--vacuum-size=BYTES # 将磁盘使用量减少到指定大小以下
--vacuum-time=TIME # 删除早于指定日期的日志文件
--flush # 将所有日志数据从 /run 刷新到 /var
--header # 显示期刊头信息
--list-catalog # 显示目录中的所有消息 ID
--dump-catalog # 在消息目录中显示条目
--update-catalog # 更新消息目录数据库
--setup-keys # 生成新的 FSS 密钥对
--verify # 验证日志文件的一致性
# 例子
journalctl -u etcd
journalctl -k
# 显示本次启动后的所有日志:
journalctl -b
journalctl -b -0 # 显示本次启动的信息
journalctl -b -1 # 显示上次启动的信息
journalctl -b -2 # 显示上上次启动的信息 `journalctl -b -2`
journalctl --since="2012-10-30 18:17:16"
journalctl --since "20 min ago"
chown [OPTION]... [OWNER][:[GROUP]] FILE
# 常用options
-R 递归目录
# 例子
chown root test.txt
chown -R stonebird:stonebird test.txt
chmod [OPTION]... MODE[,MODE]... FILE...
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
# 例子
chmod +x test.sh
chmod 644 test.sh
chmod a=rwx file
chmod ug=rwx,o=x file
touch ${file_name}
tree path
# 常用快捷键
:set nu=每行显示行号
:set nonu=取消显示行号
:${line} ## 0,$
## 编辑模式
0=单行首
$=单行末
gg=文件首行
G=文件末行
u 撤销
:m,ns/old/new/g=第m行到n行,所有“old“串替为“new“
ls [OPTION]... [FILE]...
# 常用options
-a # 显示所有文件 含.开头
-l # 详细信息
-d # 只列出文件夹
-f # 只列出文件
-r # 对列出的排序
-t # 通过时间排序access time (-u): atime, access, use;
# change time (-c): ctime, status;
dir [OPTION]... [FILE]...
# 常用和 ls 一样
cd dir
# 常用例子
cd # 切换工作目录
cd dir # 切断到dir
cd - # 切换到之前的目录
cd . # 当前
cd .. # 切换到上层
cp [OPTION]... [-T] SOURCE DEST
## 常用options
-f 若目标文件已存在,则会直接覆盖原文件
-i 若目标文件已存在,则会询问是否覆盖
-p 保留源文件或目录的所有属性
-r 递归复制文件和目录
scp [OPTION]... SOURCE DEST
## 常用options
-4 使用ipv4
-6 使用ipv6
-P 指定远程主机的端口号
-q 不显示复制进度
-r 以递归方式复制
# 例子
scp -r 192.168.10.10:/root/stonebird /root
scp -r /root 192.168.10.10:/root/stonebird
rcp [OPTION]... SOURCE DEST
## 常用options
-r 递归处理,将指定目录下的文件与子目录一并处理
-D 指定远程服务器的端口号
mkdir [OPTION]... DIRECTORY...
## 常用options
-m, --mode=MODE 设置文件或者目录权限, not a=rwx - umask
-p, --parents 递归创建多级目录
## 例子
mkdir -p /home/stonebird/data/run.sh
mkdir -m 755 -p /home/stonebird/data/run.sh
rmdir [OPTION]... DIRECTORY...
## 常用options
-p 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错
-v 显示命令的详细执行过程
rm [OPTION]... [FILE]...
## 常用options
-f 强制删除(不二次询问)
-i 删除前会询问用户是否操作
-r/R 递归删除
-v 显示指令的详细执行过程
## 例子
rm -rf /home/stonebird
mv [OPTION]... SOURCE... DIRECTORY
## 常用options
-i 若存在同名文件,则向用户询问是否覆盖
-f 覆盖已有文件时,不进行任何提示
-b 当文件存在时,覆盖前为其创建一个备份
## 例子
mv data /home/stonebird/
mv run.sh run_test.sh
cat [OPTION]... [FILE]...
## 常用options
-n 显示行数(空行也编号)
-s 显示行数(多个空行算一个编号)
-b 显示行数(空行不编号)
-E 每行结束处显示$符号
-T 将TAB字符显示为 ^I符号
-v 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
-e 等价于”-vE”组合
-t 等价于”-vT”组合
-A 等价于 -vET组合
## 例子
cat -A run.txt
cat -n run.txt
more [options] <file>...
## 常用options
-num 指定每屏显示的行数
-l more在通常情况下把 ^L 当作特殊字符, 遇到这个字符就会暂停,-l选项可以阻止这种特性
+/pattern 在每个文档显示前搜寻该字(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
## 常用键
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
less [options] <file>...
## 常用键
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
head [OPTION]... [FILE]...
## 常用options
-n <数字> 定义显示行数
## 例子
head -n 50 run.txt
tail [OPTION]... [FILE]...
## 常用options
-f 持续显示文件最新追加的内容
-n <N> 输出文件的尾部N(N位数字)行内容
## 例子
tail -n 50 run.txt
tail -f run.log
grep [OPTION]... PATTERNS [FILE]...
## 常用options
-i 忽略大小写
-n 列出所有的匹配行,显示行号
-v 显示不包含匹配文本的所有行
-o 仅显示匹配的行的非空部分
-E 支持扩展的正则表达式
awk [POSIX or GNU style options] -f progfile [--] file ...
## 常用options
-F 指定输入时用到的字段分隔符
## 内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
## 常用options
-i 在原文件编辑
-n或--quiet或--silent 仅显示script处理后的结果。
## 动作说明
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦!
软连接:L开始,删除源文件,会影响链接文件 硬链接:和源文件一样的基本信息,删除原文件对链接文件没影响
ln [OPTION]... [-T] TARGET LINK_NAME
## 常用options
-s 创建软连接
diff [OPTION]... FILES
## 常用options
-a 逐行比较文本文件
-y 以并列的方式显示文件的异同之处
## 常用options
-b 查找二进制程序或命令
-B 从指定目录下 查找二进制程序或命令
-m 查找man手册文件
find [path...] [expression]
## 常用options
-name 按名称查找
-size 按大小查找
-user 按属性查找
-type 按类型查找
-iname 忽略大小写
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
## 例子
find / -type d -perm 1777
locate ${file_name}
## 常用options
-d 指定目录
sort [OPTION]... [FILE]...
## 常用options
-n 依照数值的大小排序
-r 以相反的顺序来排序
-t <分隔字符> 指定排序时所用的栏位分隔字符
-k 指定需要排序的栏位
## 例子
sort -t : -k 3 -n user.txt
uniq [OPTION]... [INPUT [OUTPUT]]
## 常用options
-c 打印每行在文本中重复出现的次数
-d 每个重复纪录只出现一次
-u 只显示没有重复的纪录
-i, --ignore-case 忽略大小写差异
split [OPTION]... [FILE [PREFIX]]
## 常用options
-b 指定每多少字节切成一个小文件
-l 指定多少行
-e 将每个ARG视为输入行
tar [OPTION...] [FILE]...
## 常用options
-c 建立新的备份文件
-C <目录> 仅压缩指定目录里的内容或解压缩到指定目录
-x 从归档文件中提取文件
-z 通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz
-f <备份文件> 指定备份文件
-v 显示指令执行过程
-r 添加文件到已经压缩的文件
-v 显示操作过程
-j 通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2
# 例子
tar czvf backup1.tar.gz /etc
tar cjvf backup2.tar.bz2 /etc
tar xvf backup4.tar -C /etc
## 常用options
-d 更新压缩包内文件
# 例子
zip -r backup1.zip /etc
unzip backup1.zip
gzip 只能针对普通文件(regular file)进行压缩和解压,对于文件夹、符号链接等是不支持的。
-a 使用ASCII文字模式
-d 解开压缩文件
-f 强行压缩文件
-l 列出压缩文件的相关信息
-c 把压缩后的文件输出到标准输出设备,不去更动原始文件
-r 递归处理,将指定目录下的所有文件及子目录一并处理 # 对目录下的单个文件
-q 不显示警告信息
gzip hero.avi
gzip -d hero.avi.gz
由于 bzip2 与 gzip 相比,其压缩稳定性和效果都更好,对应单个文件bzip2 命令和 bunzip2 命令,就可以实现了
bzip2 abc1.txt
bunzip2 A.txt.bz2
tar -xjvf curl-7.47.1.tar.bz2 /dir
tar -zvf curl-7.47.1.tar.bz2
dd OPTION
## 例子
dd if=anaconda-ks.cfg of=ana.cfg count=1 bs=50
chattr [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...
## 常用options
-R 递归处理目录下的所有文件
-v 设置文件或目录版本
-V 显示指令执行过程
+ 开启文件或目录的该项属性
-- 关闭文件或目录的该项属性
= 指定文件或目录的该项属性
# 常用权限
i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
## 例子
chattr +i run.sh
## 常用options
-a 列出目录中的所有文件,包括隐藏文件
-d 只显示目录名称
-R 递归地处理指定目录下的所有文件及子目录
## 例子
lsattr run.sh
cksum ${file_name}
md5sum ${file_name}
cmp file...
file ${file_name}
cut [OPTIONS] FILE...
## 常用options
-c 以字符为单位进行分割
-b 以字节为单位进行分割
-d 自定义分隔符,默认为制表符”TAB”
-f 显示指定字段的内容
-n 取消分割多字节字符
## 例子
cut -d : -f 1 /etc/passwd
-n length 只格式化输入文件的前length个字节
-C 输出规范的十六进制和ASCII码
-b 单字节八进制显示
-c 单字节字符显示
-d 双字节十进制显示
-o 双字节八进制显示
-x 双字节十六进制显示
-s 从偏移量开始输出
-e 指定格式字符串,格式字符串包含在一对单引号中
-v 显示所有输入数据
hexdump testfile
在对象文件或二进制文件中
ls |strings
-L 支持符号链接
-f 显示文件系统的信息
-t 以简洁的方式输出
stat hurl.go
File: hurl.go
Size: 938 Blocks: 8 IO Block: 4096 regular file
Device: fc01h/64513d Inode: 929074 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 500/ ubuntu) Gid: ( 500/ ubuntu)
Access: 2021-12-05 12:05:42.491584506 +0800
Modify: 2021-12-05 10:50:02.472892197 +0800
Change: 2021-12-05 12:05:41.559580684 +0800
Birth: -
-A 全部显示,有冲突内容用括号括起来
-a 将所有文件视为文本
-T 使制表符对齐
diff3 file1 file2 file3
vimdiff file1 file2
## 例子
paste f1 f2
## 常用options
-a 删除任何类型的文件
-f 强制删除文件或目录,其效果类似rm指令的”-f”参数
## 例子
tmpwatch 24 /tmp/ #删除tmp目录24小时未使用的文件
## 常用options
-1 不显示只在第1个文件里出现过的列
-2 不显示只在第2个文件里出现过的列
-3 不显示只在第1和第2个文件里出现过的列
## 常用options
-c ——complerment:取代所有不属于第一字符集的字符;
-d ——delete:删除所有属于第一字符集的字符;
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示;
-t --truncate-set1:先删除第一字符集较第二字符集多出的字符。
## 例子
echo "HELLO WORLD" | tr 'A-Z' 'a-z'
## 常用options
-w 统计字数,或--words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
-c 统计字节数,或--bytes或--chars:只显示Bytes数
-l 统计行数,或--lines:只显示列数
-m 统计字符数
-L 打印最长行的长度
## 例子
wc -l stonebird.txt
zcat ${tar_name}
tac ${file_name}
dos2unix ${file_name}
ps [options]
## 常用options
a 显示现行终端机下的所有程序,包括其他用户的程序
e 列出程序时,显示每个程序所使用的环境变量
f 用ASCII字符显示树状结构,表达程序间的相互关系
g 显示现行终端机下的所有程序,包括所属组的程序
-G <群组识别码> 列出属于该群组的程序的状况
h 不显示标题列
-H 显示树状结构,表示程序间的相互关系
-l 采用详细的格式来显示程序状况
L 列出栏位的相关信息
u 以用户为主的格式来显示程序状况
-U <用户识别码> 列出属于该用户的程序的状况
U <用户名称> 列出属于该用户的程序的状况
v 采用虚拟内存的格式显示程序状况
x 显示所有程序,不以终端机来区分
## 例子
ps -ef
ps -auxl
top [options]
## 常用options
-d <秒> 改变显示的更新速度
-p pid(s) 查看指定pid
-o field
-w [cols]
## 例子
top
top -p 1
## 常用options
-o 只显示有io操作的进程
-n NUM 显示NUM次,主要用于非交互式模式
-d SEC 间隔SEC秒显示一次
-p PID 监控的进程pid
-u USER 监控的进程用户
## 常用options
-i 指定要监控的网卡
## 常用options
-c 仅显示CPU使用情况
-d 仅显示设备利用率
## 常用options
-l 列出信号量
## 常用信号量 -9 -15
## 常用options
-o 仅向找到的最小(起始)进程号发送信号
-n 仅向找到的最大(结束)进程号发送信号
-P 指定父进程号发送信号
-g 指定进程组
-t 指定开启进程的终端
## 例子
pkill httpd
pkill -o
pkill -n
## 常用options
-u 杀死指定用户的进程
## 例子
killall -9 nginx
## 常用options
-a 显示活动内页
-f 显示启动后创建的进程总数
-m 显示slab信息
-n 头信息仅显示一次
-s 以表格方式显示事件计数器和内存状态
-d 报告磁盘状态
-p 显示指定的硬盘分区状态
## 例子
vmstat -p /dev/vdb1
## 常用options
-c 显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息
-d 显示磁盘读写数据大小
-n 显示网络状态
-l 显示系统负载情况
-m 显示内存使用情况
-g 显示页面使用情况
-p 显示进程状态
-s 显示交换分区使用情况
-r I/O请求情况
-y 系统状态
## 例子
dstat -n
dstat -d
## 常用options
-a 显示所有连线中的Socket
-p 显示正在使用Socket的程序识别码和程序名称
-l 仅列出在监听的服务状态
-t 显示TCP传输协议的连线状况
-u 显示UDP传输协议的连线状况
-i 显示网络界面信息表单
-r 显示路由表信息
-n 直接使用IP地址,不通过域名服务器
## 例子
netstat -a
## 常用options
-n 不解析服务名称,已数字方式显示
-a 显示所有套接字
-l 显示处于监听状态的套接字
-o 显示计时器信息
-e 显示详细的套接字信息
-m 显示套接字的内存使用情况
-p 显示使用套接字的进程
-i 显示内部的TCP信息
-s 显示套接字使用概况
-4 仅显示ipv4的套接字
-6 仅显示ipv6的套接字
-0 显示PACKET套接字
-t 只显示TCP套接字
-u 只显示UDP套接字
-d 只显示DCCP套接字
-w 只显示RAW套接字
-x 只显示 Unix套接字
-D 将原始TCP套接字信息转储到文件
## 例子
ss -t
## 常用options
-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
## 例子
free -m
## 常用options
-a 列出打开文件存在的进程
-c <进程名> 列出指定进程所打开的文件
-g 列出GID号进程详情
-d <文件号> 列出占用该文件号的进程
+d <目录> 列出目录下被打开的文件
+D <目录> 递归列出目录下被打开的文件
-n <目录> 列出使用NFS的文件
-i <条件> 列出符合条件的进程
-p <进程号> 列出指定进程号所打开的文件
-u 列出UID号进程详情
## 例子
lsof -a
nohup command > linuxcool.com 2>&1
1、XFS是一个具有非常高性能且可扩展的文件系统,同时在大多数要求的应用程序中都会进行常规部署。XFS提供了一种健壮的、优秀的以及功能丰富的文件系统,它具有的可伸缩性能够满足最苛刻的存储需求。 2、ext4:ext3的升级版本,ext4对ext3做了很多深层次的改进,设计更合理、性能更好、更可靠,同时还引入了一些新功能。 3、ext3:ext2的升级版本,其主要优点是在ext2的基础上加入了记录数据的日志功能。 4、ext2:支持标准Unix文件类型,可用于多种存储介质,向上兼容性好。
## 常用options
-a 自动修复文件系统
-f 强制检查
-A 依照/etc/fstab文件来检查全部文件系统
-N 不执行指令,仅列出实际执行会进行的动作
-r 采用互动模式,在执行修复时询问问题
-R 略过指定的文件系统不予检查
-t 指定要检查的文件系统类型
-T 执行fsck指令时,不显示标题信息
-V 显示指令执行过程
## 常用options
-t 指定挂载类型
-a 加载文件“/etc/fstab”中描述的所有文件系统
-r 以只读的形式挂载
-rw 以读写的形式挂载
## 例子
mount /dev/vdb /mnt/stonebird
## 常用options
-a 加载文件“/etc/fstab”中描述的所有文件系统
## 例子
umount /dev/sdb
## 常用options
-a 显示目录中所有文件大小
-k 以KB为单位显示文件大小
-m 以MB为单位显示文件大小
-g 以GB为单位显示文件大小
-h 以易读方式显示文件大小
--max-depth=N 指定统计深度
-s 仅显示总计
## 例子
du -sh . |sort -n
## 常用options
-a 显示所有系统文件
-h 以容易阅读的方式显示
-H 以1000字节为换算单位来显示
-t <文件系统类型> 只显示指定类型的文件系统
-T 输出时显示文件系统类型
## 例子
df -h
parted [options] [device [command [options...]...]]
## 常用options
-a 为新创建的分区设置对齐方式
-s 脚本模式
-v 显示版本号
-l 列出所有块设备上的分区布局
-m 显示机器可解析的输出
## 常用options
-l 列出指定的外围设备的分区表状况
## 菜单操作说明
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能
-a 显示所有设备
-t 显示拓扑结构信息
fio --name=/dev/sdX --ioengine=libaio --direct=1 --fsync=1 --readwrite=randwrite --blocksize=4k --runtime=300
## 常用options
-d 使用Socket的SO_DEBUG功能
-c 指定发送报文的次数
-i 指定收发信息的间隔时间
-I 使用指定的网络接口送出数据包
-l 设置在送出要求信息之前,先行发出的数据包
-n 只输出数值
-p 设置填满数据包的范本样式
-q 不显示指令执行过程
-R 记录路由过程
-s 设置数据包的大小
ping -c 4 -i 3 www.linuxcool.com
ping6 2408:877e:31::7
ping -6 # windows
ip addr
## 常用options
-n 直接显示数字形式的ip地址
-e netstat格式显示路由表
-net 到一个网络的路由表
-host 到一个主机的路由表
add 增加指定的路由记录
del 删除指定的路由记录
gw 设置默认网关
dev 路由记录所表示的网络接口
## 例子
route -n
route add -net 192.168.10.0 netmask 255.255.255.0 dev ens160
ifup eth0
ifdown eth0
## 常用options
add<地址> 设置网络设备IPv6的IP地址
del<地址> 删除网络设备IPv6的IP地址
down 关闭指定的网络设备
up 启动指定的网络设备
IP地址 指定网络设备的IP地址
## 例子
ifconfig ens160 down
ifconfig ens160 up
ifconfig ens160 192.168.10.20 netmask 255.255.255.0
telnet ip [port]
nc命令 全称netcat,用于TCP、UDP或unix域套接字(uds)的数据流操作,它可以打开TCP连接,发送UDP数据包,监听任意TCP 和UDP端口,同时也可用作做端口扫描,支持IPv4和IPv6,与Telnet的不同在于nc可以编写脚本。
nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>]
[-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
## 常用options
-4 只使用IPV4
-6 只使用IPV6
-c 使用tls连接或者监听
-D 启用socket调试开关
-g <网关> # 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> # 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> # 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> # 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> # 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> # 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用
## 常用options
-o 指定新的本地文件名
-O 保留远程文件的原始名
-u 通过服务端配置的用户名和密码授权访问
-I HEAD请求
-i 额外打印请求头
-L 追踪http重定向
-u 指定登录账户密码信息
-s 静默模式,不输出任何信息
-T 上传文件
## 例子
curl -iL "https://www.hjxstbserver.xyz"
## 常用options
-O 定义本地文件名
## 例子
curl -iL "https://www.hjxstbserver.xyz/download/test.sh"
host linuxcool.com #查询域名对应的ip
## 常用options
@ 指定进行域名解析的域名服务器
-b 使用指定的本机ip地址向域名服务器发送域名查询请求
-f 指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息
-p 指定域名服务器所使用端口号
-t 指定要查询的DNS数据类型(默认为A)
-x 执行逆向域名查询
-4 使用ipv4(默认)
-6 使用ipv6
dig www.linuxcool.com
## 常用options
-sil 不显示任何警告信息
exit 退出命令
server 指定解析域名的服务器地址
set type=soa 设置查询域名授权起始信息
set type=a 设置查询域名A记录
set type=mx 设置查询域名邮件交换记录
nslookup linuxcool.com
notebook单独记录
notebook单独记录
notebook单独记录
-a 以文本方式传输(ascii)
-b 以二进制方式传输(binary)
-e 对控制字符转义(escape),这可以保证文件传输正确
-i 后接命令,在接收端执行命令
# mobaxterm
sz filename
ctrl + 鼠标右键
Receive file using Z-modem
rz
ctrl + 鼠标右键
Send file using Z-modem
选择上传文件
FTP>ascii: 设定以ASCII方式传送文件(缺省值)
FTP>bell: 每完成一次文件传送,报警提示.
FTP>binary: 设定以二进制方式传送文件.
FTP>bye: 终止主机FTP进程,并退出FTP管理方式.
FTP>case: 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母.
FTP>cd: 同UNIX的CD命令.
FTP>cdup: 返回上一级目录.
FTP>chmod: 改变远端主机的文件权限.
FTP>close: 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除.
FTP>delete: 删除远端主机中的文件.
FTP>dir [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件.
FTP>get [remote-file] [local-file] 从远端主机中传送至本地主机中.
FTP>help [command] 输出命令的解释.
FTP>lcd: 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录.
FTP>ls [remote-directory] [local-file] 同DIR.
FTP>macdef: 定义宏命令.
FTP>mdelete [remote-files] 删除一批文件.
FTP>mget [remote-files] 从远端主机接收一批文件至本地主机.
FTP>mkdir directory-name 在远端主机中建立目录.
FTP>mput local-files 将本地主机中一批文件传送至远端主机.
FTP>open host [port] 重新建立一个新的连接.
FTP>prompt: 交互提示模式.
FTP>put local-file [remote-file] 将本地一个文件传送至远端主机中.
FTP>pwd: 列出当前远端主机目录.
FTP>quit: 同BYE.
FTP>recv remote-file [local-file] 同GET.
FTP>rename [from] [to] 改变远端主机中的文件名.
FTP>rmdir directory-name 删除远端主机中的目录.
FTP>send local-file [remote-file] 同PUT.
FTP>status: 显示当前FTP的状态.
FTP>system: 显示远端主机系统类型.
FTP>user user-name [password] [account] 重新以别的用户名登录远端主机.
FTP>? [command]: 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。
FTP>! 从 ftp 子系统退出到外壳。
/etc/shells 文件记录当前用户安装了那些shell,可以使用 chsh -l
和 cat /etc/shells
查看当前环境可以使用的shell
chsh -s /bin/bash
## 常用options
-e 支持转义
-e "\n" 换行,光标移至行首
-e "\r" 光标移至行首,但不换行
readonly name
## 例子
match 中匹配 REGEXP 字符串并返回匹配字符串的长度
substr 从 POS 位置获取长度为 LENGTH 的字符串
index 杳找子字符串的起始位置
length 计算字符串的长度
expr match "123 456 789" ".*5" # 6 匹配字符串的长度,若找不到则返回 0
expr substr " this is a test" 3 5 # his i
expr index "test for the game" "e" # 2
expr length "this is a test" # 14
expr 10 + 10
expr 10 - 10
expr 20 / 10
expr 10 \* 10 # * 需要转义
expr \( 10 + 10 \) \* 2 + 100
## 例子
a=1
let a++ # a=`expr $a + 1`
读取从键盘或文件输入的数据,常用参数
-a array 将读取的单词分配给数组的顺序索引变量 ARRAY,从零开始
-d delim 继续直到读到 DELIM 的第一个字符,而不是比换行符
-e 使用 Readline 获取交互式 shell 中的行
-p prompt 输出之前没有尾随换行符的字符串 PROMPT 尝试阅读
-r 不允许反斜杠转义任何字符
-s 不回显来自终端的输入
-t timeout 超时并返回失败
-u 从文件描述符 FD 读取而不是标准输入
读取用户输入
#!/bin/bash
echo -n "please input your name:"
read name
echo "welcome !!! $name"
exit 0
读取密码 -s 不回显
#!/bin/bash
read -s -p "please input your code:" password
echo "hehe, your password is $password"
读取文件 -u
#! /bin/bash
exec 3< test.txt
while read -u 3 var
do
echo "$var"
done
echo "finished"
exec 3<&-
# 通过“exec 3<test.txt”生成了编号为 3 的文件描述符,接着通过“read-u 3 var”来读取文件内容。最后通过“exec 3<&-”关闭了 3 号文件描述符。
读取文件管道
#!/bin/bash
count=1
cat test.txt | while read line
do
echo "Line $count:$line"
let count=$count+1
done
echo "finished"
echo "Line no is $count"
exit 0
读取文件重定向 个人比较常用
#!/bin/bash
count=0
while read line
do
let count=$count+1
echo "Line $count:$line"
done < test.txt
echo "finished"
echo "Line no is $count"
exit 0
#test命令检测条件是否成立
if test $a = $b ;then
Command
fi
$[a+b]=expr $a + $b
## 常用options
-a:标示已修改的变量,以供输出至环境变量。
-d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。
-e:若指令传回值不等于0,则立即退出shell。
-u:当执行时使用到未定义过的变量,则显示错误信息。
-x:执行指令后,会先显示该指令及所下的参数。
-p:启动优先顺序模式。
## 例子
set -en
-f 仅删除函数
-v 仅删除变量
unset -v hjx
printf "%-5s %-10s %-4s\n" NO Name Mark
printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456
printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
printf "%-5s %-10s %-4.2f\n" 03 Jeff 98.4323
配合着管道使用
常用参数
-n 多行输出
-d 自定义一个定界符
-I 指定一个替换字符串{}
-t 打印出 xargs 执行的命令
-p 执行每一个命令时弹出确认
cat test.txt | xargs -n3
cat arg.txt | xargs -I {} ./sk.sh -p {} -l
echo "1.212*3" | bc
-f 格式
-s 字符串
-w 在列前添加0 使得宽度相同
## 例子
seq 1 5