红联Linux门户
Linux帮助

shell基础

发布时间:2009-02-17 14:38:40来源:红联作者:cwqing1973
[i=s] 本帖最后由 cwqing1973 于 2009-2-17 15:23 编辑 [/i]

在这一个帖子中,我想把一些关于shell一些与编程方面有关的命令以及使用技巧作一个简单的介绍。其实有地方只能说是一种方法与技巧,还不说是一些命令,但是我在帖子中,都把它们说是命令,请读者注意!!!!!!起到一个抛砖引玉的作用吧,如果有写得不周到的地方,请高手指点与帮助。
文章评论

共有 55 条评论

  1. jagub 于 2009-02-23 14:41:29发表:

    继续

  2. bradshen 于 2009-02-23 14:32:05发表:

    这个帖子非常的好,从简单入手,SHELL 正需要深入浅出的东西。赞LZ

  3. cwqing1973 于 2009-02-17 20:51:13发表:

    有好的方法,那就是多用,多训练自己。没有付出那有收获呢。

  4. nan 于 2009-02-17 19:54:13发表:

    你太利害了!!!佩服!我认为shell对我来说很不好学啊!!!有没有什么方法啊

  5. fman 于 2009-02-17 18:48:41发表:

    好强啊,linux命令好难记啊!!!

  6. cwqing1973 于 2009-02-17 15:21:17发表:

    清除环境变量,其命令也是unset,其使用的方法与方式都一样的,因为本来就是同一个命令!

  7. cwqing1973 于 2009-02-17 15:18:26发表:

    第九个命令是显示环境变量。其命令是:env
    例子
    $ env
    在我的机子里的显示是:
    SSH_AGENT_PID=5796
    DM_CONTROL=/var/run/xdmctl
    GPG_AGENT_INFO=/tmp/seahorse-YqMOTI/S.gpg-agent:5804:1
    SHELL=/bin/bash
    DESKTOP_STARTUP_ID=
    TERM=xterm
    XDG_SESSION_COOKIE=622f41f218abfbceb9da4fc5491db5e3-1234852194.438171-1395742379
    XDM_MANAGED=/var/run/xdmctl/xdmctl-:0,maysd,mayfn,sched,rsvd,method=classic
    GTK_RC_FILES=/etc/gtk/gtkrc:/home/cwqing/.gtkrc-1.2-gnome2
    WINDOWID=58720347
    USER=cwqing
    LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.svgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:
    SSH_AUTH_SOCK=/tmp/keyring-pwriQ6/ssh
    GNOME_KEYRING_SOCKET=/tmp/keyring-pwriQ6/socket
    SESSION_MANAGER=local/cwqing-desktop:/tmp/.ICE-unix/5738
    DESKTOP_SESSION=default
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    QT_IM_MODULE=xim
    PWD=/home/cwqing
    JAVA_HOME=/usr/lib/jvm/java-6-sun
    XMODIFIERS=@im=SCIM
    LANG=zh_CN.UTF-8
    HISTCONTROL=ignoreboth
    HOME=/home/cwqing
    SHLVL=1
    LANGUAGE=zh_CN:zh:en_US:en
    GNOME_DESKTOP_SESSION_ID=Default
    LOGNAME=cwqing
    DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-rSEya2eiCM,guid=65fd3867121ce4ee0e5035b7499a596a
    CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
    LESSOPEN=| /usr/bin/lesspipe %s
    DISPLAY=:0.0
    GTK_IM_MODULE=xim
    LESSCLOSE=/usr/bin/lesspipe %s %s
    COLORTERM=gnome-terminal
    _=/usr/bin/env

  8. cwqing1973 于 2009-02-17 15:16:27发表:

    第八个命令是设置环境的命令,它是export.
    使用形式:
    $VARABLE-NAME=value
    $export VARABLE-NAME

  9. cwqing1973 于 2009-02-17 15:10:07发表:

    [i=s] 本帖最后由 cwqing1973 于 2009-2-17 15:12 编辑 [/i]

    第七个命令是readonly,它的作用是设置变量为只读,
    例子
    $YEAR=1973
    $ echo ${YEAR}
    1973
    $ readonly YEAR
    $YEAR =1974
    $ echo ${YEAR}
    1973

    要在系统中查看只读变量,你只要使用命令:
    $readonly
    $declare -r BASH_COMPLETION="/etc/bash_completion"
    declare -r BASH_COMPLETION_DIR="/etc/bash_completion.d"
    declare -ar BASH_VERSINFO='([0]="3" [1]="2" [2]="39" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")'
    declare -ir EUID="1000"
    declare -ir PPID="6248"
    declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:interactive-comments:monitor"
    declare -ir UID="1000"
    declare -r bash205="3.2.39(1)-release"
    declare -r bash205b="3.2.39(1)-release"
    declare -r bash3="3.2.39(1)-release"
    这是我的的系统的使用这个命令的显示!

  10. cwqing1973 于 2009-02-17 15:06:06发表:

    第六个命令不能说是命令,只能说是一种方法或者讲技巧吧,上面的第4、5的二个命令也只能是这样讲,因为这不能算是命令,只能算应用吧
    它的作用是利用变量保存系统命令参数!
    例子
    $ MY=/home/cwqing/c++/ab.c
    $ TOARM =/home/cwqing/abc.c
    $cp ${MY} ${TOARM}

  11. cwqing1973 于 2009-02-17 14:56:18发表:

    第五个命令是测试变量是否已经设置与存在
    例子
    $COLOUR=blue
    $ echo “This colour is ${COLOUR:-green}"
    This colour is blue
    这个命令的作用,如果变量已经存在,则测试的结果按照设置的显示,如果没有则按测试输入的结果输出。

  12. cwqing1973 于 2009-02-17 14:51:44发表:

    第四个是结合变量。
    例子
    $ HELLO =cwqing
    $ WORLD = 1973
    $ echo ${HELLO}${WORLD}
    $cwqing 1973

  13. cwqing1973 于 2009-02-17 14:48:34发表:

    第三个命令是set,这个命令的作用是显示所有的本地变量。
    $set
    BASH=/bin/bash
    BASH_ARGC=()
    BASH_ARGV=()
    BASH_COMPLETION=/etc/bash_completion
    BASH_COMPLETION_DIR=/etc/bash_completion.d
    BASH_LINENO=()
    BASH_SOURCE=()
    BASH_VERSINFO=([0]="3" [1]="2" [2]="39" [3]="1" [4]="release" [5]="x86_64-pc-lin
    ux-gnu")
    BASH_VERSION='3.2.39(1)-release'
    CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
    COLORTERM=gnome-terminal
    COLUMNS=80
    DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-rSEya2eiCM,guid=65fd3867121ce4e
    e0e5035b7499a596a
    DESKTOP_SESSION=default
    DESKTOP_STARTUP_ID=
    DIRSTACK=()
    DISPLAY=:0.0
    DM_CONTROL=/var/run/xdmctl
    EUID=1000
    GNOME_DESKTOP_SESSION_ID=Default
    GNOME_KEYRING_SOCKET=/tmp/keyring-pwriQ6/socket
    GPG_AGENT_INFO=/tmp/seahorse-YqMOTI/S.gpg-agent:5804:1
    GROUPS=()
    GTK_IM_MODULE=xim
    GTK_RC_FILES=/etc/gtk/gtkrc:/home/cwqing/.gtkrc-1.2-gnome2
    HISTCONTROL=ignoreboth
    HISTFILE=/home/cwqing/.bash_history
    HISTFILESIZE=500
    HISTSIZE=500
    HOME=/home/cwqing
    HOSTNAME=cwqing-desktop
    HOSTTYPE=x86_64
    IFS=$' \t\n'
    JAVA_HOME=/usr/lib/jvm/java-6-sun
    LANG=zh_CN.UTF-8
    LANGUAGE=zh_CN:zh:en_US:en
    LESSCLOSE='/usr/bin/lesspipe %s %s'
    LESSOPEN='| /usr/bin/lesspipe %s'
    LINES=24
    LOGNAME=cwqing
    LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:
    cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.
    tar=01;31:*.tgz=01;31:*.svgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01
    ;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31
    :*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=0
    1;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.g
    if=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35
    :*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.mng=01;35:*.pcx=
    01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*
    .mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;
    35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=
    01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.fl
    ac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;3
    6:*.ra=00;36:*.wav=00;36:'
    MACHTYPE=x86_64-pc-linux-gnu
    MAILCHECK=60
    OPTERR=1
    OPTIND=1
    OSTYPE=linux-gnu
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    PIPESTATUS=([0]="0")
    PPID=6248
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    PS2='> '
    PS4='+ '
    PWD=/home/cwqing
    .........
    for ((i=1; i < COMP_CWORD; i++ ))
    do
    if [[ "${COMP_WORDS[i]}" == --admindir ]]; then
    admindir=${COMP_WORDS[i+1]};
    break;
    fi;
    done;
    COMPREPLY=($( command ls $admindir | grep "^$cur" ))
    }
    quote ()
    {
    echo \'${1//\'/\'\\\'\'}\'
    }
    quote_readline ()
    {
    local t="${1//\\/\\\\}";
    echo \'${t//\'/\'\\\'\'}\'
    }
    set_prefix ()
    {
    [ -z ${prefix:-} ] || prefix=${cur%/*}/;
    [ -r ${prefix:-}CVS/Entries ] || prefix=""
    }
    这是我的机子这个命令的显示,其中有所删除。

  14. cwqing1973 于 2009-02-17 14:45:00发表:

    第二个命令是unset,它的作用是清除已经设置的变量。
    例子
    $HELLO=cwqing1973
    $echo ${HELLO}
    cwqing1973
    $unset HELLO
    echo ${HELLO}
    $

  15. cwqing1973 于 2009-02-17 14:41:56发表:

    第一个是echo,它的作用显示,或者讲是标准的输出中显示。
    例子
    $HELLO=“cwqing1973"
    $echo ${HELLO}
    cwqing1973
    $ME=1000
    $echo ${ME}
    1000