Chinaunix首页 | 论坛 | 博客
  • 博客访问: 862678
  • 博文数量: 581
  • 博客积分: 7803
  • 博客等级: 少将
  • 技术积分: 3653
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-27 08:21
文章分类

全部博文(581)

文章存档

2013年(7)

2012年(414)

2011年(159)

2009年(1)

分类:

2012-04-21 10:44:17

原文地址:linux学习--BASH SHELL 作者:wau213

硬件最低层,核心控制硬件工作,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时终止查询
 
 
 
 
 
阅读(343) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~