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 注意只读变量不能被删除 变量类型:( ...
随机推荐
- 浏览器Hack演示
<!doctype html> <html> <head> <title></title> <meta http-equiv=&quo ...
- OpenGL中摄像机矩阵的计算原理
熟悉OpenGL|ES的朋友,可能会经常设置摄像机的view矩阵,iOS中相对较好,已经封装了方向,只需要设置摄像机位置,目标点位置以及UP向量即可.下面先介绍下摄像机view矩阵的计算原理.此处假设 ...
- 机器学习进阶-直方图与傅里叶变换-图像直方图 1.cv2.calc(生成图像的像素频数分布(直方图))
1. cv2.calc([img], [0], mask, [256], [0, 256]) # 用于生成图像的频数直方图 参数说明: [img]表示输入的图片, [0]表示第几个通道, mask表 ...
- 根据svm将视频帧转换为img
# -*- coding: utf-8 -*- """ Created on Mon Oct 1 09:32:37 2018 @author: Manuel " ...
- centos7安装Lnmp(Linux+Nginx+MySql+Php+phpMyAdmin+Apache)
centos7安装Lnmp(Linux+Nginx+MySql+Php)及Apache Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx是一个高性能的HTTP和反向代理服务器,Ng ...
- jquery 设计的思路-----初级
jquery.js 很经典,其中有一些设计思路简直非常经典 1.安全的创建一个构造函数并进行调用: <script> // 这是一种安全的构造函数的创建方法,在调用构造函数G的时候,不论使 ...
- css:清楚浮动
这个清楚浮动的方法最常用,给浮动字元素的父盒子,也就是不浮动元素,添加一个lhearfix的类,其类的css样式为: .clearfix:after{ /*必须要写这三句话*/ content:''; ...
- join和子查询的一点点思考
代码和表设计过程中,为了考虑数据库的范式,通常导致需要join多张表或子查询, 如报表场景, 可此种方式在大数据量的 情况下,效率较低. 如果能做适量的数据冗余,便可以减少join或子查询,效率较高 ...
- 使用 Python 把多个 MP4 合成一个视频(转)
这两天群里有个小伙伴有一个需求, 就是把很多个视频文件 合并成一个. 期间也找了各种软件, 如格式工厂, 但是只能一次合成50个文件, 小伙伴有几千个文件需要合成, 太繁琐; 又比如会声会影, 这个剪 ...
- php中的错误和异常
总结: php错误不会抛出异常,因此不能被catch,但会根据配置写入日志文件或者输出到浏览器,所以可以通过日志文件查看错误 php异常都必须自己抛出,并通过catch捕捉.SQL语句执行的错误好像可 ...