硬件最低层,核心控制硬件工作,shell、KDE应用等通过核心来调用硬件功能
/etc/shells linux的bash unix的ksh solaris的csh
BASH功能:命令记忆功能、TAB文件或命令补全、命令别名(alias)设置功能(alias lm='ls -alh')、作业(jobs)控制、前台、后台控制、shell脚本、通配符
bash shell内置命令:
type [-tpa] 命令名name -t:file 外部命令 builtin 内部命令 alias 别名设置
type可以查找命令
执行命令: command [-options选项] parameter1 参数1 parameter2参数2
shell变量功能:
变量获取 echo $PATH(变量名) echo ${PATH变量名}
变量设置:变量与变量内容直接以“=”来连接; “=”两边不能直接连空格; 变量名称只能是数字与英文字母(数字不能是开头字符); 可以用双引号或单引号将变量结合 如name="wzg's name"; 可以用转义字符\将特殊符号enter、$、空格、等变成一般符号 ; 扩展变量要以双引号及$name变量名 继续添加内容 如 PAHT=$PATH:/home/wzg/bin PATH="$PATH":/home/wzg/bin
取消设定: unset name
注:单引号仅显为一般字符显示而双引号输入变量内容
环境变量:
所以环境变量和内容 env (enviroment)
其他所有变量说明 set
自定义变量转换为环境变量 export 变量名
其他
来自键盘输入的变量读取: read
例 read -p "please keyin your name: " -t 30 named (30秒之内输入你的姓名)
声明变量的属性 declare/typeset
declare [-aixr] xxx -aixr将xxx定义为数组array/整数数字integer/环境变量/变量设置为只读
例 declare -i sum=1+2 echo $sum 显示结果为3
用户的文件系统和程序操作限制的设置 : ulimit
ulimit [-SHacdflmnpstuv] [配额]
-H (hard limit) -S (soft limit) -a列出所以限制额度 -c 可以建立的最大核心文件容量 -f 可以建立的最大文件容量 单位KB
命令别名的设置 alias 例 alias cdlog='cd /usr/local/jboss/jboss-3.2.2-ses/server/default/log/'
历史命令 history
n 列出最近的n个命令 -c 清除历史命令 !number 执行第n条命令
!命令名(或者字符chr) 执行以命令chr开头的命令 !!执行当前命令的上一个命令 -w命令立刻写入记录
优化:export HISTSIZE=50 历史命令条数
export HISTFILESIZE=1000000 保存历史命令的文件大小
export PROMPT_COMMAND='history -a' 历史命令立刻写入
export HISTTIMEFORMAT="%Y-%m-%d_%H:%M:%S" 时间戳
立刻生效 source /etc/bashrc
注意:/root/.bash_history 文件设置为600 root用户所属
登录消息显示:
/etc/issue 代码含义 \m 硬件等级 \r 操作系统版本=uname -r 其他等等
/etc/motd 设置一些通用信息或者就是welcome之类的
环境变量设置文件:
系统设置 /etc/sysconfig/i18n 设置语言
/etc/profile 设置PATH USER MAIL HOSTNAME HISTSIZE umask等
/etc/bashrc 确定umask功能和PSI内容
/etc/profile.d/*.sh 规范bash和csh设置
/etc/man.config man帮助的这只
个人设置 :~/.bash_profile ~/.bash_login ~/.profile 一般三取一
~/.bashrc ~/.bash_history ~/.bash_logout
终端的环境设置:stty -a 列出按键内容(可以个性化设置,注意冲突)
含义: eof 结束输入 erase向后删除字符 intr中断某个运行的程序 kill 删除在当前命令行的所有文字 quit 退出某个运行程序 start 重启启动某个程序的输出 stop停止当前屏幕的输出
susp 给正在运行程序发送一个终端停止的信号
tty优化 /etc/inittab 保留2个即可,init q重启
通配符
* 代表任意个字符或数字 ?代表“一定有”一个字母
特殊符号 #注释 \ 转义符 | 管道 ~用户的家目录 $变量常用 &命令转为后台工作
>替换 >>跌价 () 中间位shell的起始和结束 []中间为字符组合 {} 中间位命令区块的组合
ctrl + C/D/M/S/Q/U/Z 中止命令/输入结束/=enter/暂停屏幕输出/恢复屏幕输出/删除整行命令/暂停当前命令
数据流重导向
标准输入 < 、<< 标准输出 > 、>> 标准正确输出 1> 默认 可不歇
标准错误输出:代码为2 使用 2> 或 2>> 例如:/home/oracle/shell/db_full_backup.sh >/home/oracle/dbfullbackup_error.log 2>&1 写入同一个文件 (/dev/null 垃圾桶)
命令执行的判断根据
; 例 sync;sync;sync; 执行完第一个接着执行后面的命令
&& 当前面的命令执行结果正确时才接着执行后面的命令 否则掠过
!! 与&&正好相反
管道命令(pipe)
选取命令
cut -d ‘分隔符' -f fields(n) 根据-d的分隔符将一段消息分为数段 用-f 取出第几段
例: echo $PATH |cut -d ':' -f 5
-c 以字符为单位取出固定字符范围 export |cut -c 12-20
grep [-acinv] '字符串名' file
-a 以二进制搜索 -c计算搜索到的字符串的次数 -i 忽略大小写 -n 输出行号
-v显示没有“字符串”内容的那一行
排序命令
sort -[fbMnrtuk] [file or stdin]
-f 忽略大小写 -b 忽略最起码的空格 -M以月份名字排序 -n以纯数字排序 -r反向排序
-u 相同数据仅表示一行 -t 分隔符 -k按字段排序
uniq 重复数据只显示一次
[-ic] -i忽略大小写 -c进行计数 last|cut -d ' ' -f 1 |sort|uniq
last |cut -d ' ' -f1 |sort |uniq -c 用户登录次数统计
wc [-lwm] 统计文件里的数据
-l 行line -w 字(英文单词)word -m 字符
双重流导向 tee
last | tee last.list |cut -d " " -f1
字符转换命令
tr [-ds] set1 -d 删除消息中的字符串set1 -s替换重复的字符
cat /home/sysadm/test.sh |tr -d ";" ;
col [-x] 把tab键换成空格键 (无关紧要)
join 把2个文件中有相同数据的行加在一起(主要)
join [-t] 比较2个文件第一个字段如果相同则并成一行,第一个字段放前面
-i 忽略大小写 -1 数字1,表示第一个文件要用哪个字段来分析 -2表示第二个文件用哪个字段来分析
join -t ':' /etc/passwd /etc/shadow
join -t ':' -1 4 /etc/passwd -2 3 /etc/group (/etc/passwd的第4个字段GID /etc/group第三个字段也是GID)
paste [-d] file1 file2 直接把2个文件连一个 默认TAB连接 ,-d可接分隔符
expand 将TAB键转换成空格键
数据拆分与合并
拆分 split [-bl] file prefix -b:后接单位k,m等 -l 按行数拆分
split -b 300k /home/sysadm/test.txt /tmp/test.txt
合并 cat test.txt* >>(数据流重导向) test.txt
参数代换
xargs [-0epn] command
-0 如果输入的数据含义特殊字符则将其还原成一般字符 -e后接字符串,当xargs跑到字符串时即停止
-p 执行参数前询问 -n参数次数
cut -d ':' -f1 < /etc/passwd |head -n 3|xargs -p -n 5 finger
查询账户 每次只查询5个账户且查询前询问用户
cut -d ':' -f1 < /etc/passwd |head -n 3|xargs -p -e 'lp' finger
查询账户 查到lp时终止查询