bash的基础特性
命令历史:history
环境变量:
HISTSIZE: 命令历史的条数
HISTFILE:~/.bash_history
HISTFILESIZE: 命令历史文件记录历史的条数history -d OFFSET: 删除命令历史
-c: 清空缓冲区命令历史
-a: 手动追加当前会话缓冲区的命令历史至命令历史文件中
history #:显示命令历史中最近的#条命令
调用命令历史中的命令:
!#:重复执行第#条命令
!!: 重复执行上一条命令
!string: 执行最近的第一条匹配string的命令
调用上一条命令的最后一个参数:
!$ ESC,. Alt+.
控制命令历史的记录方式
环境变量: HISTCONTROL
ignoredups:忽略重复的命令;连续且相同方为重复
inorespace:忽略所有以空白开头的命令
ignoreboth:上述两者都生效
修改环境变量值得方式: export 变量名="值"
变量赋值:把赋值符号后面的数据存储于变量名指向的内存空间命令补全和路径补全:Tab
命令行展开
~:展开为用户的主目录
~USERNAME:展开为指定用户的主目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径命令的执行结果状态
$? : 0表示成功,其他数值为失败命令别名
请过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"
glob(globing)
bash中用于实现文件名"通配"
(1)*
任意长度的任意字符
(2)?
任意单个字符
(3)[]
匹配指定范围内的任意单个字符
(4)[^]
匹配指定范围外的任意单个字符专用字符集合:
[:digit:]: 任意数字,相当于0-9
[:lower:]: 任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]: 任意数字或字母
[:space:]: 空格
[:punct:]: 标点符号bash的快捷键
Ctrl+l:清屏,相当于clear
Ctrl+a: 跳转至命令开始处
Ctrl+e: 跳转至命令结尾处
Ctrl+c: 取消命令的执行
Ctrl+u:删除命令行至光标所在处的所有内容
Ctrl+k:删除光标处命令行尾部的所有内容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
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
- 编程语言:
低级:汇编
高级:
编译: 高级语言 -> 编译器 -> 目标代码
c, c++, java
解释: 高级语言 -> 解释器 -> 机器代码
shell, perl, python
shell 如何执行程序: 过程式、解释执行
运行脚本:
1. 给与执行权限,通过具体的文件路径指定文件执行
2. 直接运行解释器,将脚本作为解释器程序的参数运行
bash的基础特性的更多相关文章
- 【Linux相识相知】bash的基础特性
命令历史 shell进程会记录用户提交执行过的命令 可以是用history查看: [root@localhost dev]# history ss -tnl ifconfig vi /etc/sysc ...
- linux文件系统及bash基础特性
linux文件系统 一.根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上.根文件系统至关重 ...
- linux学习12 bash的常见特性及文本查看命令实战
一.回顾 1.FHS,命令及bash命令历史 a.FHS: /bin,/sbin,/lib,/lib64,/etc /home,/root /boot /media,/mnt /proc,/sys / ...
- 自学Linux Shell19.1-gawk程序基础特性
点击返回 自学Linux命令行与Shell脚本之路 19.1-gawk程序基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. gawk概念 awk是一个强大的文本分析工具 ...
- linux基础(2)-基础命令和基础特性
基础命令 命令历史 命令历史的管理 登陆 shell 时,会读取命令历史文件中记录下的命令: ~/.bash_history . 登陆进 shell 后,新执行的命令只会记录在缓存中,这些命令会在用户 ...
- Bash的基础知识man手册
Bash的基础知识man手册 由于基于Android类设备的渗透测试都是通过各类终端实现.所以掌握Shell相关操作就显得尤为重要.Bash是一个为GNU计划编写的Unix Shell本文选自基于An ...
- python基础——特性(property)、静态方法(staticmethod)和类方法(classmethod)
python基础--特性(property) 1 什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 import math class Circl ...
- 自学Linux Shell18.1-sed编辑器基础特性
点击返回 自学Linux命令行与Shell脚本之路 18.1-sed编辑器基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. sed概念 sed是stream edito ...
- vue总结 01基础特性
最近有时间来总结一下vue的知识: 一.vue.js 被定义成一个开发web界面的前端库,是一个非常轻量的工具.vue.js本身具有响应式和组件化的特点. 我们不需要在维护视图和数据的统一上花费大量的 ...
随机推荐
- 用memset设置无穷大无穷小
memeset是以字节为单位进行赋值的,对字符数组可以直接用. 但对于int数组就不行了. 但设置无穷大来说有个技巧: 如果我们将无穷大设为0x3f3f3f3f,那么奇迹就发生了,0x3f3f3f3f ...
- 【谈谈IO】BIO、NIO和AIO
BIO: BIO是阻塞IO,体现在一个线程调用IO的时候,会挂起等待,然后Thread会进入blocked状态:这样线程资源就会被闲置,造成资源浪费,通常一个系统线程数是有限的,而且,Thread进入 ...
- 二、JavaScript基础(2)
BOM基础加强 1.浏览器对象BOM DOM Window DOM Navigator DOM Screen DOM History DOM Location 2.浏览器对象的使用 History H ...
- 剑指offer——python【第2题】替换空格
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”. 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 理解 很容易想到用pytho ...
- Java 批量下载excel,并对excel赋值,压缩为zip文件(POI版)
package com.neusoft.nda.servlet; import java.io.File;import java.io.FileInputStream;import java.io.F ...
- stm32专属于菜鸟的学习方法
1.首先我们先看看与STM32相关的文档 我们假定大家已经对STM32的书籍或者文档有一定的理解.如不理解,请立即阅读STM32的文档,以获取最基本的知识点. 如果你手上拥有ST官方主推的STM32神 ...
- PrimeNG之DataTable
--数据表显示在表格格式数据. Basic Import import {DataTableModule,SharedModule} from 'primeng/primeng'; source &l ...
- post方式接口测试(一)_新建测试用例
第一种方式:拷贝别人的 第二种方式:自己创建 二.打开浏览器(此处chrome),F12打开开发模式,输入网址登录,此时可获取到登录的 Request URL 二.打开postman,进入自己的Col ...
- linux-grep-tail-find
如果在只是想匹配模式的上下几行,grep可以实现. $grep -5 'parttern' inputfile //打印匹配行的前后5行 $grep -C 5 'parttern' inputfile ...
- PHP中new self()和new static()的区别探究
1.new static()是在PHP5.3版本中引入的新特性. 2.无论是new static()还是new self(),都是new了一个新的对象. 3.这两个方法new出来的对象有什么区别呢,说 ...