鸟哥的Linux私房菜基础篇 第十章认识和学习bash这个shell

1 认识bash这个shell

用户通过shell来跟kernel进行沟通,但是系统有很多工具提供了shell的功能,其中bash就是其中之一。
bash shell的功能:

-命令编修能力 history

  • tab,具有文件名补全,命令补全的功能。
  • 双击tab,有提示的作用。
  • 命令别名功能:alias
  • 程序化脚本
  • 万用字符 *

内置命令:
查询是否为内置命令:type command
如:type cd

[ctrl]+u/[ctrl]+k向前向后删除
[ctrl]+a/[ctrl]+e光标移动到最前或最后

2 shell变量功能

  1. 变量取用和设置
    echo $var
    echo $PATH

  2. 子模块
    cd /lib/modules/uname -r/kernel
    cd /lib/modules/$(uname -r)/kernel

    myname="$var is a var" 可进行变量替换

    myname=’$var is a var’

  3. 环境变量
    [root@localhost~]$ env
    [root@localhost~] $ set 观察所有变量

  4. 特殊符号
    $ 表示本shell的ID
    ? 上条命令执行的回传值,为0则表示执行成功
    echo $$ 本shell的PID
    echo $?
    export var :将自定义变量转成 环境变量

  5. read , array, declare

  • read
    $read -p "Please keyin your name: " -t 30 named
  • declare 的用法
sum=1+2+3
echo $sum

declare -i sum=1+2+3
echo $sum
  • array
var[1]='zhang'
var[2]='li'
var[3]='wang'
echo "${var[1]},${var[2]},${var[3]}"
  1. 与文件系统及程序的限制关系:ulimit
    使用示例:
$ ulimit -f 10240
$ dd if=/dev/zero of=123 bs=1M count=20   //创建20M的文件失败
rm 123 
登出再次登录,就能取消掉限制

  1. 变量替换,取代与删除
    p a t h = path= path={PATH}
    $ echo ${path}
  • # 号的使用
    $ echo ${path#/local/bin:} //向右删除头一个
    $ echo ${path##/
    :} //删除最长的那一个
  • %号的使用
    表示从后往前删除
    %% 表示最长的匹配串
  • /
    ${变量/旧字串/新字串} 第一个被取代
    ${变量//旧字串/新字串} 全部被取代

3 别名与历史命令

  1. alias, unalias
    alias h=‘history’
  2. history
    history n //最近N个
    !cmd 最近匹配到的命令
    !! 执行上一指令

4 bash shell的操作环境

  1. bash的进站信息:/etc/issue, /etc/motd
    进站的画面,在文件/etc/issue中修改。
    如:
\S (terminal: \l)
Date: \d \t
Kernel \r on an \m
Welcome!

登录后获得通知消息,在/etc/motd中修改。
如告诉登录着固定时间会进行维护,或者某文件不能删除修改等。

5 数据流重定向

     file   <<,<    command   输入,代号0
     command >>,>file  输出,代号1
     command 2>,2>> file/screen/device  标准错误输出 代号,2   
     /dev/null 垃圾桶黑洞设备与特殊写法
     --------------------------
     示例:
        1. 输出
         ls / >> file 
        2. 输入
         cat << EOF > output
			hello
			world
			EOF
	
         3. 错误信息的丢弃
         sh start.sh 2>/dev/null
         2表示错误信息的标号,/dev/null是一个黑洞。
         4. 将错误信息也保存到标准输出流中:2>&1
         5.  ;, &&, ||
         连续指令, ;
         指令回传值,$?
         cmd1 && cmd2: cmd1 正确执行完毕,再运行cmd2 ,否则cmd2不执行
         cmd1 || cmd2 : cmd1 正确执行完毕,cmd2不执行,
         如: ls /tmp/abc || mkdir /tmp/abc ,不会出现mkdir重复的错误。
         ls /tmp/vbirding && echo "exist" || echo "not exist" 存在输出exist,不存在输出not exist

6 管道命令pipe

如: ls /usr/bin | less 使用less协助查看

  1. cut ,grep
  • cut
    cut -d’:’ -f 3[,5]
    cut -c-10
  • grep 为分析一些信息
    cat file |grep name
    grep ‘name’ file
    grep常用参数: -v,-i ,-E
  1. 排序命令:sort,wc,uniq
  • sort
    cat file | sort
    cat file | sort -t ‘:’ -k 3 #以:号分割,根据第三列字段排序

  • uniq
    将重复的数据,仅仅列出一个

  • wc
    wc -l 列出多少行

  1. 双向重导向
    可以将内容打印到屏幕且将内容输入到文件。
    ls | tee file
  2. 字符转换命令
  • tr: 删除一段信息当中的文字或者替换
    如:cat file| tr ‘[a-z]’ ‘[A-Z]’ 小写换大写
    tr -d ‘:’ 删除符号
  • join
    处理两个文件中,有相同数据的行,连成一行
    如:
    join -t ':' /etc/passwd /etc/shadow
    -t 表示按照: 分割子串,并且对比第一列
    
    • paste
      将两个文件中,相同的行直接粘贴到一起
  • split 分区命令
    文件太大无法复制,将大文件分区为小文件。
    如:
split -b 300k /etc/services services  //将/etc/services文件分为300k的小文件
cat setvice*>>servicesbak 使用重定向就可以恢复
spilt -l 10 file bak  // 按行划分,文件的每十行一个文件
  • xargs
    command1 | xargs command2
    将1的结果作为参数传递给2进行执行

  • - 号的用途
    请相信,每一个符号的存在都是极其重要以及有意义的。
    使用如下:

tar -cvf  -  /home | tar -xvf  -  -C /tmp/homeback
相当于临时未命名变量一样,前面指令的输出,作为后面指令的输入。

好了,本章的内容基本完毕。谢谢阅读和支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值