就是个人记录,方便自己查找信息。
Shell基础及工具
- chsh -l 或 cat /etc/shells 查看机器安装的所有shell
- bash --login 是执行脚本的shell成为一个login shell,而login shell会读取系统和用户的profile/rc文件
- env和export 显示的是环境变量
- set和declare显示的是环境变量和自定义变量
- read : -p 显示提示语;-t 设置等待输入的时长(秒);-s 静默模式(用于输入密码等时不显示在屏幕上);-u 从文件描述符中读取输入
- expr 表达式计算
- alias,unalias
- eval 将一个字符串当成命令来执行 cmd_str='ls -l'; eval $cmd_str
- history 历史命令; ctrl + R 搜索历史命令(如有多个匹配,多次按ctrl+R可以往前搜索;如果找到了,按 左右方方向键可以到命令的头或尾,修改命令后再执行;或者直接回车执行命令); 不想留下记录,export HISTCONTROL=ignorespace,然后在输入命令前加空格,这样命令将不会被记录;或者 export HISTCONTROL=* ,之后输入任何命令都不会被记录,恢复记录export HISTCONTROL=
- xargs: 从标准输入中读取内容并传递给它协助的命令,如:find . -name "*.log" | grep "FAIL"
- time:有bash内置的time命令,也有/usr/bin/time系统命令。time打印出一个命令的执行时长。time输出信息重定向: { time command-line; } 2>file 注意分隔符的使用;或 (time command-line) 2>file 这里time紧贴着小括号(这是启动子shell,占用资源,不推荐)。
- sleep 睡眠,可以支持秒、分、时、天等,也支持0.01、0.003这样小数秒的睡眠,不过sleep命令只能保证10ms级别的精度。
- sort : -n, --numeric-sort 按照数值大小排序;-k 按照一列或多列顺序排序;-r 表示倒序排序;-h 以human的形式排序,能识别G>M>K
- cut 提取文件中每一行的一部分;cut -d ' ' -f 1 这种用法时,可以替代awk中的基本用法。
文件与磁盘命令
file - 识别文件的类型和编码格式
ln - 软链接、硬链接的创建 (硬链接不能跨文件系统、不允许普通用户对目录做硬链接)
find - 查找文件或目录
- find . -type d -name good (根据文件类型查找:d, f, l, b, c, p, s)
- find . -type f -regex './e.avi.*[0-9]+$' (使用正则表达式进行文件匹配)
- 多种正则表达式:emacs, posix-awk, posix-basic, posix-egrep, posix-extended
- find . -type f -mmin -5 (5分钟内被修改过的文件;+5 则是5分钟以前被修改过的;还有mtime按天)
- find . -type f -size +50M (大约50MB大小的文件)
- find . -maxdepth 1 size +50M -type f
- find . -type f -a name "*.log" (-a 设置多个条件;还有 -o 、!expr 等)
du - 查看磁盘占用量
- du -sm /home/jay/ (du -sh *)
- du -ch *.tar.gz (-c 是求和)
- du -ah . (-a 表示所有的文件,包括隐藏文件)
- du -sh --exclude="*/.*" (--exclude 表示排除部分文件)
- du -ah . | sort -hr (查看大小并排序;sort -h 表示human排序,能识别G>M>K之类的)
- du 磁盘空间占用量;ls 展示的是文件内容的大小
- 最小的磁盘占用量是一个数据快(block),一般是4KB
压缩解压相关命令
- gzip, gzip -d
- gzip 可指定压缩级别(1-9级,9级压缩度最高,但速度最慢)
- tar -zcvf mytgzfile.tar.gz libvirt (-c 压缩,-x 解压缩,-z 表示gzip格式)
- bzip2, bunzip2 (这两个命令其实是同一个文件;根据执行命令的名称来做不同的事情)
- tar -jcvf mybizp2file.tar.bz2 (-j 表示bzip2格式)
- zip, unzip
文本处理
echo - 返回字符
- echo "Hello $name" 注意双引号、单引号的区别
- 转义字符:\a, \b, \t, \r, \n等等
- -n 去掉末尾的换行符
- echo -e "\033[颜色1;颜色2m 要展示的文字 \033[0m" (输出有颜色的字符;颜色1为前景色、颜色2位背景色)
系统相关
- uname -r