linux shell

1. shell 初识

  1. 什么是shell shell 是一个用c语言写的程序,他是用户使用linux的桥梁,Shell 既是一种命令语言,也是一种程序设计语言
    Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

  2. 什么是脚本
    脚本简单的说就是一系列文字命令,这些文字命令是可以直接通过有关编辑器直接编辑的。 常见的脚本语言有:javascript, VBscript, ASP, JSP, PHP, SQL, Perl, Shell ,python, Ruby, JavaFX, Lua

  3. 为什么要学习和使用shell
    程序开发的效率非常高,以来与功能强大的命令可以迅速的完成开发任务。
    shell是内置的脚本。

  4. 常见的shell种类
    在linux中有很多类型的shell,不同的shell具备不同的功能,shell还决定了脚本中函数的语法,linux中默认的shell是 /bin/bash , 流行的有ash, bash,ksh,csh,zsh

    • csh : c shell 使用的是“类C”语法,csh 是具有c语言风格的一种shell,其内部命令有52个,较为庞大,目前使用的不多,已经被/bin/bash 所替代。

    • ksh : korn shell 的语法与Bourne shell 相同,同时具备C shell 的易用特点,许多安装脚本都使用ksh,ksh有42条内部命令与bash相比有一定限制性。

    • tcsh : tcsh 是 sch的增强版,与 C shell 完全兼容。

    • nologin: 指用户不允许登录。这个脚本在 /etc/passwd 中可以看见很多用户最后有 /nologin 的标签,表示其是一个脚本,可以通过这个方法制定用户不允许登录到系统。

      让test2 用户不可登录到系统。
      usermod -s /sbin/nologin test2 // -s 表示shell,意思是制定新的shell,类型为/sbin/nologin 用户为test2
      随后可以在/etc/passwd/的相应用户后面看见 /nologin
      test2: x :1002:1002::/home/test2:/sbin/nologin

    • zsh : 目前linux里最庞大的一种shell,有84个内部命令,使用起来也较为复杂,一般情况下,不会使用该shell。

    • bash : 大多数 Linux 系统默认使用的shell ,bash shell 是 Bourne shell 的一个免费版本。他最早是 Unix shell .bash还有一个特点,可以通过help命令来查看帮助,包含的功能几乎可以涵盖shell所有的功能。所以一般的shell都会指定它为默认执行路径。


2. shell入门

2.1 编写规范:

  • 代码规范:
    • #!/bin/bash 告诉系统本脚本通过/bin/bash解释器 运行。
    • 文件的命名: 文件名.sh 且文件名最好不用中文,容易出问题。
  • 使用流程:
    1. 创建shell文件 touch XX 或 vim XX 当vim打开一个不存在的文件时,默认会创建他。
    2. 编写shell 代码
    3. 执行shell 脚本必须得有执行权限

2.2 实例 hello world :

  • 新建文件:hello_world.sh
  • 写入代码:
#!/bin/bash 
echo "hello world" 
#一般建议不加分号
echo "hello ";
echo "world"
  • 执行 shell:如果在当前目录则./hello_world.sh或使用绝对路径, 不能直接hello_world.sh
    如果直接写hello_world.sh ,系统会默认去Path下找它的路径。

2.3 实例 try.html

使用root账户创建并执行 “test.sh” ,实现创建一个shelltest账户,并在其家目录中新建文件try.html

#!/bin/bash 
useradd shelltest 
touch /home/shelltest/try.html

注:脚本执行的另外一种方式:/bin/bash 脚本路径


3. shell进阶

3.1 变量

在一个脚本周期内,其值可以改变的量为变量
脚本周期: 执行完一个shell文件称完成一个脚本周期。

3.1.1 变量的定义与使用

变量要先定义再使用。

# 定义变量:
class_name='yunwei'
#使用变量:
echo $class_name # 使用变量时一定要在变量名前加入"$"符号,该要求在其他语言也有,例如PHP。  

注:变量名的规范

  1. 变量名后面的等号左右不能有空格。
  2. 命名只能用英文字母,数字与下划线,变量名不可以数字开头。
  3. 变量名中不可出现空格,可以出现下划线。
  4. 不能使用标点符号。
  5. 不可以用bash关键字作为变量名,可以用help查看bash关键字

3.1.2 案例:使用变量输出helloworld

#!/bin/bash
string='hello world'
echo $string

本文章使用limfx的vscode插件快速发布