Linux学习笔记-bash(鸟哥11章 老段视频笔记)

来源:互联网 发布:数据集市 编辑:程序博客网 时间:2024/05/18 03:56

11章shell

shell的介绍

shell 对命令进行翻译。转移器。把命令翻译成cpu可以都懂的语言。

打开终端的时候会链接到一个shell中,即链接到shell进程中。

  • Shell 类型

    cat /etc/shells

    直接输入名字可以直接切换

    [远程桌面传播的是图片]

  • 查找命令所在的路径

    which ls

    /bin/ls #ls是在/bin目录下的

    type cd 查看命令类型

    cd is a shell builtin

    cd是shell内置的命令。不能使用which进行查看。可以使用type查看类型

shell 变量

变量基础

  • 声明变量:

    • 本地变量,在子shell无效。

      变量名=值 # ‘=’两边不要有空格

    • 环境变量,会影响子shell

      export yy=10

    declare -x zz=10

    变量名:不能以数字开头,由字母、数字、_ 组成

  • 取消变量:

    unset 变量名

    • declare +x zz 环境变量变成本地变量
  • 查看变量

    set

    env export export -p显示所有的环境变量

  • 输出变量

    输出第12个参数:echo ${12}

    特殊的变量

    脚本中:

    0# 表示参数格个数
    $* 表示所有参数

    命令行中:

    HOMEUSER 当前用户名
    HISTFILESIZEhistoryPS1 输入命令的前面那个[root@www ~]
    PS2>LANG 默认编码

    locale -a 显示系统支持的编码

变量键盘读取,数组与声明

  • 用read从键盘读取,脚本常使用
echo "请输入您的名字"read nameecho "欢迎您 $name"read -p "请输入您的名字" nameread  88echo $REPLY     #输出88
  • 数组array

    xx=(aa bb cc dd)

    echo ${xx[0]} 输出aa

    echo ${xx[@|*]} 查看所有元素

    echo ${!xx[@]} 查看下标

    echo #{!xx[@]} 查看个数

  • delare

    • 设置只读的变量

      declare -r aa

    readonly bb

  • 更好的变量引用方法: echo ${xx}

xx=book echo '$xx'直接输出字符串:$xxecho "$xx"                         输出bookecho "我买了10本${book}s"        输出:我买了10本books
  • 嵌套命令的执行
echo "xxx`hostname`xxx"echo "xxx${hostname}xxx"

对文件系统及程序的限制关系 ulimit

ulimit -a           #查看所有的大小限制ulimit -f 20480      #设置创建文件大小限制20M 

变量内容的删除、替代和替换

删除\

path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/bin:/usr/local/games"r=${path#*usr/bin}     #从开头删除,删到第一个usr/binecho $r        #输出:/sbin:/bin:/usr/games:/usr/local/games:/usr/bin:/usr/local/gamesr=${path##*usr/bin}        #从最后的usr/bin开始删,删到开头echo $r                    #输出:/usr/local/gamesr=${path%bin*}         #从最后一个开始往后删echo $r                    #输出:前面没变化……/usr/r=${path%%bin*}            #从第一个bin往后删,echo $r                    #输出/usr/local/s

替换

  • 删除变量 unset xx

  • 判断变量是否存在:

    r=${XX-"AAAA"} xx存在则将xx赋给r,否则将AAAA赋给r

    r=${XX:-"AAAA"} xx存在且不为空值则将xx赋给r,否则将AAAA赋给r

    r=${XX:="AAAA"} xx存在且不为空值则将xx赋给r,否则将AAAA赋给r和xx

    r=${XX:?"AAAA"} xx存在且不为空值则将xx赋给r,否则将AAAA输出

    r=${XX:+"AAAA"} xx存在且不为空值则将AAAA赋给r

  • alias aa=”ifconfig eth0” 给ifconfig eth0起个简称

  • unalias aa

  • 快速调用历史命令 !编号

  • 清除历史命令 history -c

操作环境

命令环境

echo 输出自带换行符。

echo -n xxxx 本次输出舍弃换行符

alias echo='echo -n' 以后的echo调用都没有换行符

!echo是命令。,也是一个别名,到底执行的哪一个呢?

可以通过type -a echo 进行查看,优先顺序从上到下

