【Linux学习】之 Shell初识

前端之家收集整理的这篇文章主要介绍了【Linux学习】之 Shell初识前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Shell 的 历史:

- 1977年 Bourne Shell发布,并作为UNIX 7的默认Shell。
- 由于BourneShell 一直没有正式的版本号且交互性不好, 加州大学伯克利分校的一名学生编写了 C Shell,由于不支持正则表达式,so没在UNIX中广泛使用。
- 20世纪80年代初,出现了Korn Shell,成为AIX4上的默认的Shell
- 20世纪80年代末,出现了Bash Shell,作为GNU项目免费公布使用。

查看下系统的Shell 及其 版本吧。(Ubuntu 16)




一、第一个Shell脚本


(1)编写脚本

// Shell 脚本永远是以 #! 开头,这是一个脚本开始的标记
#! /bin/bash
# THis Line is a comment
echo "Hello World"


(2)运行脚本

① bash

// 直接bash 一个文件就是指定了使用 Bash Shell来解释脚本内容
bash HelloWorld.sh

② 使用 “./”

// ./ 表示运行的是当前目录下的HelloWorld.sh脚本
// (如果采用这种方式而脚本没有可执行权限则会报错)
./HelloWorld.sh

// 添加权限
// 只授予这个文件的所属者执行的权限 
chmod +x HelloWorld.sh
./HelloWorld.sh

如果想该脚本成为默认的系统命令

简单地将该脚本复制到任意系统$PATH变量所包含的目录中,同时赋予可执行权限。

比如:
chmod +x HelloWorld.sh
mv HelloWorld.sh /bin/
HelloWorld.sh


(3)脚本排错








二、Shell的内建命令


所谓Shell内建命令,就是由Bash自身提供的命令,而不是文件系统中的某个可执行文件

(自身所拥有的能力,而不是通过外部)
比如:bash, :, .,[ ,alias,bg,bind,break,builtin,cd,command。。。

常用的内建命令


(1)如何确认内建命令:type

// cd 是内建命令
type cd 

// ifconfig 不是内建命令,是外部文件
type ifconfig


(2)执行程序: ” . ”

用于执行某个脚本,甚至脚本没有可执行权限也可以运行。

// 如果脚本没有可执行权限,则会报权限错误
./Hello.sh

// 使用点号执行没有加执行权限的脚本可以正常运行
. ./Hello.sh


(3)别名:alias

alias可用于创建命令的别名,若直接输入该命令且不带任何参数,则列出当前用户使用了别名的命令。

比如:ll 等于 ls -l

// 查看当前命令的别名
alias

// 使用alias 定义别名
alias la='ls -a'

// 为使永久生效,可以将该条目写到用户家目录中的 .bashrc 文件中。
cat .bashrc

// 删除别名:unalias
unalias ll


(5)任务前后台切换:bg、fg、jobs

比如打包某个占用较大空间的目录,若在前台执行,在任务完成前将会一直占用当前的终端,而导致无法执行其他任务,此时就应该将这类任务放置后台

// 查找
find /etc -name *.deb

// 暂停前台任务
CTRL + z

// 查看暂停的任务
jobs

// 把任务放在后台继续运行
bg 1

// 把任务放在前台继续运行
fg 1

// 一开始就将命令调制后台运行(&)
find /etc -name *.deb &


(6)cd

改变当前工作目录。如果不加参数,默认会进入当前用户家目录。


(7)声明变量:declare 、typeset

两个命令一样,都是用来声明变量的。

// 弱类型,不用指明类型
i = 1

// 若使用declare命令,可以用 -i 参数声明整型变量
declare -i i = 4

// -r 只读
declare -r readonly=100

// -a
declare -a arr='([0]="a" [1]="b" [2]="c")'


(8)echo

用于打印字符。该命令会打印出引号中的内容,并在最后默认加上换行符。

// -n 命令提示符在同一行
echo -n "Hello World"

// -e 允许答应转义字符
echo -e "\n"


(9)跳出循环:break

从一个循环(for、while、until或者select)中退出
break n
//表示跳出n层循环(n >= 1)

break

break n


(10)循环控制:continue

停止当前循环,并执行外层循环(for、while、until或者select)的下一次循环。

continue

continue n


(11)声明局部变量:local

该命令用于在脚本中声明局部变量,典型用法是用于函数体内。
如果在函数外使用local声明变量,则会提示错误


(1)


(1)


(1)


(1)


(1)


@H_301_455@(1)


(1)


(1)


(1)


(1)


(1)


(1)


(1)

猜你在找的Bash相关文章