免费注册 查看新帖 |

Chinaunix

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

转载:shell学习 [复制链接]

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

http://www.linuxsir.org/main/doc/abs/abs3.7cnhtm/
UNIX痛恨者手册   
http://net.ytu.edu.cn/share/%D7%CA%C1%CF/Unix%CD%B4%BA%DE%D5%DF%CA%D6%B2%E1.htm
apropos key-word   找到和 key-word 相关的命令。  man -k key-word 也可以做到 whatis commandname   显示该命令的一句话帮助。 commandname. man -a commandname   显示命令的解释信息。 commandname. (Unix style) info   commandname   显示很长的命令解释 commandname. (GNU style) type -a  commandname   显示命令 commandname 的信息。
一: shell 基本 shell 命令解释器 目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型:   #echo $SHELL
查看本机器支持的shell cat /etc/shells  或 chsh -l 改变用户的默认shell    chsh  -s /bin/sh USER 可以直接输入  shell-name  
sunOS 默认是 csh,  linux默认是 bash
shell基本语法 输入输出重定向   > >> &
     管道pipe   |   command1| command2    command1| &command2
     前台和后台  &   ctrl + z   bg   fg    注意有时 shell 退出时 被 bg的程序也会退出, AIX 的shell 需要系统设置 要使用 nohup
     [n]> file     重定向标准输出(或 n)到file。
     [n]>> file    重定向标准输出(或 n)到file。
     [n]&n2      重定向标准输出(或 n1)到n2。
     > file >&2    重定向标准输出和错误输出到file。
     | command     将标准输出通过管道传递给command。
     >&2 | command 将标准输出或错误输出通过管道传递给command。
     $ echo Hello >foo
     $ exec 3bar  # 打开文件
     $ cat &4       # 重定向标准输入到 3,标准输出到 4
     $ exec 3&-    # 关闭文件
     $ cat bar
     Hello
     n&- 表示关闭文件描述符 n。
shell程序的变量和参数 $0      = shell名称或shel脚本名称
     $1      = 第一个(1)shell参数 ... $9      = 第九个(9)shell参数
     $#      = 位置参数的个数
     "$*"    = "$1 $2 $3 $4 ... $n"
     "$@"    = "$1" "$2" "$3" "$4" ... "$n"
     $?      = 最近执行的命令的退出状态
     $$      = 当前shell脚本的PID
     $!      = 最近启动的后台作业的PID
     需要记住的基本扩展参数: Form        If var is set       If var is not set ${var:-string}  $var                string
     ${var:+string}  string              null
     ${var:=string}  $var                string  (并且执行var=string)
     ${var:?string}  $var                (返回string然后退出)
     ${parameter:offset:length}
             Form        Result ${var%suffix}   删除位于var结尾的suffix最小匹配模式
     ${var%%suffix}  删除位于var结尾的suffix最大匹配模式
     ${var#prefix}   删除位于var开头的prefix最小匹配模式
     ${var##prefix}  删除位于var开头的prefix最大匹配模式
     ${!prefix*}
     ${!prefix@}
     ${!name[@]}
     ${!name
  • }
         ${#parameter}
         ${parameter#word}  
         ${parameter##word}
         ${parameter%word}
         ${parameter%%word}
         ${parameter/pattern/string}
         ${parameter//pattern/string}
         $(command) `command`
         $((expression))
    shell程序设计的流程控制 test测试命令  man test 条件表达式 command && if_success_run_this_command_too
             command || if_not_success_run_this_command_too if条件语句 man test if list; then list; [ elif list; then list; ] ... [ else list; ] fi if [ ]          if [ ] ; then
                 then echo "" elif [ ]
                 then echo "" else echo "" fi for循环 for name [ in word ] ; do list ; done
            for (( expr1 ; expr2 ; expr3 )) ; do list ; done select name [ in word ] ; do list ; done
        while和until循环 while list; do list; done
            until list; do list; done case条件选择 case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac case variable in exp-1)     ;;
                  exp-2)     ;;
                  *)   其他命令行          esac break和continue
        function
          Function name       {           若干命令行       }       调用函数的格式为:       functionname param1 param2…… 命令分组    “()”和“{}”,
        信号  trap
    运行shell程序的方法 sh shell程序文件名    该方法的优点是可以利用shell调试功能
        sh   这种方式就是利用输入重定向,使shell命令解释程序的输入取自指定的程序文件。 用chmod命令使shell程序成为可执行的
    bash程序的调试
        -e:如果一个命令失败就立即退出   -n:读入命令但是不执行它们   -u:置换时把未设置的变量看作出错   -v:当读入shell输入行时把它们显示出来   -x:执行命令时把命令和它们的参数显示出来
    bash的内部命令 echo
        eval   shell读入参数args,并将它们组合成一个新的命令,然后执行。 exec
        export
        readonly  将一个用户定义的shell变量标识为不可变的。不带任何参数的readonly命令将显示出所有只读的shell变量。 read   从标准输入设备读入一行,分解成若干字,赋值给shell程序内部定义的变量。 shift  shift语句按如下方式重新命名所有的位置参数变量:$2成为$1,$3成为$2……在程序中每使用一次shift语句,都使所有的位置参数依次向左移动一个位置,并使位置参数“$#”减一,直到减到0。 wait   
        exit
        “.”(点)   使shell读入指定的shell程序文件并依次执行文件中的所有语句。
    YYMM=$1 expr $YYMM + 1 > /dev/null 2>&1 if [ $? -ne 0 ] then exit fi
    .
    一: 常用命令 echo -n   不换行 ls   
       -d 将目录象文件一样显示,而不是显示其下的文件。
       -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
       -l 列出文件的详细信息。
       -m 横向输出文件名,并以“,”作分格符。
       -p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通        文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。
       -1 一行只输出一个文件。 cp  
       -f 删除已经存在的目标文件而不提示。
       -i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
       -r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。 rm
       -f 删除已经存在的目标文件而不提示。
       -i 和f选项相反,在删除目标文件之前将给出提示要求用户确认。。
       -r 若给出的源文件是一目录文件,此时rm 将递归删除该目录下所有的子目录和文件。 mkdir
       -p  创建丢失中间路径名称目录
       -m  标志为新的目录指定许可权
       mkdir -p -m $(umask -S),u+wx $(dirname Directory) && chown chgrp groupadd useradd alias locate basename dirname
    paste
       -d List 用指定在 List 参数(缺省是制表符)中的一个或多个字符来更改分隔输出中相应行的定界符。 join diff comm sort
       -k [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ] [+[FSkip1] [.CSkip1] [Modifier] ] [-[FSkip2] [.CSkip2] [Modifier]]
       -n 按算术值对数字字段排序。数字字段可包含前导空格、可选减号、十进制数字、千分位分隔符和可选基数符。对包含任何非数字字符的字段进行数字排序会出现无法预知的结果。 o OutFile 将输出指向 OutFile 参数指定的文件,而不是标准输出。OutFile 参数值可以与 File 参数值相同。
       -r 颠倒指定排序的顺序。
       -T Directory 将创建的所有临时文件放入 Directory 参数指定的目录中。 uniq  
       -c 在输出行前面加上每行在输入文件中出现的次数。
       -d 仅显示重复行。
       -u 仅显示不重复的行。 cat head tail tac cut wc grep sed tr awk
    expect perl
    lsof nc
    zcat tar gzip gunzip bzip2
    bc dc expr find xargs let seq
    vim  %!command
    ar date mc nm
    seq 1000|factor|cut -f2 -d' '|sort -n |uniq 求1000以内的素数

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

    本版积分规则 发表回复

      

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

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP