30分钟Shell光速入门教程笔记

内容参考b站视频:BV17m411U7cC
———————
1.shell脚本反引号作用:将一行命令的结果赋值给一个变量要用反引号``或者$()括起来(推荐使用后者$(),更现代化更灵活),这样做是为了当成一个整体处理而不报错

2.linux中shell是用的bash,windows中用的是powershell,git的shell是git bash

3.cat命令可查看系统中shell所有的版本
cat  /etc/shells

4.可以用  echo  $+环境变量名  的方式查看系统中环境变量的值(内容)
eg:
echo  $PATH  #查看系统环境变量
echo  $SHELL  #查看系统当前默认使用SHELL版本的路径
echo  $0  #当前正在执行的脚本的名称

5.切换shell版本和退出的方法:
输入shell版本的路径,回车
eg:
/bin/sh  #切换到sh版本的shell
echo  $0  #显示  /bin/sh  ,即当前使用的是/bin/sh版本的shell
exit  #退出(回到默认新版本的shell)

6.
(1)为了方便定时任务执行、自动执行等行为,便有了shell脚本

vi/vim   demo.sh  #编辑shell脚本(注:其实脚本后缀名的有无都行、后缀名的内容是什么都行,但是为了约定俗成让人好辨别这是shell脚本、所以一般加上.sh结尾)

shell脚本的内容是“#!+ shell版本的路径”,
如果想要换成其他版本修改  “shell版本路径”即可
eg:
#!/bin/bash    --系统默认的shell是bash
#!/bin/zsh      --换成zsh(zShell)

(2)简单shell脚本示例
#!/bin/bash
echo "hello shell"  #打印双引号里的内容
date  #打印当前时间
whoami  #打印用户名

(3)执行shell脚本步骤
①vi  hello.sh(内容如上面(2))
②chmod  a+x  hello.sh  #执行脚本前要授予权限才能执行(a代表all即所有用户,x代表execute即执行)
③./hello.sh  # ./文件名  的方式执行脚本

7.shell脚本中的变量默认是全局变量(如shell脚本中定义的函数中的变量),作用域为:定义处一直到脚本结束的位置

要想将变量变成局部变量,就在变量前面加上local关键字
eg:函数名(){
local  num=$1  #加上local后,变量作用域仅在函数中有效了
函数内容/函数体

补:$1、$2、$3…分别表示传递给脚本的第一个、第二个、第三个参数

8.shell脚本中比较符是英文单词首字母缩写
It ( less than ):小于
le ( less than or equal to ):小于等于
gt ( greater than ):大于
ge ( greater than or equal to ):大于等于 
eq ( equal to ):等于
ne ( not equal to ):不等于

#greater即great的比较级;更大的

9.脚本中if语句的写法要求严格,两个中括号两边都需要有空格,否则会因为语法错误而无法执行
eg:if [  $num  -lt  2  ];then

10.vi编辑器的平替--两个更简单的使用方法
(1)VSCode的远程SSH连接扩展:
打开VSCode,扩展商店,搜索Remote SSH,安装,左侧出现SSH连接,在VSCod中SSH连接到远程服务器,还可以打开下方的终端、直接在远程服务器上输入命令

(2)使用nano编辑器(比vi更简单?)
略(记不了那么多了,有缘有需要再学)

11.shell脚本中的一些特殊变量
$#  传递给脚本或函数的位置参数的个数。
$?  上一命令的退出状态码。0通常表示没有错误,非0值表示有错误。
$*  传递给脚本或函数的位置参数,双引号包围时作为一个整体。
$@  传递给脚本或函数的位置参数。
$$  当前Shell进程的进程ID(PID)。
$!  最后一个后台命令的进程ID。
$0  当前脚本的名称。
$1-n  脚本或函数的位置参数。

12.
(1)定义普通变量
eg:name=Charlie

在shell脚本文件中引用脚本外的普通变量(即普通变量在脚本外的命令行中定义的,而想脚本执行时引用)是无法获取到它们的值的→所以见(2)

(2)export定义的环境变量
(export定义的环境变量可让脚本引用到)
eg:export  name=Charlie

但是export定义的环境变量仅在当前shell会话中有效,exit退出后再重启访问的话变量就变空失效了→所以见(3)

(3)定义永久有效的环境变量

Shell会在启动时读取一些配置文件
最常见的就是家目录下的.bash_profile和.bashrc这两个文件
注意这两个文件是隐藏的(linux中所有以.开头的文件都是隐藏文件,直接使用ls命令是看不到的,用 ls  -a 显示所有文件就能看见)
这两个文件都可以用来存储一些环境变量
但是.bash_profile文件是用户在登录时执行的且只执行一次
而.bashrc文件是每次新打开一个终端或者新建一个shell会话的时候都会执行一次的

不同shell的配置文件有差异
eg:zsh的配置文件是.zshrc文件
fish的配置文件是config.fish文件
但是原理都相同

通常.bash_profile里面会调用.bashrc
所以一般推荐把环境变量放到.bashrc文件中
这样可以保证每次新打开一个终端的时候,都可以获取到这些环境变量了

除了系统家目录下的这两个配置文件外,系统根目录下也会有一些系统级别的配置文件,比如根目录etc文件夹下的profile和bashrc文件等等,这些文件里存储的环境变量上是对所有用户都有效的

eg:把name和channel这两个变量放到.bashrc文件中,使用vi打开文件后,在文件里底部定义和导出一下这两个变量

vi  .bashrc


fi
export  name=Charlie
export  channel=twitch

:wq   #保存退出

提示:文件里添加了环境变量后,要重新加载或者退出shell会话重新登录才能生效

重新加载(两种方式):
①source  .bashrc
②..bashrc
重启:
exit(然后重新登录,echo查看变量/执行脚本引用变量就发现没失效一直在)

让系统重新读取一下配置文件,这样环境变量才会生效

.bashrc文件中除了可以存储环境变量外,还可以定义一些别名来简化一些命令的使用,比如在默认的.bashrc文件中,就定义了ls命令的一些别名(如ll,la,l)(具体略,需要再学吧)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值