shell

shell是一个命令解释器,实际是一个程序,/bin/bash,linux中所有的命令都由它来解释,有自己的语法

shell脚本

以.sh结尾

shell语法+linux命令

注释:

单行注释 :
#
        多行注释 :
:<<c   c

shell执行方式

bash /path/to/script-name  或   /bin/bash /path/to/script-name    (强烈推荐使用)
        /path/to/script-name   或  ./script-name    (当前路径下执行脚本)
        source script-name  或  . script-name    (注意“.“点号后面有空格)

前两种执行时,都会开启新的进程执行脚本
        source不会开启新的进程

使用source时,可以与当前终端共享进程,共享变量(重点)

变量

1、name=itcast
        2、name='itcast
$age'  不会解析里面的遍历
        3、name=”itcast
$age“ 解析变量后,再拼接成新的字符串

命令变量

1、name=`ls`
        2、name=$(ls)

括号里必须是linux命令,把命令执行的结果记录给变量

全局变量

方法一:

变量名=值

export 变量

方法二:(最常用)

export 变量名=值

如果是在终端中定义全局变量,作用范围是当前终端及子进程

如果想要自己定义的全局变量在跟系统的全局变量一样在所有环境都有效,需要在~/.bashrc或/etc/profile文件中定义:

修改~/.bashrc后,直接打开新的终端,定义的全局变量就生效了,此方式只对当前用户有效
        修改/etc/profile时,需要重启操作系统,定义的全局变量才生效,此方式对所有用户有效
        上面两种方式在修改文件后,如果想让全局变量在当前终端生效,需要执行命令source ~/.bashrc或source /etc/profile

查看变量

标准使用方式:"${变量名}"

内置

$0  获取当前执行的shell脚本文件名
        $$  获取执行shell脚本的进程号
        $n  获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9就要用大括号括起来${10}
        $#  获取当前shell命令行中参数的总个数
        $?  获取执行上一个指令的返回值(0为成功,非0为失败)

$?:上一条命令是执行一个文件,返回的结果是文件中的最后一条命令

默认值

1、

变量a如果有内容,那么就输出a的变量值

​ 变量a如果没有内容,那么就输出默认的内容

​ 格式:

     ${变量名:-默认值}

2、

无论变量a是否有内容,都输出默认值

​ 格式:

    ${变量名+默认值}

测试语句

等号左右必须有空格,中括号左右必须有空格

test a = 1

[ a = 1 ]

逻辑表达式

&&符号
        命令1
&& 命令2
        如果命令1执行成功,那么执行命令2
        如果命令1执行失败,那么不执行命令2

||符号
        命令1 || 命令2
        1 如果命令1执行成功,那么不执行命令2
        2 如果命令1执行失败,那么执行命令2

文件表达式

判断是否是可执行文件

[ -f abc ] && [ -x abc
]

计算表达式

a=$((a+1))
        let a=a+1

重定向

命令>文件

命令返回的结果又正确和错误两种,1代表正确,2代表错误

bash chongdingxiang.sh
>/dev/null 2>&1 &

把正确的和错误的结果都输出到黑洞文件,而且命令在后台执行

linux四剑客

grep

grep -nr 关键字 .

find

find . -name
"*sh"

sed

  行编辑工具

-i 真正的修改

s:替换
                a:追加
                i:插入
                d:删除

sed -i "s#sed#SED#g"
sed.txt

每一行找到sed,把所有的替换为SED

sed -i
"2s#SED#sed#2" sed.txt

第二行的第二个SED替换为sed

sed -i "1,4a\hello2"
sed.txt

在1到4行的每一行后追加一行内容

sed -i "1i\hello3"
sed.txt

在第1行前插入一行

sed -i "2d" sed.txt

删除第2行

awk

分析工具,按行处理

awk
'BEGIN{FS=":";OFS="--"} {print $2,$NF}' awk2.txt

默认按照空格或tab键拆分数据,通过OFS指定输出时的分隔符

流程控制

  

  if语句

if [ 条件
]
        then
             指令1
        elif [ 条件2
]
        then
           
指令2
        else
           
指令3
        fi

#!/bin/bash

read -p "请输入性别:" sex
if [ "$sex" == "nan" ]
then
echo "输入的是男"
fi

  case语句

#!/bin/bash

case "$1" in
"start")
echo "启动"
;;
"stop")
echo "停止"
;;
"restart")
echo "重启"
;;
*)
echo "。。。。"
;;
esac

  for循环

