1、命令历史记录history
!$ :调用上一条命令的执行结果
!100 :运行history记录里的第100条命令
!ser :调用以ser开头的最后一次执行的命令
ctrl+r :搜索命令的关键字
2、bash中的符号:
双引号"" : 会把引号里的内容当成一个整体来看待,允许$符号引用其他变量
单引号'' : 会把引号里的内容当成一个整体来看待,不允许引用其他变量
反撇号`` 和 $() : 作用一样,反撇号和小括号里的命令优先执行,区别在于反撇号不能嵌套。
当一个字符串被括在反撇号 ` `中时,该字符串将作为命令被shell解释执行,即用命令的执行结果替换这个字符串本身。要注意反撇号与单引号的区别。
3、运算符
$(())和$[] :运算符
分号; :可对一行命令进行分割,执行下一个命令时不考虑上一条命令执行的结果是否正确
&& :逻辑与 ,可以对一行命令进行分割,执行下一个命令时需要考虑上一条命令执行的结果是否正确
|| :逻辑或,只有在 || 左边的命令返回假,|| 右边的命令才会被执行。
| :表示管道,上一条命令的输出,作为下一条命令参数
4、变量的分类
本地变量:当前用户自定义的变量。只在当前进程中有效,其他进程及当前进程的子进程无效
# a=hello
# echo $a
hello
环境变量:当前进程有效,同时能够被子进程调用
查看当前用户的环境变量env命令
# env|grep HI
HISTSIZE=1000
HISTCONTROL=ignoredups
# HI=hello
# export HI 导出临时变量到环境变量
# env|grep HI
HISTSIZE=1000
HI=hello
HISTCONTROL=ignoredups
# export HI=world 导出
全局变量:所有的用户和程序都能使用,且继承,新建用户也可以调用
# vim /etc/profile 定义系统全局变量
# . /etc/profile 或者 # source /etc/profile 刷新变量
/etc/bashrc 使用bash shell用户的环境变量
/etc/profile 使用shell所有用户的环境变量
局部变量:
$home/.bashrc 当前用户固定的变量,一般该文件定义别名
$home/.bash_profile 当前用户的环境变量
系统变量:(bash内置的变量)
$# : 脚本后参数个数
$* : 脚本后的参数
$@ : 脚本后的参数
$? : 上一条命令执行后的返回状态;0代表正确执行;非0代表异常或出错
$$ : 当前所在进程的进程号
$! : 后台运行的最后一个进程号
$0 : 当前执行的进程或程序名
!! : 调用最后一条命令的历史
!$ : 调用最后一条历史命令中的参数
$1~$9 : 位置参数变量
${10}~${n} :扩展的位置参数变量
6、简单的四则运算:
+ - * / %(取余)
$(()) | $[] |expr |let
7、read 交互式定义变量
-p :提示信息
-n :字符数
-s :不显示
-t :超时时间
# read -p "Input your name:" username
Input your name:mor
# echo $username
mor
# read -s -p "Input your password:" pass
Input your password:
# echo $pass
123456
8、取消变量:
unset 变量名
9、带有浮点的计算:
# bc
# echo 3.5+4|bc
7.5
man test
与文件是否存在有关的判断:
-e :是否存在,不管是什么类型,只要存在条件就为真
-f :是否为普通文件
-d :是否为目录
-S :是否为socket文件
-p :是否为管道文件
-c :是否为字符设备
-b :是否为块设备
-l :是否为链接文件
与文件权限相关的判断
-r :是否可读
-w :是否可写
-x :是否可执行
-u :判断是否有suid(特殊权限|上方宝剑)
-g :判断是否有sgid(特殊权限|强制继承家族企业)
-k :判断是否有t位(特殊权限|只能自己管理自己)
-s :判断是否为空文件 -s表示非空文件 !-s表示空文件
两个文件比较判断
file1 -nt file2 :比较file1文件是否比file2文件新
file1 -ot file2 :比较file1文件是否比file2文件旧
file1 -ef file2 :比较file1和file2是否为同一个文件,是否指向同一个inode号
整数之间的判断
-eq :相等
-ne :不相等
-gt :大于
-lt :小于
-ge :大于等于
-le :小于等于
字符串之间的判断
-z :是否为空字符串,字符长度为0,为真
-n :是否为非空字符串
string1 = string2 :两个字符串是否相等
string1 != string2 :两个字符串不相等
! :结果取反
多重条件判断
逻辑判断符号:
-a 和 && (and 逻辑与)[ 条件1 -a 条件2 ] 只有两个条件都成立,才为真
-o 和 || (or 逻辑或)[ 条件1 -o 条件2 ] 只要有一个条件成立,就为真
!:逻辑非(优先级最低)
-a逻辑与比-o逻辑或优先级高
demo1:判断一个IP是否能ping通
总结:
echo $? ——>结果
0:代表正确执行
127:没有发现命令
126:有命令,但是无法执行,权限不够
1或者2:没有文件或者目录
文本处理
1.1 grep工具:行过滤
参数:
-c :统计搜索到的关键字的次数
-i :忽略大小写
-n :输出行号
-v :取反
^ :以什么开头
$ :以什么结尾
--color=auto :颜色区分关键字
-A :搜索关键字的后几行
-B :搜索关键字的前几行
-C :搜索关键字的前后几行
1.2 cut工具:列过滤
参数:
-c :以字符为单位进行分割
-d :自定义分割符,默认是tab(制表符)
-f :与-d一起使用,显示范围
# cut -d: -f 1 /etc/passwd
# cut -c2-10 /etc/passwd
# cut -c2- /etc/passwd 从第2个字符一直往后显示
# cut -c2 /etc/passwd 只显示第2个字符
1.3 sort工具:排序
参数:
-u :去除重复行
-r :将序排列,默认是升序
-o :将排序的结果输出到文件
-t :定义分割符
-k :与-t一起使用,定义范围
-n :以数字排序
# cat /etc/passwd|sort -t: -k 3 -n -r
# sort -t: -k 3 -n -r /etc/passwd
# sort -t: -k 3 -n -r /etc/passwd -o 123
# sort -u -n test.txt
# sort -n test.txt |uniq
1.4 uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。
参数:
-c或——count :在每列旁边显示该行重复出现的次数;
-d或--repeated:仅显示重复出现的行列;
-u或——unique:仅显示出一次的行列;
-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;
-s<字符位置>或--skip-chars=<字符位置> :忽略比较指定的字符;
-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符
删除重复行:
# uniq file.txt
# sort file.txt | uniq
# sort -u file.txt
# sort file.txt | uniq -c 统计各行在文件中出现的次数:
# sort file.txt | uniq -d 在文件中找出重复的行:
1.5 wc工具:统计行、单词、字符
# wc -l /etc/passwd
35 /etc/passwd
# wc -w /var/log/messages
2927 /var/log/messages
# wc -c /var/log/messages
21784 /var/log/messages
- Linux Shell 学习笔记 一 目录结构
以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin 存放普通用户使用的命令 /sbin 存放管理员可以执行的命令 /home ...
- linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- Linux Basic学习笔记01
介绍课程: 中级: 初级:系统基础 中级:系统管理.服务安全及服务管理.Shell脚本: 高级: MySQL数据库: cache & storage 集群: Cluster lb: 4laye ...
- Linux & Shell 学习笔记【1/2】
因为工作上的需要,花了些许时间去熟悉学习Linux和Shell,现在也花点事件在此记录一下以加强巩固学习的内容吧.学的不算深入,所以都是一些比较junior的内容. 在下一篇随笔会详述之前写的一个用于 ...
- Linux Shell 学习笔记
2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是 ...
- Linux Shell学习笔记:exit退出状态代码
inux提供$?特殊变量来保存最后一条命令执行结束的退出状态.执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值. 正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令 ...
- Linux Shell学习笔记(一)
Shell,见名知意,就是一个作为用户与Linux OS间接口的程序,允许用户向OS输入需要执行的命令.Shell众多,这里只介绍Bash. 0)实验的Shell版本 显示shell版本: /bin/ ...
- linux shell 学习笔记--内部命令学习
.基本命令 新手必须要掌握的初级命令 ls 基本的列出所有文件的命令.但是往往就是因为这个命令太简单,所以我们总是低估它.比如 ,用 -R 选项,这是递归选项,ls 将会以目录树的形式列出所有文件, ...
- linux shell学习笔记
一 变量 声明变量: my_var='ddd'使用变量: ${my_var}设置为只读变量: readonly my_var删除变量: unset my_var 注意只读变量不能被删除 变量类型:( ...
随机推荐
- 【每日一学】pandas_透视表函数&交叉表函数
每日一悟 [分开工作内外8小时] 前一个月,我经常把工作内的问题带到路上.地铁上.睡觉前,甚至是周末. 然而很快发现,我工作外的成就几乎没有,而工作内的进展也并不理想. 仔细想想,工作外是需要学新东西 ...
- 重识linux-守护进程,系统服务,daemons
重识linux-守护进程,系统服务,daemons 1分类 分为 单独的守护进程 和超级守护进程 2命名 服务的名称被创建之后,被挂上linux使用,通常在服务的名称之后会加上一个d,例如at和cro ...
- mybatis四(动态sql)
<1><select id="selectUserByConditions" parameterType="user" resultType= ...
- oracle查询重复的数据
在oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是oracle中的哪一个数据文件.块.行上.在重复的记录中,可能所有列的内容都相同,但rowi ...
- delphi c#语法转换
delphi c#语法转换 delphi c# s:array[1..5] of integer TIArr = array of integer; Berlin有这个新功能 TArra ...
- 【JEECG技术文档】JEECG高级查询构造器使用说明
功能介绍 高级查询构造器支持主子表联合查询,查询出更精确的数据. 要使用高级查询构造器需要完成以下步骤: 1. 在高级查询管理配置主子表信息. 2. 配置完后在JSP页面DataGrid标签上添加 ...
- day26-保护属性
如果有一个对象,当需要对其进行修改属性时,有2种方法 1.对象名.属性名 = 数据 --->直接修改 2.对象名.方法名() --->间接修改 为了更好的保护属性安全,即不能随意修改,一般 ...
- redis开启外网访问
redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf 打开redis.conf文件在NETWORK部分有说明 ######################### ...
- Java基础之用记事本编辑java代码运行,并且打成jar包后运行
使用记事本写java代码 1.在d盘新建一个记事本,名字叫做zhanzhuang.java,会询问不可用,是否继续,点击是 2.在里面编辑就如下内容,注意文件的名字要和 class 后面的名字相对应 ...
- RACSignal常见用法
RACSignal 两种用法, 1:异步操作,一般创建signal的时候写逻辑,然后通过subscribeNext拿到异步执行的结果 2:监听的属性的变化,及时给出回应,一般赋值的时候用RACObse ...