1. 命令历史:history

    环境变量:

    HISTSIZE: 命令历史的条数

    HISTFILE:~/.bash_history

    HISTFILESIZE: 命令历史文件记录历史的条数

     history -d OFFSET: 删除命令历史
    -c: 清空缓冲区命令历史
    -a: 手动追加当前会话缓冲区的命令历史至命令历史文件中
    history #:显示命令历史中最近的#条命令

    调用命令历史中的命令:

    !#:重复执行第#条命令

    !!: 重复执行上一条命令

    !string: 执行最近的第一条匹配string的命令

    调用上一条命令的最后一个参数:

    !$ ESC,. Alt+.

    控制命令历史的记录方式

    环境变量: HISTCONTROL

    ignoredups:忽略重复的命令;连续且相同方为重复

    inorespace:忽略所有以空白开头的命令

    ignoreboth:上述两者都生效

    修改环境变量值得方式: export 变量名="值"

    变量赋值:把赋值符号后面的数据存储于变量名指向的内存空间

  2. 命令补全和路径补全:Tab

  3. 命令行展开

    ~:展开为用户的主目录

    ~USERNAME:展开为指定用户的主目录

    {}:可承载一个以逗号分隔的列表,并将其展开为多个路径

  4. 命令的执行结果状态

    $? : 0表示成功,其他数值为失败

  5. 命令别名

    请过alias命令实现

    (1)alias

    显示当前shell进程所有可用的命令别名

    (2) alias NAME='VALUE'

    定义别名NAME,其相当于执行命令value

    注意: 在命令行中定义的别名,仅对当前shell进程有效,如果要永久有效,要定义在配置文件中

    仅对当前用户有效: ~/.bashrc

    对所有用户有效: /etc/bashrc

    Note: 编辑配置给出的新配置不会立即生效

    bash进程重新读取配置文件:

    sourch /path/to/config_file

    . /path/to/config_file

撤销别名: unalias NAME
-a: 撤销全部
Note: 如果别名同原命令名称,如果要执行原命令,可使用"\COMMAND"
  1. glob(globing)

    bash中用于实现文件名"通配"

    (1)*

    任意长度的任意字符

    (2)?

    任意单个字符

    (3)[]

    匹配指定范围内的任意单个字符

    (4)[^]

    匹配指定范围外的任意单个字符

    专用字符集合:

    [:digit:]: 任意数字,相当于0-9

    [:lower:]: 任意小写字母

    [:upper:]: 任意大写字母

    [:alpha:]: 任意大小写字母

    [:alnum:]: 任意数字或字母

    [:space:]: 空格

    [:punct:]: 标点符号

  2. bash的快捷键

    Ctrl+l:清屏,相当于clear

    Ctrl+a: 跳转至命令开始处

    Ctrl+e: 跳转至命令结尾处

    Ctrl+c: 取消命令的执行

    Ctrl+u:删除命令行至光标所在处的所有内容

    Ctrl+k:删除光标处命令行尾部的所有内容

  3. bash的I/O重定向及管道

    输出重定向:COMMAND>NEW_POS,COMMAND>>NEW_POS

    >: 覆盖重定向,目标文件中的原有内容会被清除

    >>: 追加重定向,新内容会追加至目标文件尾部

    # set -C: 禁止将内容覆盖至已有文件中

    # set +C: 允许将内容覆盖至已有文件中

    2>: 只能覆盖重定向错误输出数据流

    2>>:追加重定向错误输出数据流

    标准输出和错误输出各自定向至不同位置

    # COMMAND > /path/to/somefile 2> /path/to/error.txt

    合并标准输出和错误输出为同一个数据流进行重定向

    &>: 覆盖重定向

    &>>: 追加重定向

    COMMAND > /path/to/file.out 2> &1

    输入重定向: <

    管道:COMMAND1 | COMMAND2 | COMMAND 3 | ...

    Note: 最后一个命令会在当前shell进程的子shell进程中执行

    tee命令:

    tee [OPTIONS]... [FILE]...

    -a: 追加内容至指定文件中

练习:

1.将/etc/passwd文件中的前5行转换为大写后保存至/tmp/passwd.out文件中

head -n 5 /etc/passwd | tr 'a-z' 'A-Z' > /tmp/passwd.out

