첫 번째 장에서는 기본 셸을 설명

1. 쉘 코스 강의 계획서

01) 쉘 기본 개요

02) 쉘 변수 정의

03) 쉘 수치 연산

04) 쉘 흐름 제어

05) 쉘 루프

06) 쉘 배열 함수

07) 쉘 내장 명령

08) 쉘 정규 표현식

2. 쉘은 무엇입니까?

Shell是一个命令解释器,它的作用是解释和执行用户输入的命令及程序等,用户输入一条命令,Shell就解释执行一条。

Shell存在于操作系统的最外层,负责直接与用户对话,把用户输入的命令解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户,当我们输入系统用户名和密码,登录到Linux后的所有操作都是由Shell解释并执行的。

쉘 명령은 대화 형 두 가지 방법으로 대화 형이 아닌이 생길입니다.

   什么是交互式:交互式模式就是在终端上执行,Shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式,是因为Shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,Shell也终止了。
   那什么又是Shell非交互式:非交互式模式,以Shell Script(非交互)方式执行。在这种模式下,Shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,Shell也就终止了。

(현재 설정되어있는 쉘 옵션을 나타내는) 변수의 대화 형 및 비 대화 형 쉘 값을 구별하는 - 당신은 "$"를 인쇄 할 수 있습니다.

[root@cc ~]# echo $-
himBH          #交互式Shell   

[root@cc ~]# cat 1.sh
#!/bin/bash
echo $-

[root@cc ~]# sh 1.sh
 hB            #非交互式Shell

로 표현되는 문자의 의미 :

01)h:hashall,打开这个选项后,Shell会将命令所在的路径记录下来,避免每次都要查询。
02)i:interactive,包含这个选项说明当前的Shell是一个交互式的Shell。    
03)m:monitor,打开监控模式,就可以通过Job control来控制进程的停止、继续,后台或者前台执行等。
04)B:braceexpand,大括号扩展。
05)H:history,Shell会把我们执行的命令记录下来,可以通过history命令查看。

쉘 스크립트는 무엇 3.입니까?

01)系统的命令堆积在一起,按照顺序执行。    
02)特定的格式 + 特定的语法 + 系统的命令 = 文件    
03)以.sh为结尾的文件

4. 왜 쉘 프로그래밍을 배워야한다?

    Shell脚本语言是实现Linux系统管理及自动化运维重要且必备的工具,Linux系统的底层及基础应用软件的核心大都涉及Shell脚本的内容。每一个合格的Linux系统管理员或运维工程师,都需要熟练Shell脚本语言的编写,并能够阅读系统及各类软件附带的Shell脚本内容,只有这样才能提升运维人员的工作效率,适应日益复杂的工作环境,减少不必要的重复性的工作,从而为个人的职场发展奠定较好的基础。

5. 어떤 쉘 프로그래밍 지식과 학습 요구?

01)对vim编辑器能熟练使用,熟悉SSH终端及".vimrc"等的配置。
02)要有一定的Linux命令基础,至少掌握80个以上Linux常用命令并能熟练使用。
03)要熟练掌握Linux正则表达式以及三剑客命令(grep、sed、awk)。
04)熟悉常见的Linux网络服务部署、优化、日志分析及排错。

6. 어떻게 쉘 프로그래밍을 배우는?

01)阅读、模仿、阅读、模仿
02)核心:多练--多思考--再练--再思考--坚持如此循环即可
03)掌握Shell脚本的各种常见语法
04)形成自己的脚本开发风格
05)从简单做起,简单判断,简单循环
06)多模仿、多离开参考资料练习、多思考
07)学会分析问题,逐渐形成编程思维
08)编程变量名字规范,采用驼峰语法表示
09)不要拿来主义,特别针对新手

7. 어떤 쉘 스크립트 무엇입니까?

01)基础配置:系统初始化操作、系统更新、内核调整、网络、时区、SSH优化等。
02)安装程序:LNMP、LAMP、MySQL、Nginx、Redis等。
03)配置变更:Nginx Conf、PHP Conf、MySQL Conf、Redis Conf等。
04)业务部署:Shell配合Git、Jenkins实现自动化部署PHP、Java代码,以及代码回滚。
05)日常备份:MySQL全备 + 增量 + binlog + crond + Shell脚本备份等。
06)信息采集:Zabbix + Shell: 对硬件、系统、服务、网络的监控等。
07)日志分析:ELK:取值->排序->去重->统计->分析等。
08)服务扩容/缩容:Zabbix + Shell
    扩容: 监控服务器cpu, 如cpu负载持续80% + 触发动作(脚本)
    脚本: 调用api开通云主机->初始化环境->加入集群->对外提供访问    
    缩容: 监控服务器cpu使用率20%->判断有多少web节点->判断是否超过预设->缩减到对应的预设状态->变更负载的配置

8. 쉘 스크립트 개발 규범과 습관

쉘 스크립트 개발 규범과 습관이 사양을 준수하는 데 필요한 것은 아니지만, 매우 중요하지만, 좋은 규범과 습관, 크게 발전 효율을 향상하고 스크립트의 유지 보수 비용을 줄일 수 있습니다. 사람들이 개발에 협력하면 서로 더 중요하게, 우리는 규범을 준수해야합니다. 사람이 개발 되더라도 쉽게 스크립트를 읽을 수 있도록, 그것은, 사양의 고정 된 설정을 위해 유지 보수를 게시하기 쉬운 최고에, 가장 중요한 것은 자신 슛 전문 규범과 습관을 개발하는 것입니다 수 있도록하는 것입니다.

