关于历史命令

Shell相关

!! 是上一次执行的命令

!字符串  指执行最近一次以这个字符串开头的命令

!$ 取出上一条命令最后一个单词或命令

*匹配0个或多个字符         ?匹配一个字符

Ctrl+z  暂停一个进程          fg(foreground)恢复这个进程到前台  bg(background)恢复这个进程到后台

如果暂停多个进程,则可以使用jobs命令,查看进程编号 ,如1 或2。然后fg 和bg的时候后边加上这个编号,指定返回哪个进程。 如  fg 2

Ctrl+c  结束掉一个进程

env 显示所有环境变量

set显示当前shell所有变量(包括自定义、环境变量

设置变量时需要注意:

a=b   b作为变量内容,等号两边不能有空格   ,变量内容带有特殊字符时,需要加上单引号

如:  a=’str      heheh’

单引号会使里边的特殊符号失去作用:

比如:  a=’$abc’      那么a就是$abc

a=”$abc”  那么a就是$abc变量的值

变量里本身含有单引号,这就需要用双引号括起来了,变量里若含有双引号可以使用\” 转义

bash进入子shell,pstree可以查看

父shell的变量,让子shell可以使用,需要命令 export 一下

释放一个变量  unset

管道符 |

如: 查看一个文件有多少行    cat  hi.txt | wc -l

-----------------------------------------------------------------------

变量定义

#x='fff'

#echo $x

#x="$x"hehe

#export x   (使之成为环境变量)

===============

追加一个目录如/root 到环境变量PATH

# PATH=$PATH:/root

# echo $PATH

===============

#bash  (子shell)

#pstree

set (查看所有变量)

env (查看环境变量)

----------------------

查看当前语系

locale

echo $LANG

echo $LC_ALL

------------------------

位置参数变量

$n 第几个参数

$* 全部变量 整体对待

$@ 全部变量 单独对待

$# 参数个数

---------------------

shell脚本开头一行

#!/bin/bash

---------------------

预定义变量

$?   (返回上一条命令执行正确否 0正确)

---------------------

read -p -s 用户输入的字符赋给变量

--------------------

declare -i -a -x(export) -p    变量声明为一个类型   -i整型 -a数组 -x环境变量 -p变量属性

---------------------

配置文件

配置文件加载顺序图

-----------------------------

欢迎信息  /etc/motd

--------------------------

正则&&通配符

----------------------------------

字符操作命令

cut   (比较适合规律的列文档    -f 列    -d分界符

-----------------------------------

printf

awk

# awk '$3==0 && $6=="LISTEN" || NR==1 {printf "%-20s %-20s %s\n",$4,$5,$6}'  netstat.txt

$0 当前记录(这个变量中存放着整个行的内容)

$1~$n 当前记录的第n个字段,字段间由FS分隔

查看文件系统/dev/root下的使用率:

df -h | grep "/dev/root" | awk '{print $5}' | cut -d '%' -f 1

-------------------------------------

sed

点击酷壳网这个也不错

---------------------------------------

sort

wc

--------------------------------------

插播个知识点:软硬连接

软连接类似于快捷方式,不同的i节点,删原文件,另一个打不开;硬链接就是一个文件,相同i节点,他俩名字不同而已,删除一个,另一个仍然访问。

---------------------------------------

标准输入输出的知识点:

标准输入:

  键盘  /dev/stdin   文件描述符0

标准输出:

  显示器  /dev/stdout   文件描述符1(标准正确输出)

标准错误输出:

  显示器  /dev/stderr   文件描述符2

比如:

标准正确输出的重定向: #echo 'aaa' 1> test1.log

有可能我的命令出错了,此时可以把这个报错信息标准错误输出。比如echoz命令写错了,(>>是追加文件,而不是覆盖)

标准错误输出的重定向: #echoz 'bbb' 2>> test2.log

正确和错误的输出同时重定向到一个地方,这种场景比较多见:这样格式  2>&1放在后头

#echoz  'ccc' >> test3.log 2>&1

或者这样格式:  #date &>> test3.log

正确输出放到一个地方,错误输出放到一个地方(分开保存,/dev/null是空设备:

#echo 'ddd'  >> test4.log  2>>/dev/null

======================================

shell判断符号,推荐[[  ]],语法要求:中括号内容左右两边留有空格

test -e /data/www/index.php

[ -e /data/www/index.php ]

[[  -e /data/www/index.php ]]

------------------------------

分支判断语法

注意:if要以if收尾。类似do以done收尾。case以esac收尾;

if后要有then,如果then不换行,那么then前边要有个分号;else后则不需要then;

elif的关键词;

#!/bin/bash

a='bb' #赋值操作等号两边不能有空格

if test -e "./test.sh"
then echo 'exists' #if 后有then
else echo 'no exists' # else后没有then
fi if [[ -n ${a} ]]
then echo ${a}
fi b=
if [ ${b} -eq ]
then echo '$b='"$b" #输出$b= 这里注意单双引号的区别
fi echo + #输出 + echo $((+)) #输出3

shell的几种常用的循环方式:

#!/bin/bash

for i in
do
echo $i
done echo for j in {..}
do
echo $j
done for file in "./*"
do
echo $file
done for file in $(ls)
do
echo $file
done

比如现在文件夹下有n个文件,只有名字是a.txt的不想删除,其他都要删。可以利用xargs

比如: ls | grep -v a.txt | xargs rm -rf

${var:-word}这个意思是如果var这个变量存在且不为空,就返回var,否则返回word

点击慕课网这个入门也很好

shell编程的笔记的更多相关文章

  1. Linux Shell编程学习笔记——目录(附笔记资源下载)

    LinuxShell编程学习笔记目录附笔记资源下载 目录(?)[-] 写在前面 第一部分 Shell基础编程 第二部分 Linux Shell高级编程技巧 资源下载 写在前面 最近花了些时间学习She ...

  2. shell编程学习笔记(十):Shell中的for循环

    shell编程中可以实现for循环遍历 先来写一个最简单的吧,循环输出从1到10,脚本内容为: #! /bin/sh for i in {1..10} do echo $i done 上面的代码从1到 ...

  3. shell编程学习笔记(一):编写我的第一段代码

    目前在学习Shell编程,我会把我的学习笔记记录在这里.大神可以直接略过~ 嗯,第一段代码,肯定是要输出Hello World了~ 以下蓝色字体的内容为linux命令,红色字体的内容为输出的内容: # ...

  4. shell编程学习笔记【原创】

    本文为本人学习笔记,如有转载请注明出处,谢谢 一.Bourne Shell 有如下四种变量: 用户自定义变量 位置变量,即命令行参数 预定义变量 环境变量 二.位置变量 $ 与键入的命令行一样,包含脚 ...

  5. shell编程学习笔记(八):Shell中的if条件判断

    编程语言中都有条件判断,shell编程也不例外,下面我们来看一下shell中应该怎么使用if条件判断 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts ...

  6. shell编程学习笔记(六):cat命令的使用

    这一篇不是讲shell编程的,专门讲cat命令.shell编程书用到了这个cat命令,顺便说一下cat命令. cat命令有多种用法,我一一来列举(以下蓝色字体部分为Linux命令,红色字体的内容为输出 ...

  7. shell编程学习笔记(五):Shell中脚本的参数

    在执行Shell脚本的时候,可以在执行时带上参数,相当于传递参数给脚本,下面我们看一下怎么使用这个参数 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/script ...

  8. shell编程学习笔记之特殊变量($0、$1、$2、 $?、 $# 、$@、 $*)

    特殊变量($0.$1.$2. $?. $# .$@. $*) shell编程中有一些特殊的变量可以使用.这些变量在脚本中可以作为全局变量来使用. 名称 说明 $0 脚本名称 $1-9 脚本执行时的参数 ...

  9. shell编程学习笔记之sed编辑器

    在shell编程中,大多数处理的都是文本文件.对文本文件进行处理除了使用交互式文本编辑器(vi[m],gedit......)也可以使用另外一类:流编辑器. 流编辑器:使用预定义的编辑规则来对文本进行 ...

  10. GNU Bash Shell 编程图解笔记

    bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写.1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括 ...

随机推荐

  1. if语句格式及流程

    if语句是条件判断功能 1. if 条件: if语句块 执行流程:判断条件是否为真. 如果真. 执行if语句块 2. if 条件: if语句块 else: else语句块 执行流程:判断条件是否为真. ...

  2. 【代码笔记】iOS-屏幕根据键盘自动的变化高度

    一,效果图. 二,代码. ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewContro ...

  3. framework7中a标签没反应

    试试在a标签上加这个样式: class="external"

  4. import、export使用介绍

    import.export使用介绍 ES6提供的import.export方法, 使组件化开发模式迈向新高度.本文来介绍import.export的语法及使用方法. 根据 export 的导出方式,可 ...

  5. css实现3D立方体旋转特效

    先来看运行后出来的效果 它是在不停运行的一个立方体 先来看html部分的代码 <div class="rect-wrap"> <!--舞台元素,设置perspec ...

  6. cordova app强制横屏

    非常简单,只需要在config.xml里加上这行: <preference name="Orientation" value="landscape" /& ...

  7. Android--activity切换时的动画

    1.首先先创建四个动画文件 ①:left_in.xml <?xml version="1.0" encoding="utf-8"?> <set ...

  8. python 元组编码和解码问题

    先看一个例子: (u'agentEnum', True, '200', {u'msg': u'\u6210\u529f', u'code': 1}) 在2.7.15版本中,如果有下面代码: def f ...

  9. 使用 Azure Active Directory 管理 Azure 中的 HPC Pack 群集

    Microsoft HPC Pack 2016 支持在 Azure 中部署 HPC Pack 群集的管理员将其与 Azure Active Directory (Azure AD) 集成. 请按照本文 ...

  10. 《SQL Server 2008从入门到精通》--20180716

    1.锁 当多个用户同时对同一个数据进行修改时会产生并发问题,使用事务就可以解决这个问题.但是为了防止其他用户修改另一个还没完成的事务中的数据,就需要在事务中用到锁. SQL Server 2008提供 ...