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 注意只读变量不能被删除 变量类型:( ...
随机推荐
- uva-387-暴力枚举
题意: 给你一些小方块,问是不是能组成一个4X4的大方块,所有方块全部要使用,裸枚举 #include <iostream> #include <stdio.h> #inclu ...
- 如何使用命令行备份SAP HANA数据库
SAP HANA是一个在in-memory内存中的数据平台,部署为内部部署应用. 这是一个革命性的平台,它最适合进行实时分析,并开发和部署实时应用程序. 请点击这里了解更多有关SAP HANA. 通过 ...
- aptana studio 使用技巧整理
aptana studio 使用技巧整理 https://192.168.1.16/web/punica/adaptana studio 使用技巧整理http://uedfans.cn/ 推荐一个网站 ...
- tomcat中项目后有括号
引入他人项目时,由于报错,copy本地workspace下其他项目的 .settings和.project到该项目路径下 结果Eclipse 的 Server 中出现了 aaa(bbb)的情况 并且 ...
- javascript,移动划过超链接鼠标变手型
用css控制鼠标样式的语法如下:<span style="cursor:*">文本或其它页面元素</span>把 * 换成如下15个效果的一种: 下面是对这 ...
- ADOQuery.Parameters: Property Parameters does not exist
Exception class EReadError with message 'Property Parameters does not exist'. Exception class EReadE ...
- HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底层实现
HashMap:底层是一个数组+链表实现 LinkedHashMap:底层是Hash表和链表的实现 ConcurrentHashMap:基于双数组和链表的Map接口的同步实现 ArrayList:底层 ...
- Oracle保留两位小数的函数
1.最终保存成字符串类型 使用to_char()函数 // 其9代表:如果存在数字则显示数字,不存在则显示空格 // 其0代表:如果存在数字则显示数字,不存在则显示0,即占位符 // 其FM代表:删除 ...
- Redis使用认证密码登录
Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...
- Zabbix使用Omsa来监控Dell服务器的硬件状态
OMSA(Open Manage Server Administrator)是Dell主机的硬件检测和维护软件 OpenManage系统管理方案是戴尔公司基于自主研发力量开发的IT系统管理解决方案,通 ...