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. 关于Git的一些总结【自用】

    创建ssh keyssh-keygen -t rsa -C "邮箱" cat is_rsa.pub  获取public key ssh -T git@github.com  测试是 ...

  2. Ruby学习笔记6: 动态web app的建立(3)--多Model之间的交互

    We first built a static site which displayed a static image using only a Controller and a View. This ...

  3. Oracle12c Client安装出现"[INS-30131]"错误“请确保当前用户具有访问临时位置所需的权限”解决办法之完整版

    管理工具>计算机管理>系统工具>共享文件夹>共享 右键单击“共享”>新建共享> 如果出现右键无法出现“新建共享”选项请"控制面板>所有控制面板项&g ...

  4. js提高篇

    1定义一个方法 function aa(){alert(this)} 对于浏览器 这只是一个方法,那么this是什么的,this理所当然是document对象了..也就是说 打页面定义的方法 都是do ...

  5. MySQL PID错误,Mysql server PID file could not be found!

    https://blog.csdn.net/u010098331/article/details/50752667/

  6. spring boot 整合redis --sea 方式1

    application.properties # REDIS (RedisProperties) # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服 ...

  7. Linux 配置开机自启 和 修改环境变量

    [ 操作系统 Centos7 ] 一,开机自动启动的配置 1,赋予 /etc/rc.local 的执行权限 => chmod +x /etc/rc.local 2,在 /etc/rc.local ...

  8. delphi 调用Webservice 引入wsdl 报错 document empty

    delphi 调用Webservice 引入wsdl 报错 document empty 直接引入wsdl 地址报错 document empty 解决办法:在浏览器里保存为xml文件,然后在开发环境 ...

  9. 腾讯云Linux VPS新硬盘分区与挂载教程(面板重装不丢失数据)

    以腾讯云Centos系统服务器为例,小记的是数据盘不在本地,大小为20G,以下的教程来自小夕博客的一篇相关添加教程的修改,适合腾讯云Linux Centos系统.说明:参数也许不对,我没有截图了,但所 ...

  10. 修改页面中显示出需要修改的数据(包括select选择框复显示)

    页面中需要用到某个对象时,在底层代码中赋值,然后页面用java代码进行获取调用 如下截图: select复显示:根据后台方法赋值选择框 ,并设置初始值 按钮及选择框的禁用(五种方法): 方法一: $( ...