本文总结作者在 Linux 下日常操作命令及实用方法。
统计目录(或文件)所占磁盘空间的大小 — du
|
|
硬盘检测 — omreport
|
|
查看内核信息
|
|
虚拟内核 — /proc
/proc 完全是内核虚拟的。内核将一些系统信息都放在/proc目录下一文件和文本的方式显示出来,如:/proc/cpuinfo、/proc/meminfo。
查看操作系统版本号
|
|
判断当前系统的PATH中是否有该命令的目录 — pathmunge
|
|
判断当前系统的PATH中是否有该命令的目录,如果没有,则判断是要将该目录放于PATH之前还是之后。
定时任务 — crontab
crontab -l 查看定时任务
crontab -e 编辑定时任务
|
|
指定运行环境变量:
使用 date 时,需要转义:
|
|
run-parts 来指定目录
注: 修改完 crontab 文件后,不会立即执行,需要大约2-3 分钟后执行。
单词统计 — wc
常用参数:
-c或--bytes或--chars 只显示Bytes数
-l或--lines 只显示列数
-w或--words 只显示字数
文件分割 — split
用法:split [–help][–version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
-a, --suffix-length=N 指定输出文件名的后缀,默认为2个
-b, --bytes=SIZE 指定输出文件的字节数
-C, --line-bytes=SIZE 每一输出档中,单行的最大 byte 数
-d, --numeric-suffixes 使用数字代替字母做后缀
-l, --lines=NUMBER NUMBER 值为每一输出档的列数大小
zip 密码保护
|
|
文件和目录的复制-scp
scp 参数
-r 递归遍历文件夹
-l 限速
-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .
-C 使能压缩选项 .
-P 选择端口 . 注意 -p 已经被 rcp 使用 .
-4 强行使用 IPV4 地址 .
-6 强行使用 IPV6 地址 .
不同系统文件格式转化
dos2unix
unix2dos
unix2mac
mac2unix
文本查找 — grep
-n 显示行号
-V 反向展示
-A 1 前面一行
-B 1 前后各一行
-C 1 后面一行
去除linux文本中的^M
|
|
文本转码
- vim直接转换,如:
:set filecoding=utf-8
- enconv: 如:
enconv -L zh_CN -x UTF-8 filename
- iconv: 如:
iconv -f GBK -t UTF-8 file1 -o file2
算术表达式
- $((3+2))
- $[3+2]
- echo
echo 2+3
|bcg
/dev/random, /dev/urandom
真随机数,伪随机数
/dev/tcp & /dev/udp
bash程序中使用/dev/tcp/ip/port的方式就可以创建一个scoket作为客户端去连接服务端的ip:port
用零去填充一个指定大小的文件 — /dev/zero
|
|
打开一个subshell执行命令
1. 使用&作为命令结束提交了作业控制任务时。
2. 使用|连接的命令会在subshell中打开。
3. 使用()封装的命令。
4. 使用coproc(bash 4.0版本之后支持)作为前缀执行的命令。
5. 要执行的文件不存在或者文件存在但不具备可执行权限的时候,这个执行过程会打开一个subshell执行。
xargs
|
|
脚本调试
|
|
重定向
find /etc -name passwd > /dev/null # 只输出错误信息到屏幕
find /etc -name passwd 2> /dev/null # 只输出正确信息到屏幕
find /etc -name passwd &> /dev/null # 所有信息都不输出到屏幕
find /etc -name passwd 2>&1 # 将标准错误输出的,重定向到标准输出再输出到屏幕
&>>、1>&2、?2>&3、6>&8、>>file 2>&1
eval
|
|
环境变量
env 查看当前bash已经定义的环境变量
set 不加任何参数可以查看当前bash环境中的所有变量,包括环境变量和私有的一般变量
export 将一个一般变量编程环境变量
启动多线程
wait 是等待前面的后台进程都结束才运行
子进程崩溃程序
|
|
移动除了个别文件外的文件到其他目录
|
|
sort 排序
sort的文件很大,需要指定一个临时文件来存储中间结果,sort -T tmpfile
程序前后台切换
& 最经常被用在一个命令的最后,可以把这个命令放到后台执行。
ctrl + z 可以将一个正在前台执行的命令放到后台,并且暂停
jobs 查看当前有多少在后台运行的命令
fg 将后台中的命令调至前台继续运行 如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
bg 将一个在后台暂停的命令,变成继续执行 如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
linux 防火墙 允许特定 IP 与当前机器的所有通信
root 权限下,
增加 以下命令:
重启防火墙:
扩展:
只允许外网的 特定 ip (ip1,ip2) 访问
update-alternatives
查看 java 链接可用的软件:
选择需要的软件:
update-alternatives 在一般情况下是由postinst 和 prerm 这样的安装脚本自动调用的,所以一个 alternative 的状态有两种:自动和手动。每个 alternative 的初始状态都是自动。如果系统发现管理员手动修改了一个 alternative,它的状态就从自动变成了手动,这样安装脚本就不会更新它了。如果你希望将一个 alternative 变回自动,只要执行代码:
date
当前时间: date +'%Y%m%d%H%M%S'
前一小时: date -d "-1 hour" +%Y%m%d%H
前一天: date -d "-24 hour" +%Y%m%d
时间格式转化: date -d'20160820' +%Y-%m-%d
指定输入格式转化: date -j -f "%d %b %Y" "27 JUN 2011" +%Y%m%d
时间戳转date: date -d '@1467338291' +%Y%m%d
时区: -u, --utc, --universal date --date='TZ="America/Los_Angeles" 09:00 next Fri'
Kill pid
|
|
如果是脚本中,需要注意 $ 转义:
可以使用 pkill:
killall:
前段时间看到一系列 SHELL 讲解,需要更深了解的可以移步,SHELL编程之执行环境,SHELL编程之执行过程,SHELL编程之特殊符号。