博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux学习笔记8——bash基本概念
阅读量:6981 次
发布时间:2019-06-27

本文共 2095 字,大约阅读时间需要 6 分钟。

一个操作系统的组成中,shell是与用户最接近的部分

shell:外壳,也是一种程序
GUI:Gnome,KDE,Xface
CLI:sh,csh,ksh,bash,tcsh,zsh
Linux中大多使用bash

  • 既然shell也是一种程序,那么shell在什么时候启动?

    当用户登陆时,shell就会被打开。

  • 如果有两个用户同时使用shell,那么需要几个可执行的shell程序?

    程序只有一个,但进程可以有多个。因此进程可以看作程序的副本。
    Linux允许一个用户登录多次,开启多个shell,每个进程互不相干。
    进程:在每个进程看来,当前主机上只存在内核和当前进程。
    进程是程序的副本,进程是程序执行实例

  • 我们可以在shell中打开shell
    shell是一个外部命令,但shell里面自身带有其它很多命令

用户的工作环境:

bash:

shell,子shell:用pstree可以看到

bash——bash
子shell和父shell之间没有任何关系,谁也不会影响谁

bash的特性:

1、支持命令历史
2、支持管道,重定向
3、支持命令别名
4、支持命令行编辑
5、支持命令行展开
6、支持文件名通配
7、支持使用变量
8、支持编程

命令行编辑:

  • 光标跳转:

    Ctrl+a:跳到命令行首
    Ctrl+e:跳到命令行尾
    Ctrl+d:删除
    Ctrl+u: 删除光标至命令行首的内容
    Ctrl+k: 删除光标至命令行尾的内容
    Ctrl+l: 清屏

  • 查看命令历史:history(显示在此执行过的所有命令)

    用户使用过的命令历史在运行时都在内存缓冲区里面!
    -c:清空整个命令历史
    -d n: 删除指定位置的命令(删除第n个命令)
    -d a b:删除第a个命令后的b个命令
    -w:保存命令历史至历史文件中 ls -a (显示隐藏文件)有个.bash_history

  • 环境变量

    PATH:命令查找路径
    HISTSIZE: 命令历史缓冲区大小,可以保存过去多少条命令。

  • 命令历史的使用技巧:

    !n:执行命令历史中的第n条命令;
    !-n:执行命令历史中的倒数第n条命令;
    !!: 执行上一条命令;
    !string:执行命令历史中最近一个以指定字符串开头的命令
    !$:引用前一个命令的最后一个参数;
    Esc, .
    Alt+.

  • 命令补全:【tab】或两下【tab】
  • 路径补全:【tab】或两下【tab】

  • 命令别名:比如Windows清屏为cls,Linux清屏为clear

    alias CMDALIAS=COMMAND [options] 如alias cls=clear
    同时也可以将cd /。。。一些经常用到的文件目录取一个别名!提高效率!!!
    单打一个命令 alias可以显示系统上的所有别名
    在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;
    如果想永久有效,可以将这个命令写在bash的配置文件中。
    unalias可以撤销命令别名。
    有些命令的别名与命令本身同名,只不过在后面加了些选项,此时可以用"\COM"使用命令本身。

  • 命令替换:把命令中某个子命令替换为其执行结果的过程

    $(COMMAND) 或者反引号 COMMAND
    比如说:echo the current directory is $(pwd)
    就会打印出一行:the current directory is /root (/root就是所在的目录)
    比如:touch ./file-$(date +%F-%H-%M-%S).txt
    会在当前目录下创建 file-2018-4-15-12-34.txt (以当前时间为固定格式的一个文件)

    *bash支持的引号:``: 命令替换" ": 弱引用,可以实现变量替换' ': 强引用,不完成变量替换
  • 文件名通配:globbing

    星号 * : 可以匹配任意长度的任意字符
    ?:匹配任意单个个字符
    [ ] :匹配指定范围内的任意单个字符

    比如在当前目录下有这些文件:a abc a123 ab123 x12 xyz xyz123ls a*: a abc  a123 ab123ls a*3 : a123 ab123ls *b* : abc ab123。。。。。。(mkdir一个空目录 在空目录里面touch几个文件自己练一下)

[abc],[a-m],[a-z],[A-Z],[a-zA-Z],[0-9],[0-9a-zA-Z]

[^] : 匹配指定范围之外的任意单个字符
[^0-9]:非数字

  • 空格也可以作为文件名touch 'a b'就可以创建一个有空白字符的文件
    [[:space:]]:空白字符
    [[:punct:]]:标点符号
    [[:lower:]]:小写字母
    [[:digit:]] : 数字
    [[:alnum:]] : 数字和大小写字母
    同时字符集也可以去反比如:[^[alpha]]表非大小写字母集
  • man 7 glob有说明

转载于:https://blog.51cto.com/13691207/2103469

你可能感兴趣的文章
Oracle 11g RAC 添加新节点及故障解决案例
查看>>
docker logstash 使用
查看>>
Linux Study之--RedHat EL6配置VNC server
查看>>
负载均衡集群之lvs
查看>>
(三) Graphivz 基本图片类型
查看>>
ubuntu 升级过程中断电时遇到的问题总汇
查看>>
Netscaler基于policy的log action
查看>>
删除sql server 表中的重复数据!
查看>>
水仙花数
查看>>
初识set集合
查看>>
怎么寻回调整分区后盘符丢失的数据
查看>>
警惕!MySQL成数据勒索新目标
查看>>
linux系统学习第一天
查看>>
eclipse的安卓开发插件『ADT』在线安装不成功的解决方案
查看>>
第12章,网络管理(下)网络基础配置
查看>>
DTU是什么 DTU种类及应用领域分析
查看>>
基于Zynq-7000高速数据采集解决方案
查看>>
【VMware vSAN 6.6】5.2.运行状况:我们有软硬件项目解决方案
查看>>
细数iOS上的那些安全防护
查看>>
tar命令常用参数解释
查看>>