shell

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

shell脚本

以.sh结尾

shell语法+linux命令

注释:

单行注释 :

#

多行注释 :

:<

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,4ahello2"

sed.txt

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

sed -i "1ihello3"

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 "请输入性别:"sexif [ "$sex" == "nan"]

then

echo"输入的是男"fi

case语句

#!/bin/bash

case"$1" in

"start")

echo"启动";;"stop")

echo"停止";;"restart")

echo"重启";;*)

echo"。。。。";;

esac

for循环

遍历文件夹

#!/bin/bash

mkdir ../bakfor 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

内容来源于网络如有侵权请私信删除

linux shell指令 amp,shell入门基础amp;常见命令及用法相关推荐

  1. Linux入门基础及常见命令

    一.虚拟机的管理 概念: 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 优点: 演示环境,便于做各种例子 保证主机的快速运 ...

  2. linux常用指令和shell脚本

    文章目录 一.虚拟机的安装 二.linux常用基础命令 2.1文件查看相关 2.1.1pwd 列出当前目录的路径 2.1.2 ls 列出当前目录下的所有文件 2.2创建.重命名文件\文件夹 2.3 链 ...

  3. 后端程序员必备的 Linux 基础知识+常见命令(近万字总结)

    大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 今天这篇文章中简单介绍一下一个 Java 程序员必知的 Linux 的一些概念以及常见命令. 如果文章有任何需要 ...

  4. Linux Shell基础 Bash常见命令 echo命令

    概述 shell中常见的命令echo. 输出命令:echo echo命令的输出内容如果没有特殊含义,则将原内容输出到屏幕:如果输出内容有特殊含义,则输出打印其含义. 命令格式如下: [root@loc ...

  5. PostgreSQL在Linux和Windows安装和入门基础教程

    StackOverflow 2022 开发者报告:总体而言,MySQL 依然是最受欢迎的的数据库.但在专业开发者群体中,PostgreSQL(46.48%)已经超越 MySQL(45.68%)夺得了第 ...

  6. linux ctrl+r撤销_Linux入门基础,掌握这些命令,不再做小白

    目录 基本操作 命令行操作 用户及文件权限管理 Linux目录结构及文件基本操作 2 目录路径 新建文件 复制文件 删除文件 移动文件与文件重命名 查看文件 查看文件类型 编辑文件 基本操作 命令行操 ...

  7. native react 常用指令_React Native入门基础篇(一)

    学习一次,随处书写.(以下文字来自各大网上资料整理而来,侵删!) 概述 使用React为Android和iOS创建本机应用 React Native将本机开发的最佳部分与React(用于构建用户界面的 ...

  8. linux cadence教程 pdf,cadence入门基础篇

    班主任的cadence软件 Username:eda Password:123456z l 用Virtuoso Schematic Editor工具设计原理图 启动Cadence 设计软件 在linu ...

  9. linux随堂笔记_day01_linux基础以及常见命令

    文章目录 1 目录(文件夹)常用命令 1.1创建文件夹的命令-mkdir 1.2删除文件夹的命令(谨慎使用,谨慎使用,谨慎使用)-rm 1.3修改文件夹的命令-mv 1.4查询文件夹的命令-ls_ll ...

最新文章

  1. 阿里巴巴一位 70 后程序员的 26 个职场感悟!
  2. 选择ButterKnife,告别findViewById
  3. 是AI就躲个飞机-纯Python实现人工智能
  4. 【Linux系统编程】可重入函数和不可重入函数
  5. SAP Spartacus页面底部的Component请求
  6. jpannel设置位置xy_实用的摄影技巧!10种常见摄影场景的单反相机设置技巧!
  7. c语言用指针变量输入数组的长度,C语言之数组的基础练习题(指针变量做函数参数)...
  8. 机器学习—XGBoost常见问题解析
  9. Linux四剑客详解——awk
  10. 计算机打印的接口类型,按打印机与计算机的接口类型:可分为并行、串行和USB接口...
  11. java gc日志详解_JVM实战:GC日志解析
  12. 注塑机摆放间距多少合适_注塑模具加工须知(1):必须注意注塑机注塑参数“拉杆间距”...
  13. 安防系统的定义及相关组成部分详解
  14. Excel如何批量在空白单元格录入相同内容
  15. VIDEO 黑边去除(是点击VIDEO出现的黑边)
  16. C语言课程设计手机通讯录程序设计
  17. 疫情期北京融资信息分析---疫情对北京社会经济影响分析---科技战疫·大数据公益挑战赛---2020北京数据开放创新应用大赛
  18. Git分支管理与标签管理(the last)
  19. 【中学提纲】必修一——生命活动与细胞
  20. 修改网人系统版权信息

热门文章

  1. git学习3--关联不同的网址的远程分支
  2. android 加载更多动画效果,Android实践之带加载效果的下拉刷新上拉加载更多
  3. Jsp+Ssh+Mysql实现简单的校园实习兼职管理
  4. Codeforces 301A. Yaroslav
  5. VMware 设置网络
  6. 存储过程/函数权限的问题解决(The user specified as a definer ('root'@'%') does not exist)...
  7. 【转】s3c2440 按键驱动 — 字符设备
  8. c语言win api函数,Win2K下的Api函数的拦截
  9. 微课|Python程序设计开发宝典(5.1.2节):修饰器
  10. 微课系列(8):Python中lambda表达式的变量作用域