帮助类命令
man command // 详细列出命令所有参数含义
whatis command // 简要说明作用
whatis -w "loca*" // 正则匹配
info command // 详细说明命令作用
which command //查看命令的binary文件所在路径
whereis command // 查看程序的搜索路径
文件及目录管理
创建和删除
mkdir // 创建
rm // 删除
rm -rf 目录名 // 删除非空目录
rm *log = find ./ -name "*log" -exec rm {} \ // 删除日志
mv // 移动
mv old_directory_name/ old_directory_name/ // 移动目录到新目录下
mv old_directory_name/* old_directory_name/ // 移动旧目录中全部内容到新目录下
cp // 复制
cp -r // 复制目录
find ./ | wc -l // 查看当前目录下文件个数
切换目录
cd // 切换目录
cd - // 切换上一个目录
cd or cd ~ // 返回home目录
pwd // 显示当前路径
列出目录项
ls // 显示所有
ls -lrt // 按时间排序
ls -a // 查看隐藏文件
可通过设置别名的方式来缩写命令,修改/home/用户名/.bashrc 中命令 alias lsl=’ls -lrt’
查找目录和文件
# find是实时查找,相对较慢
find ./ -name "core*" | xargs file // 查找文件或目录
find ./ -name '*.o' // 查找目标文件夹中是否有目标名称文件
find ./ -name "*.o" -exec rm {} \ // 删除目录中所有目标名称文件
# locate以文件系统建立索引数据库,当文件更新,定期执行更新命令来更新索引库
locate string // 寻找包含string的路径
updatedb // 更新索引库,获得最新文件索引
查看文件内容
cat -n // 显示行号
ls -al | more // 按页显示列表内容
head - 10 // 头10条
tail - 5 // 尾巴5条
tail -f a.log // 动态刷新显示最新内容
diff file1 file2 // 查看两文件差异
perl -pe 's/(关键词)/\e[1;颜色$1\e[0m/g' // 查找多个关键字 高亮显示
查找文件内容
grep "xxx" // 查找包含xxx的行
grep -v "xxx" // 查询不包含xxx的行
grep -P "" -o // 正则查找并将匹配值输出
grep -w "" // 全文匹配
grep "" -c // 计算行数
wc -l // 等价
# 查找某文件中单词出现次数
grep -o [objString] [filename] | wc -l
vi 下 :%s/[objStr]//gn
修改文件or目录权限
chown // 改变文件所有者
chmod // 改变rwx权限
chown -R xxx yyy/ // 递归子目录修改
chmod a+x xxx // 增加可执行权限
给文件增加别名
ln cc ccCopy // 硬链接,删除一个仍然能找到(类似于深拷贝含义)
ln -s cc ccCopy // 软连接,删除源后无法使用
管道和重定向
| // 批处理连接使用
; // 串联
&& // 前面成功才执行后一条
|| // 前面失败才执行后一条
>> // 重定向
> &1 // 重定向到同一文件中
:> a.log // 清空文件
骚操作集合:
ls /proc && echo suss! || echo failed. // 提示命令是否成功
if ls /proc; then echo suss; else echo fail; fi // 等价
ls data/*.log > all.log > &1 // 重定向多个文件到一个中
ls data/*.log &> all.log // 等价操作
环境变量
启动账号后自动执行.profile文件,可进行环境变量配置,将安装的软件路径写入path中
bash快捷输入or删除
ctrl + u // 删除光标到行首的所有字符,可设置为删除全行
ctrl + w // 删除光标到前边最后一个空格间所有字符
ctrl + h // backspace,删除光标前字符
ctrl + r // 匹配最相近的文件,输出
文本处理
find
find path \( -name "*.txt" -o -name "*.pdf"\) -print // 查找当前目录下txt和pdf 【多后缀匹配】
find . -regex ".*\(\.txt|\.pdf\)$" // 正则查找.txt和pdf
find . -iregex // 忽略大小写的正则
find . ! -name "*.txt" -print // 查找所有非txt文本 ! 否定参数
find . -maxdepth 1 -type f // 指定搜索升读
find . -type d -print // 只列出所有目录 -type f 文件 / l 符号链接 / d 目录
# find无法直接区分二进制文件与文本文件,通过file 命令检查具体类型
file filename
ls-lrt | awk '{print $9}' | xargs file | grep ELF | awk '{print $1}' | tr -d ':'
• find . -atime 访问时间 | -mtime 修改时间(内容修改) | -ctime 变化时间(元数据or权限变化)
• find . -atime 7 -type f -print // 最近第七天被访问过的所有文件
• find . -atime -7 -type f -print // 最近七天内访问过的所有文件
• find . -atime +7 type f -print // 七天前被访问过的所有文件
• find . -type f -size +2k // 按k M G 查找大于的文件
• find . -type f -perm 644 -print // 具有可执行 权限的文件
• find . -type f -user root -print // 找到用户具有所有文件
后续操作
find . -type f -name "*.swp" -delete // 删除当前文件目录下所有swap文件
find . -type f -name "*.swp" | xargs rm // 等价
find . -type f -user root -exec chown weber {} \; // 当前目录所有权变更为weber PS: {}为特殊字符,替换每个匹配的文件名。
find . -type f -user root -exec cp {} OLD \; // 找到的所有文件copy到另一个目录
-exec ./commands.sh {} \; // exec下多个命令可写成脚本一起执行
-print 定界符,默认\n作为定界符,-print0使用’\0’作为文件定界符,这样搜索包含空格文件
grep文本搜索
grep match_pattern file // 默认访问匹配行
常用参数:
- -o 只输出匹配的文本行
- -v 只输出没有匹配的文本行
- -c 统计包含文本次数
- -n 打印行号
- -i 忽略大小写
- -L 只打印文件名
- -r 递归查找某目录是否有某字符 ```shell grep “class” . -R -n // 多级目录文本递归搜索 grep -e “class” -c “vitural” file // 多模式匹配 grep “test” file* -lZ | xargs -0 rm 输出以0作为结尾符的文件名(-z)
cat LOG.* | tr a-z A-Z | grep “FROM” | grep “WHERE” > b // 将所有带where条件的sql查找出来
grep -r hello ./ // 查看当前目录下所有包含某字符串的文件
<a name="eiJvO"></a>
## xargs命令行参数转换
```shell
cat file.txt | xargs // 将数据转化为特定命令行参数,搭配命令使用
cat single.txt | xargs -n 3 // 指定每行显示的字段数, n为文本间定界符
xargs参数说明:
- -d 定义定界符 默认空格,多行为n
- -n 指定输出为多行
- -l {} 指定替换字符串,xargs拓展是被替换,用于待执行的命令需要多个参数时
- -0 指定0为输入定界符
cat file.txt | xargs -I {} ./command.sh -p {} -1
sort排序
- -n数字排序
- -d 字典序
- -r 逆序排序
-k N 指定第N列排序
sort -nrk 1 log.txt sort -bd data // 忽略空格之类的前导空白字符
uniq 消除重复行
sort unsort.txt | uniq // 消除重复行 sort unsort.txt | uniq -d // 找出重复行 sort unsort.txt | uniq -s 开始位置 -w 比较字符数
tr进行转换
echo 12345 | tr '0-9' '9876543210' // 加解密转换,替换对应字符 cat text | tr '\t' ' ' // 制表符转空格 cat file | tr -d '0-9' // 删除所有数字 cat file | tr -c '0-9' // 获取文件中所有数字 cat file | tr -d -c '0-9 \n' 删除所有非数字数据 cat file | tr -s ' ' // 压缩文本中出现的重复字符,压缩多余空格
cut按列切分文本
cut -f2,4 filename // 截取第2列和第4列 cut -f3 --complement filename 去除除了第3列的所有 cut -f2 -d ";" filename // 指定定界符
cut 范围
- N- 第N个到结尾
- -M 第一个到M个
- N-M N到M个
cut 单位
- -b 字节单位
- -c 字符单位
- -f 字段单位(定界符)
paste 按列拼接文本
paste file1 file2 -d ","
wc统计行和字符
wc -l file 行数 wc -w file 单词书 wc -c file 统计字符数
sed文本替换
sed 's/text/replace_text/' file // 替换每一行第一处的text sed 's/text/replace_text/g' file // 全局替换 sed -i 's/text/replace_text/g' file // -i替换原文件 sed '/^$/d' file // 移除空白行 sed 's/\w+/[&]/g' // 通过&引用已匹配的字符串 sed 's/hello\([0-9]\)/\1/'第一个匹配的括号内容用1引用 sed 's/$p/$r/g' // 使用双引号对表达是求值,$引用
awk数据流处理工具
特殊变量:awk ' BEGIN{ statements } statements2 END{ statements } ' awk ' BEGIN { print "begin"} {print} END { print "end" } ' echo | awk ' {var1 = "k1" ; var2 = "k2"; var3 = "k3"; \ print var1, var2, var3}' // 使用空格作为拼接符 echo | awk ' {var1 = "k1" ; var2 = "k2"; var3 = "k3"; \ print var1"-"var2"-" var3}' //使用""作为连接符
NR 表示记录数量,对应当前行号
- NF 当前字段数
- $0 当前行的文本内容
- $1 第一个字段的文本内容
- $2 第二个字段的文本内容
vi/vim
```shell替换操作
[range]: 不写默认当前行
数字指定行号
%代表全文,.代表当前行,$代表最后一行,结合使用等价于%
3,9 指定行范围
{pattern}: 原字符串,支持正则
\
替换完整单词 {string}: 目标字符串
[flags]: 模式选择
无 默认替换第一个
-g 全局替换
-c 每次询问
-e 忽略错误
:[range]s/{pattern}/{string}/[flags] [count]
示例
:%s/aaa/bbb/g
统计次数
:%s/[objStr]//gn
<a name="OiFcw"></a>
# 磁盘管理
<a name="53aw2"></a>
## 查看磁盘空间
```shell
df -h // 查看磁盘空间利用大小 -h = human以易读的方式显示结果
du -sh // 查看当前目录所占空间大小 -s 递归显示整个目录大小
du -sh | sort // 查看排序后
打包/压缩
打包tar
tar -cvf etc.tar /etc // 仅打包
- -c 打包选项
- -v 打包进度
- -f 使用档案文件
压缩gzip
gzip test.log // 生成test.log.gz
解包/解压缩
解包tar
tar -xvf demo.tar
解压缩
gunzip demo.tar.gz bzip2 -d demo.tar.bz2
进程管理
查询
ps -ef // 正在运行 ps -lu username // 查询归属用户xxx的 pgrep // 查询进程id pgrep -l xxx // 查询进程名中包含xxx的进程 ps -ajx // 完整显示所有进程 top // 显示实时进程 lsof -i:3306 // 查看端口占用的进程 lsof -u username // 查看当前用户的进程文件 lsof -c init // 查询init进程当前打开文件 lsof -p pid // 查询指定id的进程打开文件 lsof +d dirname/ // 查询指定目录下被进程开启的文件,+d递归目录
终止进程
kill PID // 进程号 kill -9 PID // 杀死相关进程 kill %job // 杀死job工作
进程监控
进入交互界面输入字符命令:• top // 查看使用内存最多的进程
• P // 根据CPU 使用百分比大小排序
• M // 根据驻留内存大小排序
• i // 不显示闲置或僵死进程
• c // 显示命令完全模式分析线程栈
pmap PID // 输出进程内存情况
性能监控
CPU、内存、页面交换、硬盘…
sar -u num1 num2 // num1表示每几秒采样一次,num2表示总共采样几次 sar -q 1 2 // 查看CPU平均负载,查看运行队列的进程数,系统上的进程大小、平均负载 sar -r 1 2 // 查看内存使用情况 free -m // 查看内存使用量 sar -W 1 2 // 查询页面交换 df -h // 查询硬盘使用 du -sh vmstat n m // 查看cpu、内存使用情况
网络工具
查询网络服务和端口
netstat -a // 列出所有端口 netstat -at // 列出所有tcp端口 netstat -l // 列出所有有监听的服务状态 netstat -antp | grep PID // 查询端口
一切皆文件lsof(list open files)
Linux中任何事物都以文件形式存在,可以用来访问网络连接和硬件,lsof列出当前系统打开的所有文件lsof -i:8081 // 查询端口对应进程id ps -ef | grep 8081 // ps查进程详情
网络路由
route -n // 查看路由状态 ping ip // 发送ping 包 traceroute ip // 探测前往地址ip的路由路径 host domain // dns查询 host ip
镜像下载
wget url // 直接下载文件or网址 wget url -limit-rate // 下载限速 wget url -o // 指定日志文件输出写入 wget url -c // 断点传输
FTP、SFTP、LFTP、SSH
```shell ssh id@host // ssh登录 sftp id@host // ftp/sftp文件传输
sftp登录后,可使用如下命令,进行更多操作:
get filename // 下载 put filename // 上传 ls // 列出host当前路径下文件 cd // 切换host上路径 lls // 列出本机当前路径下文件 lcd // 更改本机路径
<a name="O2i7H"></a>
## 网络复制
```shell
scp localpath id@host:path // 将本地localpath指向的文件上传到远程主机的path路径
用户管理工具
用户
useradd -m username // 添加用户
passwd username // 修改密码
userdel -r username // -r删除用户同时删除用户信息
su userB // 切换用户B
用户组
groups // 查看当前用户所属的组
usermod -G groupName username // 将用户加入到组
usermod -g groupName username // 变更用户所属的根组
more /etc/passwd // 查看所有用户及权限
more /etc/group // 查看所有用户组及权限
用户权限
ls -l // -l查看文件的属性字段
chmod userMark(+ | -)PermissionMark
# 数字方式:
chmod 421 filename // 4:属主权限、2:指定组权限、1:指定其他用户权限
chmod 644 filename
# 更改文件or目录的拥有者
chown username dirOrFile
chown -R weber server // 递归修改目录下所有文件所有者
userMark:
- u // 用户
- g // 组
- o // 其他用户
- a // 所有
PermissionMark:
- r // 读
- w // 写
- x // 执行
系统管理及资源管理
系统管理
uname -a // 查看Linux版本 lsb_release -a // 同上 cat /etc/redhat-release // 查看系统版本 more /etc/release // 查看系统版本 cat /etc/issue // 同上 sar -u 1 2 // 查看CPU使用情况 sar /proc/cpuinfo // 查询CPU 信息 cat /proc/cpuinfo | grep processor | wc -l // 查看cpu的核的个数 cat /proc/meminfo // 查看内存信息 pagesize // 显示内存page大小 arch // 显示架构
修改时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
显示编码
```shell查看本地语言包
locale -a
完全中文支持
yum groupinstall chinese-support
修改配置文件
vim /etc/sysconfig/i18n
执行生效
source /etc/sysconfig/i18n
vim /etc/locale.conf source /etc/locale.conf ``` /etc/sysconfig/i18n
LANG=”zh_CN.UTF-8” LC_ALL=”zh_CN.UTF-8”
/etc/locale.conf
LANG=”zh_CN.UTF-8”