鸟哥Linux第十章-认识与学习bash笔记

  1. 管理计算机硬件的是操作系统的kernel,用户通过shell与内核沟通。即user☞shell☞kernel☞hardware。
  2. 用户可以使用的shell放在 /etc/shells中,登录默认使用的shell放在/etc/passwd中,/sbin/nologin表示无法使用。/bin/bash是Linux默认的shell。
  3. history记录历史命令。放在~/.bash_history中,记录的是前一次登录使用的命令,这次登录使用的命令还在缓存中,注销后方可保存。系统会主动读取家目录的/.bash_history目录,记录的数据量与HISTFILESIZE设置量有关。 例如:history 3 表示最近的三个命令
    history -a 将目前新增的history命令写入histfiles中,若没有histfiles, 则默认写入~/.bash_history。
    history -c 将目前shell中的所有history内容清除
    history -r 将histfiles的内容读到目前shell中
    history -w将目前shell中的history写入histfiles中
    !3 表示执行第三条命令
    !!表示执行上一条命令(同按向上键回车)
    !al表示执行最近的以al开头的命令
  4. tab:命令,文件补齐
  5. alias:命令别名,例如alias lm=’ ls -al ’
  6. unalias:取消命令别名
  7. type:查询命令是否为bash shell的内置命令。type所找出的是执行文件而不是一般文件名,这一点类似which。
    -t
    file :外部命令
    alias:命令别名
    builtin:内置命令
    -a 列出所有
    -p 若是外部命令则显示完整文件名
  8. Ctrl+u从光标处向前删除命令串 Ctrl+k向后删除、
    Ctrl+a光标移动到最前面 Ctrl+e最后面
    Ctrl+c表结束
  9. 环境变量PATH、HOME区别于自定义变量用大写字符表示。不论是否是环境变量,只要是根shell操作界面有关的变量(系统内定需要的变量)一般都用大写字母。环境变量和自定义变量的区别就在于是否被子进程所继续引用。
  10. 变量在使用时前面加$。
  11. echo:变量的使用。例如echo ${variable}
  12. 1变量的设置规则:=两边不能直接接空格,因为那表示数字运算;2变量的内容若有空格用‘’或“”引起;3一串命令中包含其他命令格式为反引号 命令或(命令),先执行这个内含命令,再将其引入;4扩增变量格式为${变量}
  13. export:将变量变成环境变量。例如:export HOME。
  14. unset:取消变量。例如:unset home。
  15. 子进程就是在目前shell中启用一个新的shell。一般情况下,父进程的自定义变量是不能在子进程中使用的,要使用export变成环境变量才可在子进程中使用。父进程有专门存放环境变量的内存区域,子进程会引入此内存区域。PS1不是环境变量(会影响到bash的界面)。
  16. locate:列出所有相关文件的文件名。例如:ls -ld $(locate )。
  17. 环境变量的功能:1根目录的变换;2提示字符的显示;3执行文件查找的路径(PATH)。
  18. env,export:列出所有的环境变量。HISTSIZE历史命令;SHELL环境使用的shell;PATH执行文件查找的路径,目录与目录之间以:相隔;LANG语系数据;RANDOM随机数(0~32767)。
  19. PS1:提示字符 。
    \d日期格式;
    \H完整主机名;
    \h第一个小数点之前的名字;
    \t时间格式;
    \u用户的账号名称;
    \w完整的工作目录;
    \W最后一个目录名。
    #执行的第几个命令(#12第十二次执行的命令),root用户提示字符;
    $普通用户提示字符;
    $也代表shell的进程号,echo $$表示显示PID号码;
    ?表示上个执行命令的返回值。echo $? 若值为0则表示命令成功执行。
  20. locale:语系变量。主要设置LANG(主语言的环境)或LC_ALL(整体语系的环境)这两个变量;系统默认的语系在/etc/locale.conf中,主机包含的语系文件放在/usr/lib/locale/中。例如将中文换成英语(在centos中让LC_ALL变成环境变量才能生效。):
    $LANG=en_US.utf8; locale
    $export LC_ALL=en_US.utf8; locale
  21. read:读取键盘输入
    -p:接提示符
    -t :等待的时间
    例如:
    $read -p "write now: " -t 30 name
    $echo ${name}
  22. declare,typeset:声明变量的类型
    declare 后面不加变量名,显示所有变量名称和内容。
    后面加变量名
    declare -a variable:将变量定义为数组(array)类型。
    declare -i variable:将变量定义为整数(integer)类型。
    declare -x variable:和export一样将变量变成环境变量。+x可以变成自定义变量
    declare -r variable:将变量设置为readonly类型,该变量不可更改,也不能unset。
    例如求和:
    $declare -i sum=100+200
    $echo ${sum}
  23. array变量类型
    $var[1]=“a”
    $var[2]=“b”
    $var[3]=“c”
    e c h o " echo " echo"{var[1]}, ${var[2]}, ${var[3]}"
    读取方式:echo{array}
  24. ulimit
    -H:hard limit 严格设置
    -S:soft limit 警告设置
    -a:后面不接选项或参数,显示所有限制
    -f:可以建立的文件最大容量,以kb为单位
    例如:建立10MBytes以下容量的文件
    $ ulimit -f 10240
  25. 变量的删除、替换
    ${变量#关键词} #从头开始删除,最短的;##最长的。
    ${变量%关键词}%从尾向前删除,最短的;%%最长的
    ${变量/旧字符串/新字符串}/只替换第一个旧字符串,//替换全部
  26. 变量的测试与内容替换
    例如:
    $echo n a m e = name= name={username-root}
    若username为空则name为空,若username未设置则name为root。
    $echo n a m e = name= name={username:-root}
    若username为空或未设置,name都为root(:表示为空和未设置情况一样)
    $echo n a m e = name= name={username?错误信息}
    若username不存在则输出错误信息
    $echo n a m e = name= name={username:?错误信息}
    若username为空或不存在则输出错误信息
  27. 路径与命令查找顺序
    type -a ls 可查找ls的执行顺序
    先alias再builtin再$PATH
  28. /etc/issue bash的登录信息
    /etc/motd bash的欢迎信息(message of the day)(vim /etc/motd)
  29. bash 的环境配置文件
    分为全局系统配置文件和个人配置文件;命令别名和自定义变量需要
    写入配置文件,不然注销就失效了。
    login shell:由tty1~tty6输入密码登录。
    /etc/profile:系统整体设置,它可以调用外部配置文件/etc/profile.d/*.sh,这个文件中规范了bash的颜色语系命令别名等。它可以调用/etc/locale.conf,这个文件中包含LANG的设置。即/etc/profile☞~/.bash_profile☞调用bash。
    ;~/.bash_profile用户个人设置
    它会调用~/.bashrc的内容
    source或小数点可以将配置文件的内容无需重启立即生效。例如:source ~/.bashrc
    non-login shell:由xwindow登录终端或bash子进程。仅会读取~/.bashrc ,它包含PS1等
  30. stty(setting tty) :可以设置终端输入按键代表的意义。
    stty -a:列出所有stty参数
    例如:$stty erase ^a 代表以后删除按键为Ctrl+a了。
  31. set -u 表示变量未设置时会显示错误信息比如echo $a,若a未设置则显示错误,而默认是不显示错误。(set可以设置终端的环境)
  32. 通配符(wildcard)
    (*) :代表零到无穷个任意字符。
    ?:代表一个任意字符
    【】:代表其中的一个字符
    【^abc】:指数符号代表反向选择,即不是abc的一个字符
    特殊符号
    #:注释
    :转义
    |:管道
    ;:命令分隔符
    ~:用户的家目录
    $:使用变量前导符
    &:任务管理(job control),将命令变成后台任务。
    !:非
    /:路径分隔符
    ‘’:$变为纯文本
    ``:两个反引号之间的可以先执行,同$()
    ():在中间为子shell的起始与结束
    {}:在中间为命令区块的组合
  33. 数据流重定向(redirect)即将本应该显示在屏幕上的东西传输到其他地方。
    标准输入(stdin):代码为0,使用<或<<
    标准输出(stdout):代码为1,使用>(覆盖)>>(累加)
    标准错误输出(stderr):代码为2,使用2>或2>>
    例如:$find /home -name .bashrc >list 2>&1(标准正确错误输出都写入list中,这种写法不会混乱,>list 2>list这样会混乱,2>&1的意思就是将2>变成1>。)
    例如:$cat > catfile < ~/.bashrc(有>,catfile若不存在会主动建立。cat > catfile建立文件,<可以用后面的纯文本文件代替键盘的输入)
    <<代表结束的输入字符。例如:$cat > catfile << "eof"代表结束输入时不需按Ctrl+d了。
    执行已知的错误信息可以2> /dev/null 。
  34. 命令执行的判断依据
    一次执行多个命令有两种方法1是使用脚本2是使用;,&&,||。$?为命令返回值。
    例如1:cmd1||cmd2,cmd1正确则cmd2不执行。
    例如2:我不清楚/tmp/abc/是否存在,但就是要建立/tmp/abc/hehe文件
    $ls /tmp/abc/ || mkdir /tmp/abc/ && touch /tmp/abc/hehe
  35. 管道命令|:管道命令仅会处理标准输出,错误输出会忽略。
  36. 选取命令
    cut:将信息的某一段给切出来,以行为单位。
    例如:以:为分隔符列出第三行第五行
    $echo ${ PATH} | cut -d ':' -f 3,5
    cut -c 12-表示取得12个字符以后的字符。
    grep:若一行中有我们所有需要信息,就拿出来。
    grep -i 忽略大小写
    grep -n顺便输出行号
    grep -v反向选择
    grep --color=auto 找到的关键字会用特殊颜色
  37. 排序命令
    sort -f 忽略大小写
    sort -b 忽略空格
    sort -r 反向排序
    uniq:排序完成后,将重复的数据仅列出一个显示。
    uniq -i 忽略大小写
    uniq -c 进行计数
    wc 统计
    wc -l 仅列出行
    wc -w 仅列出多少字
    wc -m 多少字符
  38. tee :双向重定向,将数据流分送到文件和屏幕(输出到屏幕的是stdout)。
    tee -a tee默认覆盖,加a表累加。
  39. 字符转换命令
    tr -d 删除字符
    tr -s替换重复的字符
    col -x 将tab键替换成空格键
    join -t (空格) -i(忽略大小写)file1 file2 处理两个文件的数据,两个文件中,有相同数据的那一行合在一起。
    paste -d 分隔符 file1 file2直接将两行贴在一起,默认以tab隔开。
    expand -t后面接数字 file 将tab按键转成几个空格键。
  40. 划分命令
    split -b file 以文件大小划分
    split -l file以行数来划分
  41. 参数代换
    xargs产生某个命令的参数,将stdin的数据分隔成为参数。
  42. stdin和stdout可以用-来替代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值