shell学习之shell基础知识了解
一、了解bash shell
/etc/bash是Linux系统预设的shell.bash是GNU计划中重要的工具软件之一,目前也是Linux distributions的标准
shell。
Shell:(壳):交互式环境中我们所用到的一个界面,很多时候也被称作是编译器
shell可分为两大类(基于linux的系统):
Text base:基于文字的
sh csh ksh bash tcsh zsh
Graphic base:基于图形界面的
KDE、GNOME、Xface
bash工作模式:
互动模式(interactive mode),需要有输入设备传递shell
shell scripts模式(non-interactive mode)把执行命令写入到文件中,交由bash去读取和执行
1、查看当前系统上所支持的shell类型
[root@lovelace ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/tcsh /bin/csh /bin/ksh
2、检查shell的版本信息
[root@lovelace ~]# echo $BASH_VERSION 3.2.25(1)-release
二、bash shell的功能
bash shell具备的功能:
1、兼容于bourne shell(sh)
2、支持许多选项及变量,可自定shell的使用环境。
3、支持历史命令功能
4、具有命令修订的能力,可重新取用或修改之前执行过的命令
5、具有工作控制的能力,可控制前台及后台的程序
6、具有程序设计的能力,支持变量,真假值判断,控制流程,函数,输入出控制,可让你设计程序已解决问题,进行系统的维护管理。
7、具有:短小精悍,可移植性强。
三、shell的种类以及bash的配置文件
站在用户登录的角度来说,shell的种类
登录式shell:
正常通过某终端登录
su - username
su -l username
非登录式shell:
su username
图形终端下打开命令窗口
自动执行的shell脚本
bash配置文件
全局配置:
/etc/profile
/etc/profile.d/*.sh
/ets/bashrc
个人配置:
~/.bash_profile
~/.bashrc
profile类功能:
设定环境变量
运行命令或脚本
bashrc类功能:
设定本地变量
定义命令别名
登录式shell如何读取配置文件
/etc/profile----->/etc/profile.d/*.sh------->~/.bash_profile--->~/.bashrc--->/etc/bashrc
非登录式shell如何读取配置文件
~/.bashrc--->/etc/bashrc---->/etc/profile.d/*.sh
四、优秀的shell脚本应该遵循的原则
应该包含以下基本信息
1、scripts的功能
2、scripts的版本信息
3、scripts的作者与联络方式
4、scripts的版权宣告方式
5、scripts的历史记录
6、scripts内的特殊指令,使用绝对路径来调用
7、scripts运作时需要的环境变量预先宣告预设定
8、scripts应该包含详细的注释信息,以便于查阅
后记:学习shell,个人感觉有以下几点需要注意:
1、基本功,这个需要我们长时间的积累,碰到问题,才能达到那种顺手拈来的境界。
2、进阶,你需要熟练掌握shell各种语法结构和定义,以及shell语句在什么环境下使用。
3、多看别人的优秀的脚本,(这里的优秀没有绝对的界限,哪怕整个脚本只有一个语句对你有帮助的那就是优秀的).
4、多总结,把收集到的优秀的脚本和语句吸收、整理,尽可能使其成为自己的知识体系中的一部分.
5、优化,可能一个月前你写的脚本很冗余,都是用一大堆命令堆叠起来的,而一个月后你可能使用函数重新编译先前你写的脚本,或许就可以精简到几行,
所以写过的脚本,不要认为可以完成工作就可以了(尽可能的去简化,如果你只是简单的使用,那就可以了),如果你想要写出更完美的脚本,那就尽可能去优化。
附上一列(检查当前主机所在网络中的主机存活情况):
#!/bin/bash #Verson:0.1 #Auther:lovelace #Pragram:This pragram is auto read network address,after that check hosts active or not in your current network, #BUG: There are much more delay when ping unactive hosts,who can offer good ideas. #define netwok address netIP=`ifconfig |grep 'inet addr:' | grep Bcast|awk '{print $2}' |awk -F: '{print $2}' | cut -d '.' -f1-3` #loop network address and check host active or not for x in `seq 1 255` do #Note:ping -c--->count -w--->deadtime This two argument can reduce the delay time ping -c 2 -w 1 $netIP\.$x &>/dev/null # sleep 2 if [ $? -eq 0 ];then #print active host and input file to ip.txt files, echo -e "\033[31m$netIP.$x\033[0m is active"| tee /tmp/ip.txt fi done #statistics the active hosts runnum=$(cat /tmp/ip.txt | wc -l) #print the host active sum echo -e "There are \033[33m$runnum hosts\033[0m live in \033[35m$netIP.0\033[0m network."
转载于:https://blog.51cto.com/lovelace/1211087
shell学习之shell基础知识了解相关推荐
- Day 01嵌入式学习之Linux基础知识和命令操作
学习嵌入式开发的随堂笔记 Day 01嵌入式学习之linux基础知识和命令操作 1.英文: read:读,r字母 write:写,w字母 execute:执行,运行,x字母 directory:目录, ...
- JNI学习开始篇 基础知识 数据映射及学习资料收集
JNI学习开始篇 基础知识 数据映射及学习资料收集 JNI介绍 JNI(Java Native Interface) ,Java本地接口. 用Java去调用其他语言编写的程序,比如C或C++. JNI ...
- OpenCV与图像处理学习一——图像基础知识、读入、显示、保存图像、灰度转化、通道分离与合并
OpenCV与图像处理学习一--图像基础知识.读入.显示.保存图像.灰度转化.通道分离与合并 一.图像基础知识 1.1 数字图像的概念 1.2 数字图像的应用 1.3 OpenCV介绍 二.图像属性 ...
- php基础教学笔记,php学习笔记:基础知识
php学习笔记:基础知识 2.每行结尾不允许有多余的空格 3.确保文件的命名和调用大小写一致,是由于类Unix系统上面,对大小写是敏感的 4.方法名只允许由字母组成,下划线是不允许的,首字母要小写,其 ...
- 计算机网络基础心得体会结尾,学习《计算机网络基础知识》心得体会
学习<计算机网络基础知识>心得体会 ... 如今已经是信息时代,作为主流信息工具的网络越来越重 要,网络是信息的载体,是人们传递感情的工具.随着信息社会 的不断发展,网络的应用将会更加广泛 ...
- 计算机学生要学的基础知识,中小学生应注重学习计算机的基础知识
"知识爆炸"和"知识老化"这两大问题,不断困扰着现代教育,人们解决这一问题的良方之一,就是加强学生对基础知识的学习.近年来在中国兴起的中小学生学习计算机热,也同 ...
- 【学习笔记--FMCW基础知识】
学习笔记--FMCW基础知识 前言 mmWave测距原理 mmWave区分多个物体 mmWave的距离分辨率(Range Solution) mmWave的最大测量距离 前言 由于工作原因需要了解TI ...
- 使用Vue3学习Vue的基础知识
创建 Vue 应用 vue的安装有多种方式,本文只讨论基础知识,其他安装方式请自行查阅官网 https://v3.cn.vuejs.org/guide/installation.html 本文使用CD ...
- kpu 处理器_深度学习及 KPU 基础知识
深度学习及 KPU 基础知识 1. 阅读完本章文档可以了解什么? 了解深度学习一些基础内容 了解 K210 内部 KPU 的特性 了解 KPU 使用过程中可能会遇到的问题,以及问题的解决方法 2. 概 ...
- 处理器_深度学习及 KPU 基础知识
kpu 处理器_深度学习及 KPU 基础知识_weixin_39909212的博客-CSDN博客深度学习及 KPU 基础知识1. 阅读完本章文档可以了解什么?了解深度学习一些基础内容了解 K210 内 ...
最新文章
- angularjs 滑块验证码 移动端_SliderCaptcha
- R语言关系操作符:>、<=、!=、>=、==、
- 区块链将重新定义世界
- Flutter开发之《新锐专家之路:混合开发篇》笔记(55)
- JavaScript标准库系列——RegExp对象(三)
- linux如何修改主机名
- easyui使用时出现这个Uncaught TypeError: Cannot read property 'combo' of undefined
- Handling Errors Exceptionally Well in C++ 在C++中良好地捕获意外的错误
- ios pusher使用_使用.NET和Pusher构建实时评论功能
- Promise解决多个异步Ajax请求导致的代码嵌套问题(完美解决方案)
- VC2005 C++入门记
- vs2015社区版不支持installshield
- java .insert_Java StringBuffer.insert 插入字符
- 路由端口的限制与破解
- iOS麦克风运用——腾讯微博“吹一吹”
- [转]Cryengine渲染引擎剖析
- BZOJ2818 Gcd
- html统计表合并单元格的快捷键,excel中合并单元格的快捷键的方法及设置技巧
- 驾考通-小型汽车考试
- 用 kali 工具 apache 搭建简易网站 LAMP
热门文章
- WinDbg用法详解
- Microsoft SharePoint Server 2016 部署文档(2)
- 你的sql查询为什么这么慢?
- MySQL常见命令 [转]
- 在“DNS管理器”中手工增加DNS主机(A)或者别名(CNAME)记录时,出现被拒绝的错误...
- 八个防止浪费时间的小窍门
- js双等号探索(一): [] == ![]为Ture ?
- System V IPC
- 【基础练习】【拓扑排序】codevs3294 车站分级题解
- Android多媒体分析-通过MediaStore获取Audio信息