当前位置: 首页 > news >正文

linux系统shell基础知识入门

什么是shell

shell就是我们常说的命令行程序,它是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入要执行的命令。在Linux中安装多个shell是可行的,一般系统有默认的shell,linux中默认的为Bash

查看系统所有shell及当前起作用shell

[liangc@ip-10-30-20-114 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

查看当前shell,通过shell变量查看
[liangc@ip-10-30-20-114 ~]$ echo $SHELL
/bin/bash

如何编写shell

使用文本编辑工具,将命令组合到一个文件中即可,在linux中,扩展名无特别意义,它只是为了更清楚标识这个文件而已,所以你的shell脚本文件可以无扩展名。但是一般都会加上.sh作标识
vi first
敲入如下命令

#!/bin/sh
echo "hello world"
exit 0

以上是一个简单的shell脚本
第一行#!是一种特殊注释,后面的/bin/sh表示这个脚本将使用此shell来解析执行,需使用绝对路径
exit的使用确保脚本返回一个有意义的状态码,如果其它脚本需要调用这个脚本程序,那么返回一个有意义的状态码是很有必要的。但建议时,即使这个程序不会被其它程序调用,还是返回一个状态码吧。一般用0表示成功。

运行shell

两种运行方式
1 调用shell,把脚本名当成一个参数

/bin/sh first

2 使用chmod赋予可执行权限

chmd +x first
./first

shell语法

变量,在shell里,变量可以不先声明,只是通过使用它们(比如赋初值时)来创建它们。所有变量被看作字符串并以字符串存储,即使值为数字时也如此。linux区分大小写,所以Hello和hello是不同的哦。
在变量面前加上“$"可访问该变量。

hello="hello world"
echo $hello
echo "$hello"
echo '$hello'
echo \$hello
输出
hello world
$hello
$hello

注意,如果字符串里面包含空格,必须用引号把它们括起来。此外,等号两边不能有空格
使用单引号和反斜线不会进行变量的替换

环境变量

环境变量说明
$HOME当前用户家目录
$PATH以冒号分隔的用来搜索命令的目录列表
$0shell脚本的名字
$#传递级脚本的参数个数
$$shell脚本的进程号,脚本通常用它来生成一个唯一的临时文件,如/tmp/tmpfile_$$

参数变量

参数变量说明
$1 ,$2....脚本程序的参数
$*在一个变量中列出所有参数,各参数之间用环境变量IFS中第一个字符分隔开
$@是$*的变体,它不使用IFS变量,即使IFS为空,参数也不会挤在一起

转载于:https://www.cnblogs.com/smartrui/p/10231124.html

相关文章:

  • 雷林鹏分享:Ruby 方法
  • 面向对象学生类的定义和学生类的使用
  • 创建AOP代理(中篇)
  • 001:特殊密码锁
  • Python定时任务 Celery+Redis
  • Matplotlib添加图例操作
  • 2019-1-10 日记
  • 【奔走相告】- Github送福利:用户可免费创建私有代码库啦
  • go语言之进阶篇方法表达式
  • Java 网络编程 之 TCP协议
  • java面试题(四)
  • Java将string内容写入到TXT文件
  • 爬虫之图片懒加载技术、selenium和PhantomJS
  • 词云制作没那么难,Python 10 行代码就实现了!
  • D-赌神(判断2^k = n时 k的值)
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • in typeof instanceof ===这些运算符有什么作用
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript DOM 10 - 滚动
  • JavaScript类型识别
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • miaov-React 最佳入门
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Vue 重置组件到初始状态
  • Vue.js 移动端适配之 vw 解决方案
  • 阿里云购买磁盘后挂载
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 给Prometheus造假数据的方法
  • 近期前端发展计划
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 力扣(LeetCode)965
  • 聊聊redis的数据结构的应用
  • 如何选择开源的机器学习框架?
  • 新版博客前端前瞻
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 《天龙八部3D》Unity技术方案揭秘
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 如何用纯 CSS 创作一个货车 loader
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​2021半年盘点,不想你错过的重磅新书
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (a /b)*c的值
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (全注解开发)学习Spring-MVC的第三天
  • (十)T检验-第一部分
  • (一)Neo4j下载安装以及初次使用
  • .Net mvc总结
  • .net和php怎么连接,php和apache之间如何连接