zoukankan      html  css  js  c++  java
  • linux--bash

    下面是最近学习bash的一些知识点总结

    ***博客园-邦邦酱好***

    取得shell来工作
      登入动作,系统给一个shell:记录在/etc/passwd

    查看系统版本
      lsb_release -a

    bash shell
    1.命令编修能力:history
      上下键:当前登陆下的前/后一个输入的指令,保存在内存中
      ~/.bash_history:记录前一次登入以前执行过的命令,注销系统后保存进这个文件

    2.命令与档案补全功能:tab键
      连续按两次[tab]键就能够显示所有癿可执行指令
      如果想要知道系统当中所有以c为开头的指令呢?就按下『c[tab][tab]』

    3.命令别名设定功能:alias
      alias lm='ls -al'

    4.档案说明:type
      type [-tpa] name
      file:表示为外部指令
      alias:表示为命令别名所设定的名称
      builtin:表示为bash内建的指令

    5.分行输入指令:后紧接enter键

    6.变量
      引用变量:$variable 或者 ${variable}
      设置变量:variable=othername(1.等号两边不能有空格 2.内容有空格,可用引号保留 3.特殊符号如enter,$,,空格等可以用变成一般字符)
      注意:双引号可保留变量的内容,而单引号内的仅能是一般字符
      如:name=A
           myname="$nameB"
           echo myname  --->AB
           myname='$nameB'
         echo myname   --->$nameB
      结合其他指令:version=$(uname -r) 或者version=`uname -r`(`是数字键1左边的那个按键,不是单引号)
      此反引号内的指令会首先被执行,然后将结果作为外部的输入信息
      比如:ls -l `locate crontab`(先locate再ls)

      取消变量:unset variablename

      使变量在子程序执行:export variable


    7.环境变量:set命令可将bash内的变量都显示出来
      (1)PS1='[u@h w A ##]$'  --> [root@www /home 17:02 #85]#
      (2)$:关于本shell的PID  -->echo $$
      (3)?:关于上个执行指令的回传值 -->echo $?
      (4)OSTYPE,HOSTTYPE,MACHTYPE:个人计算机CPU主要分为32/64位,其中32位又可分为i386, i586, i686,而64位则称为x86_64
      (5)export:自定义变量转变成环境变量

    8.影响显示结果的语系变量:locale
      整体中文语系支持的编码:big5,utf-8
      整体系统默认的语系定义:cat /etc/sysconfig/i18n


    9.读取来自键盘的内容:read
      read [-pt] variable
      -->read -p "please keyin your name:" -t 30 named

    10.宣告变量的类型:declare/typeset
       declare [-aixr] variable
    --->declare -i sum=100+300+50
    --->echo $sum  
    --->450

    11.数组(array)
      设置:var[1]="small min"

    12.删除变量内容
      path=/user/ker/sbin;/user/ker/bin;/user/local/bin;/user/bin
        (1)#:从左到右删除符合取代文字的【最短的】那一个
      echo ${path#/*user/ker/bin;}
        (2)##:从左到右删除符合取代文字的【最长的】那一个
      echo ${path##/*;}
        (3)%:从右到左删除符合取代文字的【最短的】那一个
      echo ${path%;*bin}
        (4)%%:从右到左删除符合取代文字的【最长的】那一个
      echo ${path%%;bin}

    13.取代变量内容
      (1)/旧字符串/新字符串:从左到右第一个旧字符串会被新字符串取代
      (2)//旧字符串/新字符串:全部的旧字符串会被新字符串取代

    14.别名
      设置:alias lm='ls -al|more'
      取消:unalias lm

    15.历史命令:history
      -->history [-raw] histfiles
      默认历史位置:~/.bash_history
      历史文件大小:echo $HISTSIZE
      利用:!N-->执行第N个历史命令
      !com-->执行最近历史中以com开头的命令
      !!-->执行上一个历史命令

    16.进站欢迎信息:/etc/issue
      telnet时的登入信息:/etc/issue.net

    17.login shell读取的配置文件
    (1)/etc/profile:系统的整体设定,最好不要修改。
      /etc/profile.d/*.sh 规范了bash操作接口的颜色,语系,ll与ls指令的命令别名,vi的命令别名等等。如果你需要帮所有使用者设定一些共享的命令别名时,可以在这个目录下自行建立扩展名为.sh的档案,并将所需要的数据写入即可。
      1./etc/profile会遍历这个目录下的所有.sh文件
      2.修改过这个目录下的文件后,需要重新登录,才能读入最新修改(source或者.命令可以使得配置马上生效)
    (2)~/.bash_profile或~/.bash_login或~/.profile:属于使用者个人设定,要使用的数据可以写入这里

    login shell的读取流程
    /etc/profile(-->/etc/inputrc,/etc/profile.d/*.sh-->/etc/sysconfig/i18n)----->~/.bash_profile(-->~/.bashrc-->/etc/bashrc)---->开始操作bash

    18.数据流重导向
    (1)标准输入:<或者<<
    (2)标准输出:>或者>>
    (3)标准错误输出:2>或者2>>
    (4)垃圾桶黑洞:/dev/null(忽略掉错误信息,不显示不存储)
    (5)正误同时输出:command > filename 2>&1或者command &> filename
      1.创建新文本
        cat > newfile < oldfile
      2.标定终止键盘输入的标志
        cat > newfile << "end"  (不用标志的话,ctrl+d键可以终止输入)

    19.命令之间的相关性
      (1)$?:前一个命令的返回值,正确执行$?=0
      (2)cmd1&&cmd2:cmd1执行正确,则开始执行cmd2;cmd1执行失败,则不执行cmd2。
        --> ls a.txt && echo "yes"
      (3)cmd1||cmd2:cmd1执行正确,则不执行cmd2;cmd1执行失败,则开始执行cmd2。
        --> ls a.txt || touch a.txt
        a || b && c 从左到右顺序执行
      (4)一次执行多个命令:命令与命令之间用;分号分隔。
        ls;cat a.txt

    20.管道命令pipe
    1.cut
      echo $PATH|cut -d ';' -f 5  (切取PATH路径的第五个分隔)
      export|cut -c 1-  (以字符为单位,切取export第1个字符以后的所有字符串)
      假如export是 ABC BCD,切取之后是BC CD

    2.分析grep
      grep [-acinv] '搜寻字符串' [--color=auto] filename
        -a:把binary档案以text档案的方式搜索
        -c:计算找到“搜寻字符串”的次数
        -i:忽略大小写
        -n:顺便输出行号
        -v:反向选择,显示没有“搜寻字符串”内容的那一行
      ---->last|grep -v 'root'|cut -d ' ' -f 1

    3.排序sort
      sort [-fbrtk] [file or stdin]
        -f:忽略大小写
        -b:忽略最前面的空格符部分
        -r:反向排序
        -t:分隔符,预设是用tab键分隔
        -k:以哪个区间来进行排序
      --->cat /etc/passwd|sort -t ':' -k 3

    4.重复的仅显示一个uniq
      uniq [-ic]
        -i:忽略大小写
        -c:进行计数
      --->last|cut -d ' ' -f1|sort|uniq -c

    5.统计行数,字数,字符数wc
      wc [-lwm]
        -l:仅列出行数
        -w:仅列出字数
        -m:多少字符
      --->last|grep [a-zA-Z]|grep -v 'wtmp'|wc -l

    21.双向重导向tee
      tee [-a] file   -->将数据流分送到档案和屏幕
        -a:以累加的方式,将数据加入file中
      --->ls -l|tee -a list.txt|more

    22.字符转换命令
    1.删除一段信息中的文字或者进行信息中部分文字的替换tr
      tr [-ds] SET1 [SET2]
        -d:删除信息中的SET1这个字符串
        -s:用SET2取代掉SET1
      --->cat /etc/passwd|tr -d 'r'
      --->last|tr [a-z] [A-Z]   (所有小写替换成大写)

    2.col[-xb]
      -x:将tab键转换成对等的空格键
      -b:在文字内有反斜杠时,仅保留反斜杠最后解的那个字符
      --->cat /etc/man.config|col -x|cat -A|more
      --->man col|col -b > /root/col.man

    3.处理2个文档中有相同数据的那一行join
      jion [-ti12] file1 file2
        -t:默认以空格符分隔数据,并且对比第一个字段的数据,若相同,则将2笔数据联成一行,且把第一个字段放在第一个
        -i:忽略大小写
        -1:代表第一个file要用哪个字段来分析
        -2:代表第二个file要用哪个字段来分析
      --->jion -t ':' /etc/passwd /etc/shadow
      --->jion -t ':' -1 4 /etc/passwd -2 3 /etc/group
      注意:在进行jion操作前,先进行sort操作。

    4.同一行贴一块paste
      paste [-d] file1 file2
        -d:后面接分隔字符,默认是[tab]键分隔
        -:如果file部分写成-,表示来自standard input的资料的意思

    5.tab键转换成空格expand
      expand [-t]
        -t:后接数字,定义一个tab键代表多少个字符

    23.分割命令split
      split [-bl] file PREFIX
        -b:分割成的档案大小,可加单位b,k,m等
        -l:以行数进行分割
        PREFIX:代表前导符的意思,可作为分割档案的前导文字
        --->ls -al /|split -l 10 -|sroot

    24.减号-的用途
      在管道命令中,常常会使用到前一个指令的stdout作为这次的stdin,某些指令需要用到文件名来进行处理时,该stdin与stdout可以利用减号-来替代。
      --->tar -cvf - /home|tar -xvf -

  • 相关阅读:
    .NET学习笔记(1)— C#学习路线图
    Huffman树压缩程序(c实现)
    selenium webdriver使用一二三
    同时装了python2和python3,pip没法使用
    NotePad++配置python开发环境(windows)
    用Sublime搭建Python开发环境(windows)
    mapbox将图层缩放到视口合适区域
    关于 FormData 和 URLSearchParams
    vue-router在新窗口打开页面
    微信小程序wx.request 请求方法
  • 原文地址:https://www.cnblogs.com/bangbangjiang/p/4046268.html
Copyright © 2011-2022 走看看