01)脚本放在放在统一的目录
# mkdir -p /scripts/
02)推荐使用vim编辑器编辑脚本(高亮显示)
03)以.sh为扩展名
04)规范的Shell脚本第一行会指出由哪个程序(解释器)来执行脚本中的内容。
#!/bin/bash 或 #!/bin/sh #如不指定Shell,默认以bash执行。
05)开头的"#!"称为幻数,在执行Shell脚本的时候,内核会根据"#!"后的解释器来确定使用哪个程序解释脚本中的内容。注意:这一行必须在每个脚本顶端的第一行,如果不是第一行则为脚本注释行。
06)附带作者及版权信息。
07)脚本注释:在Shell脚本中,跟在"#"后面的内容表示注释。注释部分不会被执行,仅给人看。注释可以自成一行,也可以跟在命令后面,与命令同行。要养成写注释的习惯,方便自己与他人。最好不用中文注释,因为在不同字符集的系统会出现乱码。
08)成对的符号一次书写完成。
09)循环的格式一次书写完成。

구현 9. 쉘 스크립트

쉘 스크립트는 명령의 구현을 통해, 즉, 왼쪽에서 오른쪽으로 당신이 쉘 스크립트 (중첩이 스크립트)의 서브 스크립트를 발생하는 경우 그 다음, 실행에서 하향식 (top-down), 명령 실행 및 각 줄의 문장입니다 , 서브 스크립트의 내용의 첫 번째 구현 될 부모 스크립트에서 다음 명령과 문장의 실행을 계속하기 위해 스크립트의 완료 후 부모에게 돌아갑니다.

일반적으로, 때 쉘 스크립트 실행, 그 과정에서 명령과 스크립트 쉘 스크립트 아이를 실행하는 시스템 커널 요청에 대한 새로운 프로세스를 시작합니다.

쉘 스크립트는 일반적으로 다음과 같은 방법으로 실행할 수 있습니다 :

1)bash script-name或sh                 #无需执行权限
[root@cc ~]# cat oldboy.sh
#!/bin/bash
pwd
[root@cc ~]# ll oldboy.sh
-rw-r--r-- 1 root root 16 2019-06-16 22:38 oldboy.sh
[root@cc ~]# sh oldboy.sh
/root

2)path/script-name或./script-name    #必须要有执行权限   
[root@cc ~]# /root/oldboy.sh
-bash: /root/oldboy.sh: Permission denied
[root@cc ~]# ./oldboy.sh
-bash: ./oldboy.sh: Permission denied
[root@cc ~]# chmod +x oldboy.sh
[root@cc ~]# /root/oldboy.sh
/root
[root@cc ~]# ./oldboy.sh
/root

3)source script-name或.    #将脚本里的代码调入到当前环境运行,无需执行权限  
[root@cc ~]# cat test.sh
#!bin/bash
ping baidu.com
[root@cc ~]# sh test.sh >/dev/null

#另打开一个会话窗口查看进程   
[root@cc ~]# ps -ef|grep test.sh
root 13351 13263 0 22:42 pts/2 00:00:00 sh test.sh
root 13387 13355 0 22:43 pts/0 00:00:00 grep --color=auto test.sh

#使用source来执行脚本   
[root@cc ~]# source test.sh >/dev/null

#另一个会话窗口查看进程   
[root@cc ~]# ps -ef|grep test.sh
root 13394 13355 0 22:43 pts/0 00:00:00 grep --color=auto test.sh
[root@web01 ~]# ps -ef|grep ping
root 15616 13965 0 09:47 pts/0 00:00:00 ping baidu.com
root 15620 15591 0 09:47 pts/1 00:00:00 grep --color=auto ping

4)cat script-name |bash        #将脚本里的代码调入到当前环境运行,无需执行权限

5)bash < script-name           #将脚本里的代码调入到当前环境运行,无需执行权限

10. 셸에서 로그인에 로그인하고 비 쉘

로그인 쉘 : 사용자 이름이 필요합니다, 암호, 셸을 입력 로그인합니다.

비 로그인 쉘이 : 물론 사용자 이름 예를 들어, 셸을 열려면 암호를 입력 할 필요가 없습니다 : 직접 명령을 "bash는"는이-로그인 비 그놈 또는 KDE에서 "터미널"(터미널)을 열고 셸을 윈도우 프로 시저가 새 열 수 있습니다 쉘 비 로그인합니다.

쉘 (로그인 또는 로그인 쉘)를 종료하려면 exit 명령을 실행, 명령 실행, 로그인 셸 (셸을 nonlogin 종료 할 수 없습니다) 로그 아웃.

/ / 프로필 파일은 쉘은 단지 셸을 기록하는 실행 시작 로그인 한 후 실행하는 첫 번째 부팅 스크립트는 기타입니다 쉘 비 로그인 스크립트로 이어질하지 않습니다.

#登录式shell配置文件执行顺序
/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc

스크립트의 각 호출은 로그인 쉘, 우리는 또한 자동 백업, 명확한 임시 파일 생성과 같은 특정 작업을 수행 할 때, 해지 명령을 호출하기 전에 스크립트를 변경합니다. 파일에 이러한 작업 .Bash_logout.

#非登录式shell配置文件执行顺序
~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh

PS는 : 주 파일의 출력 라인을 상기 제해야 각 추가 광고 출력을 이용하여 에코를 확인한다.

추천

출처www.cnblogs.com/chenmiao531759321/p/11724019.html