linux中的bash
一、bash的简介
操作系统都是需要通过shell跟内核来交互的,常见的shell有GUI、KDE、sh、csh、bash、tsh、zsh等、
而linux中最常用的shell就是bash。
二、bash的特性
1.编辑快捷键
Ctrl+a:跳到命令行首
Ctrl+e:跳到命令行尾
Ctrl+u:删除光标至命令行首的内容
Ctrl+k:删除光标至命令行尾的内容
Ctrl+l:清屏
Ctrl+c:终止取消命令
Ctrl+z:将当前命令送至后台(fg调回命令)
2.命令历史
查看命令历史:history
-c:清空命令历史
-w:保存命令历史至文件中
3.命令展开
~:为家目录
{}:展开多个目录
/home/{zrq/{job,wok},demo} =/home/zrq/job /home/work /home/demo
4.补全功能
①命令补全:通过tab键在PATH中搜索补全
PATH:一组以冒号分割的路径集合
shell命令分为内部命令与外部命令
内部命令:直接构建在shell之中的命令
外部命令:在系统的某一路径下游可执行程序
②路径补全:给出排头的路径补全,如果没有补全则默认为当前路径
5.通配符
① *:匹配任意长度任意字符。
② ?:匹配任意单个字符
③ []:匹配指定范围内任意单个字符,不区分大小写
④ [^]:匹配指定字符外的任意单个字符
6.命令别名(alias)
查看命令别名:alias
临时定义新的命令别名:alias 别名 =‘命令’
取消临时定义的命令别名:unalis 别名
7.bash中的变量
变量的类型
①自定义变量:只对当前shell有效,对其子shell无效。
定义变量:变量名=“Value”
引用变量:${变量名}
撤销变量:unse t变量名
②本地变量:只对局部生效
定义变量:local 变量名=“Value”’
③环境变量:对shell及子shell都有效
export
-p:查看当前环境变量
④位置变量:
$1..$n(代表从第一个位置到第n个位置的变量)
⑤特殊变量:
$0::代表脚本名称自身
$?:代表上一个命令的执行状态(0表示成功,非0均表示不成功)
$$:shell最后运行的后台process的PID
8.bash中的输入输出重定向和管道命令
①标准I/O
标准注入:默认一般指键鼠
标准输出:默认一般指显示器
标准错误输出:默认一般指显示器
②I/O重定向
输入重定向:<
输出重定向:>,>>
>:覆盖输出
>>:追加输出
set -C :禁止使用覆盖重定向覆盖已存在文件。
set +C:关闭禁止
错误重定向:2>,2>>
同时重定向正确输出与错误输出:&>
③管道命令
:|
管道命令就是一种输入输出的一种实现,将命令的结果输出到管道,然后通过这个管道输入给下一个命令。
同时管道命令是可以多重的
命令1|命令2|命令3
③ tee命令
当你想把一个命令的输出,保存到文件中,又想对输出进行另外操作时候。
比如:/etc//work下的文件名 输出到/tmp/test 中并统计共多少行
cat /etc/work | tee /tmp/test |wc -l
注意:tee的位置
三、bash的配置文件(使用户配置持久配置)
1.bash的配置文件分为两类
①profile类(为交互式登录提供配置)
/etc/profile:全局的
/etc/profile.d/*sh:全局的
~/.bash_profile:仅对个人用户有效
功能:
设定环境变量
运行脚本或命令
②bashrc类(为非交互式登录提供配置)
/etc/bashrc:全局的
~/.bashrc:仅对个人用户有效
功能:
设定本地变量
定义命令别名
2.登录类型
①交互式登录
直接通过终端输入账号密码登录
su - 用户名 或 su -l 用户名 登录
②非交互式登录
su 用户名
图形界面下的终端
3.bash读取配置文件顺序
①交互式登录读取顺序
/etc/profile --->/etc/profile.d/*.sh--->~/.bash_profile --->~/.bashrc ---> /etc/bashrc
②非交互式登录读取顺序
~/.bashrc ---> /etc/bashrc ---> /etc/profile.d/*.sh
4.配置生效方式
①强制重读
source 文件名
. 文件名
②重新登录
四、bash中的算数
1.declare
-i:整型变量
2.let
let 变量名=算数表达式
例如:let sum=$num1+$num2
echo $sum
3.算数表达式
变量名=$[$sum1+$sum2]
五、bash的测试
1.整数测试
2.字符串测试
3.文件测试
①单目测试
-e file :测试文件是否存在
-f /path:测试目标文件是否为普通文件
-d: 目录文件
-b:
-c:
-p:
-s:
-r:文件存在且当前用户有有读权限
-x:测试文件是否存在且不为空
②双目测试
file1 -nt file2 :测试文件1是否比文件2新
六、轮替
shift
linux中的bash的更多相关文章
- 在 Alpine Linux 中安装 bash shell
如何在我的 Alpine Linux LXD(Linux容器)虚拟机(VM)中安装 bash shell? Alpine Linux 自带 BusyBox 工具.它被评为“嵌入式 Linux 的瑞士军 ...
- Linux中编写Bash脚本的10个技巧
Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式.尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能. 本文中,我们将分享 ...
- 教你一些Linux中隐藏bash历史命令的小技巧
导读 如果你登录过 Linux 系统,并敲过一些命令,那你应该知道,bash history 会记录你输入的所有命令.这个操作其实是有一定风险的. 我个人经常使用 Linux,所以我想着研究一番,看看 ...
- Fish:Linux中比bash或zsh更好用的Shell
Fish是一个智能且用户友好的命令行shell,适用于macOS,Linux和其他家族.fish包含语法突出显示.根据你键入字符自动提示autosuggest-as-type和花式选项卡完成等功能,无 ...
- CentOS7 linux 中提示 bash: ls: 未找到命令...
记录一次CentOS7里执行ls命令失败的问题 执行ls命令时报找不到命令,原因是环境变量PATH被修改, 解决办法: 执行 export PATH=/bin:/usr/bin:$PATH 然后 ...
- Linux 学习 之 bash
Anything is programmable with defined syntax and common lib. Bash Shell is created to programme to L ...
- Linux中Bash发现重大安全漏洞修改方法
北京时间9月25日消息,Linux用户今天又得到了一个“惊喜”!Red Hat安全团队在 Linux 中广泛使用的Bash shell中发现了一个隐晦而危险的安全漏洞.该漏洞被称为“Bash Bug” ...
- 在ubuntu linux 中编写一个自己的bash脚本
在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pm为例(play music)),来实现音乐的播放.注:本人ununut中安装了audacious ...
- Linux中bash编程
bash编程也叫shell编程 预定义变量 $? 最后一次执行的命令的返回状态.如果这个变量的值为0,证明上一个命令正确的执行:如果这个变量返回的值非0(具体是那个数,有命令自己来决定 ...
随机推荐
- npm注册源的配置
npm注册源的更换 在墙内久了,难免会碰到撞墙的时候,所幸国内也有众多 NPM 镜像可供选择,在大多数情况下我们可以使用国内的源(比如 淘宝 NPM 镜像)去替换官方的源以加快下载包的速度.不过呢,我 ...
- 广告行业中那些趣事系列6:BERT线上化ALBERT优化原理及项目实践(附github)
摘要:BERT因为效果好和适用范围广两大优点,所以在NLP领域具有里程碑意义.实际项目中主要使用BERT来做文本分类任务,其实就是给文本打标签.因为原生态BERT预训练模型动辄几百兆甚至上千兆的大小, ...
- 【,NetCore】WebApi使用统一时间格式
1.在Startup中配置统一时间格式 services.AddMvc() .AddJsonOptions(options => { //配置时间序列化格式 options.Serializer ...
- python-面向对象小结
面向对象 小结 1:面向对象:就是一种编程思想 简称oop,指挥某某完成能完成的功能 2:面向对象与面向过程的优缺点 : 面向过程: 优点: 复杂问题简答化(一步一步解决), 流程化, 缺点:机械化 ...
- 机器学习基础——简单易懂的K邻近算法,根据邻居“找自己”
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天的文章给大家分享机器学习领域非常简单的模型--KNN,也就是K Nearest Neighbours算法,翻译过来很简单,就是K最近邻居 ...
- 教妹学Java:Spring 入门篇
你好呀,我是沉默王二,一个和黄家驹一样身高,刘德华一样颜值的程序员(管你信不信呢).从两位偶像的年纪上,你就可以断定我的码龄至少在 10 年以上,但实话实说,我一直坚信自己只有 18 岁,因为我有一颗 ...
- 第一篇博客 C+++知识点总结一
1.成员 1.比较特殊的成员类型:protected. 保护成员在本类中和private类型的成员作用一模一样.区别在于保护成员可以由本类的派生类的成员函数访问,但是私有成员在其派生类中无法访问. 2 ...
- html5 中高级选择器 querySelector
简介 HTML5向Web API新引入了document.querySelector以及document.querySelectorAll两个方法用来更方便地从DOM选取元素,功能类似于jQuery的 ...
- C语言程序设计(十二) 结构体和共用体
第十二章 结构体和共用体 当需要表示复杂对象时,仅使用几个基本数据类型显然是不够的 根本的解决方法是允许用户自定义数据类型 构造数据类型(复合数据类型)允许用户根据实际需要利用已有的基本数据类型来构造 ...
- Druid 0.17 入门(3)—— 数据接入指南
在快速开始中,我们演示了接入本地示例数据方式,但Druid其实支持非常丰富的数据接入方式.比如批处理数据的接入和实时流数据的接入.本文我们将介绍这几种数据接入方式. 文件数据接入:从文件中加载批处理数 ...