免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 887 | 回复: 0
打印 上一主题 下一主题

bash shell [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-18 20:58 |只看该作者 |倒序浏览

                1.shell是用户与系统核心沟通的桥梁
2.当前系统有多少可用的shell?/etc/shells3.每个用户登陆时候默认的shell:/etc/passwd
4.变量和环境变量不同的!
5.变量的获取:echo $变量名或者${变量名}
  变量的设置:变量名=内容
  取消变量:unset 变量名
  将变量内容设置为VBird's name
  name="VBird's name" 或者name=VBird\'\ name
  export 变量名使变量成为环境变量
  在PATH变量中累加:/sbin目录
  PATH=$PATH:/sbin 或者
  PATH="$PATH":/sbin
  如果是在变量后面加上ranran
  name="$name"ranran
  name=${name}ranran
6.在变量的设置中单引号和双引号的用途有什么不同?
  [wuxiaoxiao@localhost ~]$ name=wuxiaoxiao
  [wuxiaoxiao@localhost ~]$ echo $name
  wuxiaoxiao
  [wuxiaoxiao@localhost ~]$ myname='$name its me'(单引号)
  [wuxiaoxiao@localhost ~]$ echo $myname
  $name its me
  [wuxiaoxiao@localhost ~]$ myname="$name is its me"
  [wuxiaoxiao@localhost ~]$ echo $myname
  wuxiaoxiao is its me
7.在执行命令的过程中(`)(tab键上面的那个符号)的作用
  ls -l `cd linux`
  先执行``中的命令,在执行ls -l
8.环境变量
  查看系统环境变量env
  查看所有的变量set
9.变量键盘读取
  read [-pt] 变量
  -p:后面接提示符
  -t:后面接等待的秒数
  read -p "请输入用户名" -t 30 name
10.declare/typeset [-aixr] 变量
  -a:将后面的变量定义为数组
  -i:将后面的变量定义为整数数字
  -x:与export一样将后面的变量定义为环境变量
  -r:设置为只读,该变量不可以更改内容,也不能取消
11.数组属性
  var[1]="xiaoxiao"
  var[2]="ranran"
  echo "${var[1]},${var[2]}"
12.附加的变量设置功能
  例子;
[wuxiaoxiao@localhost ~]$ vbird="/home/wuxiaoxiao/linux/command.txt"
[wuxiaoxiao@localhost ~]$ echo $vbird
/home/wuxiaoxiao/linux/command.txt
[wuxiaoxiao@localhost ~]$ echo ${vbird##/*/}
command.txt
[wuxiaoxiao@localhost ~]$ echo ${vbird#/*/}
wuxiaoxiao/linux/command.txt
注解:在变量名后面有两个##,表示在##后面的字符串取最长的那一段,一个#表示取最短的.这是从前面删除
[wuxiaoxiao@localhost ~]$ echo ${vbird%%/*/}
/home/wuxiaoxiao/linux/command.txt
[wuxiaoxiao@localhost ~]$ echo ${vbird%%/*/}
/home/wuxiaoxiao/linux/command.txt
[wuxiaoxiao@localhost ~]$ echo ${vbird%%/*}
[wuxiaoxiao@localhost ~]$ echo ${vbird%/*}
/home/wuxiaoxiao/linux
注解:从后面开始删除
13.命令别名设置:  alias lm='ls -l | more'
   查看别名:alias
   取消别名设置:unalias lm
14.history 3:表示列出最近的3个命令
   !66:执行第66条命令
   !!:执行上一条命令
   !al:执行最近以al开头的命令
15.通配符
   *:0或者多个字符
  ?:一定有一个字符
  #:注释
  \:转移字符
  ~:用户的家目录
  &:将命令编程后台工作
  !:逻辑上的非
  ():中间为字shell的开始和结束
  []:中间为字符的组合
  {}:中间为名林区块的组合
例子:
cp test[1-5] ./linux  :将test1,test2,test3,test4,test5若存在的话就复制到linux中
cp test[!1-5] ./linux  :将test1,test2,test3,test4,test5以外的test?复制到linux中
cp *[A-Z]* ./linux    :只要文件名里含有大些字母 就复制
ls -l /etc/*[35]*    :列出含有3和5的文件名的文件
ls -l /etc/[!a-z]*    :不要小写字母开头的文件
另外`的功能也可以这样:cd /lib/modules/${uname -r}/kernel
16.数据流重导向
   标准输入:代码为0,使用或者>>
   标准错误输出:代码为2,使用2>或者2>>
ls linux >1.txt(覆盖)  ls linux >> 1.txt(附加)
find /home -name testing > list_right 2> list_error    :正确的结果在list_right中,错误的在 list_error中
find /home -name testing > list_right 2> /dev/null    :正确的结果在list_right中,错误的不见了
find /home -name testing > list_right 2> &1    :正确和错误的结果都在list_right中
17. cd linux/222 && mkdir linux/1111   :第一个命令正确时候才执行第二个命令
cd linux/222 || mkdir linux222        :第一个命令错误时候才执行第二个命令
用ls测试/home/linux是否存在? 若存在输出exits,否则输出not exits
ls /home/linux && echo "exits" || echo "not exits"
18. 管道命令
cut:处理消息是以行为单位的
    cut -d '分割符' -f fields
   -d:后面接的是分割符
   -f:根据-d的分割符将一段消息分为数段,用-f取出第几段的意思
   -c:以字符为单位取出固定的字符数据
   例子:echo $PATH | cut -d ':' -f 5   
       如果想要列出第三段和第五段?cut -d ':' -f 3,5
       export | cut -c 12-    :取出第十二个字符以后的所有字符串
grep:分析一行信息,若其中有我们想要的信息,就将该行取出来
     grep [-acinv] '搜索字符串' filename
     -a:将二进制文件以文本文件的方式搜索数据
     -c:计算找到搜索字符串的次数
     -i:忽略大小写
     -n:顺便输出行号
     -v:反向选择,即显示出没有'搜索字符串'内容的那一行
     例子:last | grep 'root'
     例子:last | grep -v 'root'
     last | grep 'root'| cut -d ' ' -f 1
sort;排序
uniq:将重复的数据仅显示一次
wc:查看文件里有多少字,行,字符
tee:双重导向
join:处理两个文件之间的数据
xargs:参数代换
#以上命令用到的时候在查看
tr:用来删除一段消息中的文字,或者进行文字消息的转换
  tr [-ds] set1 ...
  -d:删除消息中的set1字符串
  -s:替换重复的字符
例子:last | tr '[a-z]' '[A-Z]'  :将小写字母替换成大些字母
     将/etc/passed中的冒号删除 cat /etc/passwd | tr -d ':'
    将DOS文件中的换行夫删除 cat /home/test/dostxt | tr -d '\r' >dostxt-noM
col:将tab键转化为对等的空格键col -x
    cat /etc/man.config | col -x |cat -A | more
split:拆分命令 如果文件过大,可以根据行数和大小来拆分,将大文件拆分成小文件
    split [-bl] file PREFIX
   -b:后面药拆分的文件的大小,可加单位,例如b,k,m
   -l:按行进行拆分
   例子:/etc/termcap有700多k,想要拆分成300k一个文件
   split -b 300k /etc/termcap termcap 会以xxxaa,xxxab,xxxac等方式建立小文件
  如何将拆分后的文件合成一个文件?cat termcap* >> termcapback
将ls -al / 输出的信息中,每10行记录为一个文件
  ls -al / | split -l 10 - lsroot ;重点在- split中需要文件但是有没有文件, -会把前面的结果当成输入

               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/76927/showart_1328225.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP