Linux学习笔记11—认识与学习BASH

  • 由于内核在内存中是受保护的区块,因此我们必须要透过『 Shell 』将我们输入的指令与内核沟通,好让内核可以控制硬件来正确无误的工作
  • 学习 shell 的原因主要有:文字界面的 shell 在各大Linux发行版都一样;远端管理时命令行模式速度较快; shell 是管理 Linux 系统非常重要的一环,因为 Linux 内很多管理命令都是以 shell 撰写的。
  • 系统合法的 shell 均写在 /etc/shells 文件中;
  • 使用者默认登录取得的 shell 记录于 /etc/passwd 的最后一个字段;
  • bash 的功能主要有:历史命令;命令与文件补全功能;命令别名设定功能;任务管理、前台后台控制;程序化脚本;通配符
    • \+【enter】 #转义【enter】,使其不具有执行功能,变成下一行
      组合键功能
      [crtl]+u/[crtl]+k从光标向前删除/从光标向后删除
      [crtl]+a/[crtl]+e光标移动到最前面/光标移动到最后面
  • type 可以用来找到执行指令为何种类型,亦可用于与 which 相同的功能;
  • 变量就是以一组文字或符号等,来替换一些设定或者是一串保留的数据
  • 变量主要有环境变量与自定义变量,或称为全局变量与局部变量
  • 使用 env 与 export 可观察环境变量,其中 export 可以将自定义变量转成环境变量;
  • echo $variable     #使用变量
    echo ${variable}   #使用变量
    variable=xxxx      #设置变量内容,变量名称开头字符不能是数字
    var="lang is $LANG" #""双引号内特殊字符$可保持其原有功能,$LANG为变量
    var='lang is $LANG' #''单引号内特殊字符仅为纯文本,$LANG仅为文字
    export variable    #使变量变为环境变量
    unset variable     #取消变量
    
    
      
  • set 可以观察目前 bash 环境下的所有变量;
  • $? 亦为变量,是前一个指令执行完毕后的回传值。在 Linux 回传值为 0 代表执行成功;
  • locale 可用于观察语系资料;
  • 可用 read 让使用者由键盘输入变量的值
  • ulimit 可用以限制使用者使用系统的资源情况
  • bash 的配置文件主要分为 login shell 与 non-login shell。login shell 主要读取 /etc/profile 与 ~/.bash_profile, non-login shell 则仅读取 ~/.bashrc
  • 在使用 vim 时,若不小心按了 [ctrl]+s 则画面会被冻结。你可以使用 [ctrl]+q 来解除冻结
alias  lm='ls -al | more'  #命令别名
unalias lm                 #取消命令别名
history #读取历史命令
!!    #可执行上个命令
!n    #可执行第n个命令
!vi   #可执行开头是vi的命令
  • 命令执行顺序:1.以相对/绝对路径执行命令,例如【/bin/ls】或【./ls】  2.由alias找到该命令来执行   3.由bash内置的命令来执行    4.通过$PATH这个变量的顺序查找到的第一个命令来执行                 ##type 可查看命令的执行顺序
  • /etc/issue bash的登录信息
    • 组合按键 执行结果

      crtl + c

      终止目前的命令
      crtl + d输入结束
      crtl + m回车
      crtl + s暂停屏幕的输出
      crtl + q恢复屏幕的输出
      crtl + u在提示字符下,删除整列命令
      crtl + z暂停目前的命令
  • 通配符主要有: *, ?, [] 等等
  • 符号意义
    *代表『 0 个到无穷多个』任意字符
    ?代表『一定有一个』任意字符
    [ ]同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』
    [ - ]若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的!
    [^ ]若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。
  • 符号内容
    #批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行
    \跳脱符号:将『特殊字符或通配符』还原成一般字符
    |管线 (pipe):分隔两个管线命令的界定(后两节介绍);
    ;连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同)
    ~用户的家目录
    $取用变量前导符:亦即是变量之前需要加的变量取代值
    &工作控制 (job control):将命令变成背景下工作
    !逻辑运算意义上的『非』 not 的意思!
    /目录符号:路径分隔的符号
    >, >>数据流重导向:输出导向,分别是『取代』与『累加』
    <, <<数据流重导向:输入导向 (这两个留待下节介绍)
    ' '单引号,不具有变量置换的功能
    " "具有变量置换的功能!
    ` `两个『 ` 』中间为可以先运行的命令,亦可使用 $( )
    ( )在中间为子 shell 的起始与结束
    { }在中间为命令区块的组合!
  • 数据流重导向通过 >, 2>, < 之类的符号将输出的信息转到其他文件或装置去;

                标准输入  (stdin) :代码为 0 ,使用 < 或 << ;

                标准输出  (stdout):代码为 1 ,使用 > 或 >> ;

                标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;

                1> :以覆盖的方法将『正确的数据』输出到指定的文件或装置上;

                1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上;

                2> :以覆盖的方法将『错误的数据』输出到指定的文件或装置上;

                2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上;

                /dev/null   为垃圾桶,将信息输出此处即不显示,丢弃数据

  • 连续命令的下达可通过 ; 或 && 或 || 等符号来处理
命令下达情况说明
cmd1 && cmd21. 若 cmd1 运行完毕且正确运行($?=0),则开始运行 cmd2。
2. 若 cmd1 运行完毕且为错误 ($?≠0),则 cmd2 不运行。
cmd1 || cmd21. 若 cmd1 运行完毕且正确运行($?=0),则 cmd2 不运行。
2. 若 cmd1 运行完毕且为错误 ($?≠0),则开始运行 cmd2。
  • 管道命令的重点是:『管道命令仅会处理 标准输出standard output,对于标准错误 standard error output 会予以忽略』 『管道命令必须要能够接受来自前一个命令的数据成为标准输入 standard input 继续处理才行。』
  • 本章介绍的管线命令主要有:cut, grep, sort, wc, uniq, tee, tr, col, join, paste, expand, split, xargs 等。

命令作用
cut以行为单位截取信息
grep分析一行信息,如有所需信息取出该行
sort排序
wc排序后将重复数据合并显示
uniq计算输出信息的整体数据,多少字、多少行、多少字符
tee双向重定向,将数据流分送到文件与屏幕
tr删除或进行文字信息替换
col多用于将[tab]替换为空格
join在两个文件中,将有相同数据的一行,加在一起
paste将两行贴在一起,中间以[tab]隔开
expand将[tab]转成空格键
split将大文件划分为小文件
xargs参数代换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值