遍历文件夹

#!/bin/bash

mkdir ../bak
for file in $(ls)
do
# echo "file: $file"
cp "$file" ../bak/"${file}-bak"
done

   seq命令

#!/bin/bash

for num in $(seq 5)
do
echo "num: $num"
done

   while循环

#!/bin/bash

count=1
while [ $count -lt 5 ]
do
echo "count: $count"
let count=count+1
done

   until循环

#!/bin/bash

count=1
until [ $count -ge 5 ]
do
echo "count: $count"
let count=count+1
done

  函数

#!/bin/bash

echo "jiaoben : $1,$2,$3"
dayin(){
if [ $# = 3 ]
then echo "hanshu : $1,$2,$3"
else
echo "需要3个参数"
fi
} #dayin e f g
dayin $1 $2 $3

    使用source执行脚本,脚本中定义的变量和函数都能在当前终端调用

让root用户能够使用python虚拟环境

export
WORKON_HOME=/home/python/.virtualenvs/
         source /usr/local/bin/virtualenvwrapper.sh

shell入门基础&常见命令及用法的更多相关文章

  1. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  2. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

  3. [Linux基础]Linux基础知识入门及常见命令.

    前言:最近刚安装了Linux系统, 所以学了一些最基本的操作, 在这里把自己总结的笔记记录在这里. 1,V8:192.168.40.10V1:192.168.40.11Linux ip:192.168 ...

  4. shell 入门及常用命令

    1.shell 是什么 shell是指一种程序, 它是和linux沟通的桥梁, 这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务, Ken Thompson 的 sh 是第一种 Un ...

  5. shell入门基础必备

    作者:KornLee 2005-02-03 15:32:57 来自:Linux先生    1.建立和运行shell程序   什么是shell程序呢? 简单的说shell程序就是一个包含若干行 shel ...

  6. shell 入门基础

    一. Shell变量 1. 变量可分为两类: 环境变量(全局变量) 和 局部变量 . 环境变量 : 所有的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器.shell脚本和各类应用 . 环境 ...

  7. linux下shell脚本中sed命令的用法

    先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> te ...

  8. Linux shell入门基础(八)

    八.shell脚本sed&awk 01.sed的使用 流编辑器-Steam Editor #ed /etc/passwd 1,10p …… 1s/root/byf/p(替换root为byf) ...

  9. Linux shell入门基础(二)

    二.shell对文本的操作 01.查看文本的命令 #cat /etc/passwd(并非对文本文件操作) #tail -5 /etc/passwd(查看末尾5行) #tail -f /var/log/ ...

随机推荐

  1. javascript fundamental concept

    http://hzjavaeyer.group.iteye.com/group/wiki?category_id=283 上面这个url非常适合javascript初学者阅读,感谢原作者的分享 什么是 ...

  2. jquery mobile开发中常见的问题(转载)

    1页面缩放显示问题 问题描述: 页面似乎被缩小了,屏幕太宽了. 处理方法: 在head标签内加入: <meta name="viewport" content="w ...

  3. Linux->Jdk1.8安装

    一.下载jdk 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 二.解 ...

  4. 【转】PBOC3.0和PBOC2.0标准规范异同分析

    2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...

  5. Mysql学习---全国省市区以及邮编数据库

    更多下载

  6. 个人Hadoop编程代码记录

    **WordCount package cn.cpl.recom; import java.io.IOException; import java.util.StringTokenizer; impo ...

  7. jmeter测试mysql性能

    1.下载jdbc.将jdbc解压,将mysql-connector-java-version-ga-bin.jar这个文件copy到jmeter/lib下 2.打开jmeter,设置jdbc请求. 1 ...

  8. windows下libevent的编译及使用

    之前简单分析了libevent的源码,过了一段时间要用的时候发现完全忘记了..从头记录一下流程 1.编译 可以从github下载libevent的压缩包,解压后 修改以下三个文件,添加宏定义: 在以下 ...

  9. HDU 1281 棋盘游戏 【二分图最大匹配】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1281 题意概括: 有N*M大的棋盘,要在里面放尽量多的“车”,求最多能放的车的个数,和为了放最多的车有多 ...

  10. Linux学习总结(三)之 putty,xshell远程连接及密钥认证篇

     一:putty 下载 1:认准两个地方 a. Download putty b. chiark greenend 2:下载32位的zip包,这是一个工具包合集,不单是一个终端工具 二:putty设置 ...