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 学习笔记01的更多相关文章

  1. Linux Shell 学习笔记 一 目录结构

    以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin       存放普通用户使用的命令 /sbin     存放管理员可以执行的命令 /home   ...

  2. linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  3. Linux Basic学习笔记01

    介绍课程: 中级: 初级:系统基础 中级:系统管理.服务安全及服务管理.Shell脚本: 高级: MySQL数据库: cache & storage 集群: Cluster lb: 4laye ...

  4. Linux & Shell 学习笔记【1/2】

    因为工作上的需要,花了些许时间去熟悉学习Linux和Shell,现在也花点事件在此记录一下以加强巩固学习的内容吧.学的不算深入,所以都是一些比较junior的内容. 在下一篇随笔会详述之前写的一个用于 ...

  5. Linux Shell 学习笔记

    2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是 ...

  6. Linux Shell学习笔记:exit退出状态代码

    inux提供$?特殊变量来保存最后一条命令执行结束的退出状态.执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值. 正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令 ...

  7. Linux Shell学习笔记(一)

    Shell,见名知意,就是一个作为用户与Linux OS间接口的程序,允许用户向OS输入需要执行的命令.Shell众多,这里只介绍Bash. 0)实验的Shell版本 显示shell版本: /bin/ ...

  8. linux shell 学习笔记--内部命令学习

    .基本命令 新手必须要掌握的初级命令 ls 基本的列出所有文件的命令.但是往往就是因为这个命令太简单,所以我们总是低估它.比如 ,用 -R 选项,这是递归选项,ls 将会以目录树的形式列出所有文件, ...

  9. linux shell学习笔记

    一  变量 声明变量: my_var='ddd'使用变量: ${my_var}设置为只读变量: readonly my_var删除变量: unset my_var 注意只读变量不能被删除 变量类型:( ...

随机推荐

  1. 48.纯 CSS 创作一盘传统蚊香

    原文地址:https://segmentfault.com/a/1190000015246974 感想: 都是半圆边框合成的. HTML code: <div class="coil& ...

  2. mybatis-spring 集成

    http://www.mybatis.org/spring/zh/index.html http://www.mybatis.org/mybatis-3/zh/java-api.html 编程API: ...

  3. Flex验证器 validate stringvalidate

    1 validate <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns: ...

  4. javascript,移动划过超链接鼠标变手型

    用css控制鼠标样式的语法如下:<span style="cursor:*">文本或其它页面元素</span>把 * 换成如下15个效果的一种: 下面是对这 ...

  5. leetcode1007

    public class Solution { public int MinDominoRotations(int[] A, int[] B) { var na = A.Length; var nb ...

  6. J2SE 8的流库 --- 转换流, 得到的还是流

    流的转换, 按照条件过滤/映射/摊平/截取/丢弃/连接/去重/排序. 辅助方法 public static int myCompare(String x, String y) { if(x.lengt ...

  7. Spring和SpringMVC的常用注解

    Spring的部分: 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:component-scan base-package=" ...

  8. VSFTP 配置虚拟用户

    虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源.所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性. 在VSF ...

  9. The Google File System 中文版

    摘要 我们设计并实现了Google文件系统,一个面向分布式数据密集型应用的.可伸缩的分布式文件系统.虽然运行在廉价的日用硬件设备上,但是它依然了提供容错功能,为大量客户机提供了很高的总体性能. 虽然与 ...

  10. 尚硅谷springboot学习3-helloworld程序

    1.环境准备 –jdk1.8:Spring Boot 推荐jdk1.7及以上:java version "1.8.0_112" –maven3.x:maven 3.3以上版本:Ap ...