2.将登陆至当前系统上用户信息中的后3位的信息转换为大写后保存至/tmp/who.out文件中
who | tail -n 3 | tr 'a-z' 'A-Z' > /tmp/who.out
  1. bash的配置文件

    按生效范围划分:

    全局配置:

    /etc/profile

    /etc/profile.d/*.sh

    /etc/bashrc

     个人配置:
    ~/.bash_profile
    ~/.bashrc 按功能划分,存在两类:
    profile类: 为交互式登录的shell提供配置
    全局: /etc/profile, /etc/profile.d/*.sh
    个人: ~/.bash_profile
    功用:
    1. 用于定义环境变量
    2. 运行命令或脚本 bashrc类: 为非交互式登录的shell提供配置
    全局: /etc/bashrc
    个人: ~/.bashrc
    功用:
    1. 定义命令别名
    2. 定义本地变量

10 shell登录

交互式登录

直接通过终端输入账号密码登录

使用su - USERNAME 或su -l USERNAME 切换的用户

/etc/profile -> /etc/etc/profile.d/*.sh -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc

    非交互式登录:
su USERNAME
图形界面下打开的终端
执行脚本
~/.bashrc -> /etc/bashrc -> /etc/profile.d/*.sh

问题:

1. 定义对所有用户都生效的别名 /etc/bashrc

2. 让用户的PATH环境变量的值多出一个路径,例如/usr/local/apache2/bin,

管理员? ~/.bash_profile

所有人? /etc/profile 或 /etc/profile.d/*.sh

  1. 编程语言:

    低级:汇编

    高级:

    编译: 高级语言 -> 编译器 -> 目标代码

    c, c++, java

    解释: 高级语言 -> 解释器 -> 机器代码

    shell, perl, python

    shell 如何执行程序: 过程式、解释执行

    运行脚本:

    1. 给与执行权限,通过具体的文件路径指定文件执行

    2. 直接运行解释器,将脚本作为解释器程序的参数运行

bash的基础特性的更多相关文章

  1. 【Linux相识相知】bash的基础特性

    命令历史 shell进程会记录用户提交执行过的命令 可以是用history查看: [root@localhost dev]# history ss -tnl ifconfig vi /etc/sysc ...

  2. linux文件系统及bash基础特性

    linux文件系统 一.根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上.根文件系统至关重 ...

  3. linux学习12 bash的常见特性及文本查看命令实战

    一.回顾 1.FHS,命令及bash命令历史 a.FHS: /bin,/sbin,/lib,/lib64,/etc /home,/root /boot /media,/mnt /proc,/sys / ...

  4. 自学Linux Shell19.1-gawk程序基础特性

    点击返回 自学Linux命令行与Shell脚本之路 19.1-gawk程序基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. gawk概念 awk是一个强大的文本分析工具 ...

  5. linux基础(2)-基础命令和基础特性

    基础命令 命令历史 命令历史的管理 登陆 shell 时,会读取命令历史文件中记录下的命令: ~/.bash_history . 登陆进 shell 后,新执行的命令只会记录在缓存中,这些命令会在用户 ...

  6. Bash的基础知识man手册

    Bash的基础知识man手册 由于基于Android类设备的渗透测试都是通过各类终端实现.所以掌握Shell相关操作就显得尤为重要.Bash是一个为GNU计划编写的Unix Shell本文选自基于An ...

  7. python基础——特性(property)、静态方法(staticmethod)和类方法(classmethod)

    python基础--特性(property) 1 什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 import math class Circl ...

  8. 自学Linux Shell18.1-sed编辑器基础特性

    点击返回 自学Linux命令行与Shell脚本之路 18.1-sed编辑器基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. sed概念 sed是stream edito ...

  9. vue总结 01基础特性

    最近有时间来总结一下vue的知识: 一.vue.js 被定义成一个开发web界面的前端库,是一个非常轻量的工具.vue.js本身具有响应式和组件化的特点. 我们不需要在维护视图和数据的统一上花费大量的 ...

随机推荐

  1. sanchi

    修炼之路阶段1能简单处理html+css+js前端页面,可实现管理后台前端页面 熟练安装php的web运行环境,并调整配置,会自行安装php扩展 熟练数据库操作,清楚为何使用pdo而不使用mysql等 ...

  2. Java9之HashMap与ConcurrentHashMap

    HashMap在Java8之后就不再用link data bins了,而是转为用Treeify的bins,和之前相比,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成.: * This ...

  3. exe电子书制作教程(超详细)【申明:来源于网络】

    exe电子书制作教程(超详细)[申明:来源于网络] 地址:http://wenku.baidu.com/view/0b046907eff9aef8941e0631.html

  4. 视频转GIF动态图怎样实现

    怎样将视频转GIF动态图呢?随着现在社交方式的不断发展,GIF动态图也成了现在聊天中必不可少的,一种娱乐形式.那么当我们在看视频时,看到了精彩的片段,我们应该怎样将这些精彩的视频片段制作成GIF动态图 ...

  5. Parallel.ForEach 多线程 声明失败 "未将对象引用设置到对象的实例"

    x using System; using System.Collections.Generic; namespace Parallel.ForEach { class Program { //代码结 ...

  6. torch.nn.Embedding

    自然语言中的常用的构建词向量方法,将id化后的语料库,映射到低维稠密的向量空间中,pytorch 中的使用如下: import torch import torch.utils.data as Dat ...

  7. vs防止编译不能连接生成pdb文件

    问题的原因:debug和release版本生成的目标文件名称(Target Name)都一样,所以导致链接失败:

  8. oracle日期格式化

    TO_CHAR(t.CAMERA_CREAT_TIME, 'YYYY-MM-DD HH24:MI:SS') as point_registerdate,TO_CHAR(t.CAMERA_MODIFY_ ...

  9. you-get模块

    You-Get是一个基于 Python 3 的下载工具.使用 You-Get 可以很轻松的下载到网络上的视频.图片及音乐. 转载https://www.cnblogs.com/wangchuanyan ...

  10. vue router相关用法

    router.push(location) 想要导航到不同的 URL,则使用 router.push 方法.这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之 ...