• shell 基础


    echo "hello world!" 报错,因为!有特殊含义
    echo 'hello world!' 正常输出
    :向左删除一个字符
    :换行
    :输出一个制表符,tab
    \:输出一个
    echo -e "abc" 输出 ac

    1.sh
    #!/bin/sh
    echo "leilei is a good man"

    说明:复杂的程序必须写 #!/bin/sh 表示这是一个脚本,简单的可以不写
    脚本执行 1:绝对路径 /tmp/1.sh
    2:相对路径 ./.sh
    3:sh执行 sh 1.sh

    假如在windows中编辑的脚本,在linux中执行报错:没有那个文件或目录
    因为回车符不对,linux中回车符是$,用cat -A 1.sh可以看到,改变方法:
    dos2unix 1.sh

    查看历史命令:
    history
    history -c :清除历史命名
    history -w :把缓存中的命令写入历史命令保存文件 ~/.bash_history

    默认历史命令保存1000条,可以修改:/etc/profile 中:HISTSIZE=1000,重新登录才会生效
    如果超过了条数,会删除前面的,保存后面的

    命令别名:alias 别名='原命令' 重启系统消失
    永久生效修改文件:vim /root/.bashrc
    添加 例如
    alias rm='rm -i'
    alias cp='cp -i'
    alias mv='mv -i'

    查询别名:alias
    删除别名:unalias 别名

    快捷键:
    ctrl+u:删除命令
    l:清屏

    输出重定向:以前命令的结果输出在屏幕上,现在输出到文件中,改变了方向,所以叫做输出重定向。
    格式:命令>文件 或者 命令>>文件, 双大于号是追加到文件中。
    ll>a.txt ll命令查询的结果输入到 a.txt中
    ll>>a.txt ll命令查询的结果追加到 a.txt中

    输入了错误命令,产生报错信息:adada 2>a.txt 或者 adaf 2>>a.txt 2和大于号之间不能有空格

    正确运行与错误运行的命令都能保存:
    命令 >& 文件 或者 命令 >>& 文件

    使命令不在输出 理解为把输出丢到垃圾箱中
    ls &>/dev/null

    正确和错误命令分别输出:
    格式: 命令 >>文件1 2>>文件2


    输入重定向:本来是通过键盘输入的,现在改变方向,用文件输入。
    [root@localhost tmp]# wc
    as as as
    as
    as
    as as as as as
    4 10 30

    wc命令 统计 4行,10个单词,30个字符

    [root@localhost tmp]# wc <ab.txt
    11 92 620
    说明:ab.txt 中有11行,96个单词,620个字符
    [root@localhost tmp]# cat ab.txt
    总用量 1452
    -rwxr-xr-x 1 root root 38 6月 6 03:08 1.sh
    -rw-r--r-- 1 root root 0 6月 6 09:47 ab.txt
    -rw-r--r-- 1 root root 670293 6月 1 10:21 boduo
    -rw-r--r-- 1 root root 123932 6月 1 10:21 boduo.bz2
    drwxr-xr-x 4 root root 36 6月 1 10:30 Japan
    -rw-r--r-- 1 root root 163 6月 1 11:16 Japan.tar.bz2
    -rw-r--r-- 1 root root 669336 6月 1 18:18 services
    -rw-r--r-- 1 root root 80 6月 1 19:32 shenlei1.txt
    -rw-r--r-- 1 root root 19 6月 1 19:31 shenlei2.txt
    drwx------ 3 root root 17 6月 5 22:05 systemd-private-415ebfa5fd6f44d49f7c303febb40a70-chronyd.service-6Ivqzi

    多命令顺序执行:
    ; 命令1;命令2 分号,命令之间没有任何关系
    && 命令1&&命令2 逻辑与,命令1正确执行,才会执行命令2
    || 命令1||命令2 逻辑或,命令1不正确,命令2才执行

    | 命令1|命令2 管道符,命令1的正确输出作为命令2的操作对象

    通配符和其他特殊符号:
    ?:匹配一个任意字符
    * :匹配0或多个
    []:匹配中括号中的一个字符
    [-]:例如[a-z]代表匹配一个小写字母
    [^]:例如[^0-9]代表匹配一个不是数字的字符

    '':单引号 即使包含特殊字符 也会原样输出
    "":双引号 特殊字符有特殊含义
    $():小括号中写命令,执行命令,例如:echo $(ls) 输出ls执行的结果
    举例:
    [root@localhost tmp]# echo $(date)
    2019年 06月 06日 星期四 11:49:40 CST
    [root@localhost tmp]# echo "$(date)"
    2019年 06月 06日 星期四 11:49:52 CST
    [root@localhost tmp]# echo '$(date)'
    $(date)

    shell中变量类型:

    用户自定义变量
    环境变量:主要保存的是和系统操作环境相关的数据。(与系统相关的不能改名,可以改值, 可以添加环境变量)
    位置参数变量:主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。(不能改名)
    预定义变量:Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。(不能改名)


    变量可以由字母、数字、下划线组成,不能用数字开头
    变量的默认类型都是字符串类型,如果要进行数值运算,则必须修改指定变量类型为数值型。
    变量赋值,等号两侧不能有空格 name=ssd
    变量值有空格时用单引号或者双引号 name="shenlei hah"

    查看变量 set
    删除变量 unset 变量名

    环境变量是什么?
    用户自定义变量只在当前的shell中生效,而环境变量会在当前shell和这个shell的所有子shell当中生效。如果把环境变量写入
    相应的配置文件,那么这个环境变量就会在所有的shell中生效。

    声明环境变量:export 变量名=变量值
    查询变量: env
    删除变量: unset 变量名


    name=shenlei
    export age=18
    sex=nan
    export sex

    [root@localhost ~]# pstree
    systemd─┬─NetworkManager───2*[{NetworkManager}]
    ├─auditd───{auditd}
    ├─chronyd
    ├─crond
    ├─dbus-daemon
    ├─irqbalance
    ├─login───bash
    ├─lvmetad
    ├─master─┬─pickup
    │ └─qmgr
    ├─mysqld───26*[{mysqld}]
    ├─polkitd───6*[{polkitd}]
    ├─rsyslogd───2*[{rsyslogd}]
    ├─sshd─┬─sshd───bash
    │ └─sshd───bash───pstree
    ├─systemd-journal
    ├─systemd-logind
    ├─systemd-udevd
    └─tuned───4*[{tuned}]
    set命令可以看到:
    age=18
    name=shenlei
    sex=nan

    进入子shell
    [root@localhost ~]# bash
    [root@localhost ~]# pstree
    systemd─┬─NetworkManager───2*[{NetworkManager}]
    ├─auditd───{auditd}
    ├─chronyd
    ├─crond
    ├─dbus-daemon
    ├─irqbalance
    ├─login───bash
    ├─lvmetad
    ├─master─┬─pickup
    │ └─qmgr
    ├─mysqld───26*[{mysqld}]
    ├─polkitd───6*[{polkitd}]
    ├─rsyslogd───2*[{rsyslogd}]
    ├─sshd─┬─sshd───bash
    │ └─sshd───bash───bash───pstree
    ├─systemd-journal
    ├─systemd-logind
    ├─systemd-udevd
    └─tuned───4*[{tuned}]
    执行set命令,只能看到环境变量:
    age=18
    sex=nan

  • 相关阅读:
    http://maxie.cnblogs.com/
    有一种爱叫错过
    Lotuser进阶系列(转)——多目录环境中的单点登陆1
    DOMINO中实现PDF在线编辑控件 and so on......(三)
    DOMINO中实现PDF在线编辑控件 and so on......(一)
    Lotuser进阶系列(转)——多目录环境中的单点登陆2
    在两个代理之间传递参数
    利用 DSAPI 为 Domino Web 用户定制用户名和口令认证
    通过 Lotus Domino Java 代理消费 Web 服务
    代理中如何获取参数么?
  • 原文地址:https://www.cnblogs.com/javasl/p/11155116.html
Copyright © 2020-2023  润新知