echo is aliased to `echo -n’
echo is a shell builtin
echo is /bin/echo

登陆前后信息

  • 登陆前信息

    vim /etc/issue

    【-d 指明当前日期】

  • 登陆后信息

    vim /etc/motd

  • 通过talnet登陆的提示信息

    vim /etc/issue.net

bash环境配置文件

login-shell和no-login-shell

  • login-shell

    登陆时候使用的shell

    会执行以下脚本

    • /etc/profile 环境中的所有全局变量
    • /etc/profile.d 别名的设置
    • /etc/inputrc 快捷键设置
  • 进入用户家目录 ~ 时候会执行 ~/.bash_profile

    只对当前用户有效

  • no-login-shell 不需要输入密码登陆的shell

终端机环境设置

  • stty快捷键设置

  • set

    set -u 开启检查变量是否被定义。

    set +u 关闭检查变量存在

    set +x 跟踪所有的操作

    set -x 提供更新功能

通配符

E.g. 找出文件名符合的文件:字母,数字,都可,非数字

ls [a-z][1-9]?[!0-9]*.mp3

  • []一对中括号匹配一个字符

    [a-z] 匹配26个小写英文字母。

    [a\-z]匹配 a,,z

数据流重定向

  • 输出重定向.所有的输出默认是输出在屏幕上。修改保存地址

    • > 将输出放到文件中, 覆盖(只能重定向错误的结果)
    • >> 追加(只能重定向正确的结果)
    • 2> 错误结果去覆盖
    • 2>> 追加错误结果
    • &> 正确错误全都重定向
    • cal 2> hosts 1>&2正确的像错误的一样进行导入
    • xxx cal>hosts 2>&1 错误的像正确的一样进行导入
  • 输入重定向<

    tr 'a-z' 'A-Z' < hosts

  • here文件中<< 设置输入结束字符。

    可以任意写文档,一直到输入<< 右侧的符号结束

    here可以识别变量

命令执行判断依据

  • 分号; 顺序执行命令

  • $? 记录命令正确(0)还是错误(非0)。

  • && 与

  • || 或

管道pipe

命令1 | 命令2 |命令3 将命令1执行结果最为命令2的执行参数

ifconfig eth0 | tee xx |grep 'inet addr'

将ifconfig eth0的输出结果传给命令tee,结果保存到xx中,并将这个结果当成grep的输入

tee xx保存结果只保存最后一次,想要继续追加:

ifconfig eth0 | tee -a xx |grep 'inet addr'

选取命令

  • cut -d: -f 1 文件名

    -d 指明分隔符:

    -f 指明查看部分

  • grep 过滤

    grep 选项 关键字 filename

    grep -i tom passwd

    -i 忽略大小写

    -n加行号

    -v反向过滤,输出不含有关键字的行

    -A3过滤关键字那一行,并过滤下面的3行

    -a3过滤关键字那一行,并过滤上面的3行

排序命令

  • sort

    sort -n -r

    ​ -n按照数字形式排序,默认从小到大

    ​ -r从大到小排序

    sort -t: -k3 passwd -t指明分隔符,-k指明第几部分passwd的第三部分进行排序

    sort -t -n: -k3 passwd -n以数字形式排序

    sort -u -u去重

  • uniq

    uniq 去重排序,相当于sort -u

    uniq -c 统计重复出现的次数

  • wc字符统计

    输出:行号 单词数 字符数

    wc -l xx 行号
    wc -w xx 单词数
    wc -c xx 字符数

    • 统计一个文件夹有多少个目录

    ls -l / | wc -l

字符转换

  • 字符转换tr

    tr 'a-z' 'A-Z' < hosts

    ​转换之后覆盖原文件:

    tr 'a-z' 'A-Z' < hosts > xxx   mv xxx hosts   

    错误做法:tr 'a-z' 'A-Z' < hosts > hosts

    这两个命令等同tr 'a-z' 'A-Z' < hostcat hosts | tr 'a-z' 'A-Z'

​ 删除tr -d

cat passwd | tr -d ':' 输出删除:的passwd

  • 字符转换col,expand

    tail -7 /etc/man.config | cat -A 把符号显示出来

    ^I 表示tab键 $表示一行结束

    tail -7 /etc/man.config | col -x 把tab转成空格

    tail -7 /etc/man.config | expand

  • 粘贴命令jion和paste

    paste aa bb 将aa 和 bb 文件粘贴在一起

    join 默认是空格作为分割符

    aa bb

    a123 a345
    b123 b289
    c123 a114

    join -t ":" aa bb -t指明分隔符

    a123:345
    b123:289

    join -t ":" -1 1 aa -2 3 bb 第1个文件的第一部分和第2个文件的第3部分join

    a123:114

  • 分割文件 split

    • 按块分割

    split -b 10k /etc/services xxx 把/etc/services文件分成每份10k,以xxx开头命名

    cat xxx* >services 将文件重新组成service

    • 按行分配文件

    split -l 100 /etc/services xxx 100行分配成一个文件

  • 参数代换xargs

    常和find结合

    find -name 'file*' 查找以file开头的文件

    find -name 'file*' | xargs ls -l 显示以file开头的文件的文件信息

  • -减号作用

    tar cvf home.tar /home | tar xvf 压缩生成home.tar并解压

    tar cvf - /home | tar xvf - 不生成home.tar压缩文件直接解压

补充

  • echo $$ 进入子shell

  • \是回车

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 肚子着凉了拉稀怎么办 小孩子着凉吐奶怎么办 儿童大便有粘液怎么办 宝宝拉鼻涕屎怎么办 婴儿拉白色粘液怎么办 宝宝不肯吃鱼肝油怎么办 婴儿不肯吃鱼肝油怎么办 宝宝吃鱼肝油吐怎么办 五个月婴儿夏天怎么办 厌奶期宝宝瘦了怎么办 二个月的宝宝不喝夜奶怎么办 婴儿不喝奶粉怎么办 小孩整天不吃饭怎么办 婴儿不吃不喝怎么办 断奶后不吃奶瓶怎么办 小孩早上不吃饭怎么办 新生儿不认乳头怎么办 宝宝不吸奶嘴怎么办 孩子不会吸奶瓶怎么办 宝宝突然不吃奶瓶怎么办 换了奶瓶不喝奶怎么办 新生儿不喝奶粉怎么办 7个月小婴儿磨牙怎么办 宝宝出生四天不喝母乳怎么办 我的奶水不足怎么办 乳牙长得不整齐怎么办 新生儿只吃奶粉怎么办 小孩不肯吸母乳怎么办 三个月宝宝不吃奶粉怎么办 宝宝不爱喝水怎么办 崔玉涛 小孩身体铅过高怎么办 疫苗引起的发烧怎么办 婴儿不吃米糊怎么办 宝宝米糊不吃怎么办 换奶瓶宝宝不吃怎么办 小孩不会吃奶瓶怎么办 百天不吃奶瓶怎么办 1岁宝宝积食怎么办 宝宝退烧后流汗怎么办 宝宝高烧后出汗怎么办 发烧出汗不退烧怎么办