《Linux系统命令及Shell脚本实践指南》百度网盘pdf最新全集下载:
成都创新互联公司是工信部颁发资质IDC服务器商,为用户提供优质的内江服务器托管服务
链接:
?pwd=fdhg 提取码:fdhg
简介:《linux系统命令及shell脚本实践指南》由浅入深、全面、系统地介绍了linux系统的基础命令和shell脚本的开发。作为一本面向linux入门用户的书籍,本书力求语言通俗易懂,
用例简单明了,便于读者阅读领会。同时,全书穿插了不少要求读者动手实践的内容,不但可加深读者对内容的理解和消化,同时也可通过动手实践激发读者对linux系统和shell编程的兴趣,从而更好地驱动读者学习。
全书共计18章,从知识结构上分为三部分。第一部分为前8章,全面介绍了linux的基础知识和常用命令;第二部分为第9章和第10章,主要是linux下交互和非交互编辑器的使用;
第三部分为第11~18章,主要是shell脚本开发。这三部分内容各有偏重,读者可以根据实际需要选择阅读。
《linux系统命令及shell脚本实践指南》根据作者多年来linux环境运维管理工作的经验编著而成,内容丰富,且注重实践讲解,非常适合linux初学者和基于linux平台的软件开发者学习或查阅。
从内容结构上来看,本书摒弃了各章独立的写作风格,而是采取了各章有机结合的方式,自上而下自成一体,既加深了读者对单个知识点的理解,也有利于从全局把控linux系统和shell编程的精髓。
Day19
归档:课堂笔记
时间:2019/3/26
老男孩教育教学核心思想6重:重目标、重思路、重方法、重实践、重习惯、重总结
学无止境,老男孩教育成就你人生的起点!
第十四章 linux 用户管理知识与应用实践
命令:
groupadd -g 指定组ID
groupdel 删除组
chage 查看和修改密码属性
-l 列表显示账户信息
[root@CentOS-F~]# chage -l oldboy01
Last password change : Mar 25, 2019
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
命令:
w 谁登陆了,在干什么
last 显示登陆过的用户信息列表
lastlog 查看最近登录过的用户报告
su 用户身份切换
-c 以指定用户身份执行命令
工作中怎么使用****su
1、外企先登录普通用户,没事不允许登录root,只有执行的任务需要root权限的时候才允许登录root。
系统维护通道。
用su 管理,必须知道root密码,安全隐患。
10个运维,都得知道root密码,安全隐患。
需求:
1、不用知道root密码还能管理服务器。
2、最小化管理服务器,想关机,就只给你halt权限。
sudo****命令:可以以最小化的权限(单个命令),执行命令时拥有****root****用户的权限
suid针对的时命令,任何用户执行命令都有root身份。任何用户执行某个命令:模糊
sudo针对用户,给某个用户以root身份执行某个命令。指定用户用户执行某个命令:具体
(相对比较安全)
如何编辑配置sudo?
Sudo是一个提权的命令(对应权限通过/etc/sudoers文件实现的)
配置/etc/sudoers可以使用visudo命令,或vim /etc/sudoers(不推荐)
[oldboy@CentOS-F~]$ ls /root
ls: cannot open directory /root: Permission denied
完成上面的动作:
给oldboy用户,针对ls设置权限
[root@CentOS-F~]# visudo visudo进入编辑状态,100G
root ALL=(ALL) ALL
oldboy ALL=(ALL) /usr/bin/ls #===增加一行
用户 主机=(角色) 命令
注意:
1、命令的路径要用全路径
2、尽量不要vim /etc/sudo,容易报错(语法错误),如果非要用,编辑完visudo -c检查语法
为了安全,禁止root****远程链接linux****。
[root@CentOS-F~]# su – oldboy
[oldboy@CentOS-F~]$ sudo ls /root
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
[sudo] password for oldboy:
以上是需要oldboy用户密码,回root用户下,passwd oldboy设置密码。
[oldboy@CentOS-F~]$ ls /root
ls: cannot open directory /root: Permission denied(没有权限)
[oldboy@CentOS-F~]$ sudo ls /root 前缀加sudo
anaconda-ks.cfg pass user.log
sudo 运行原理图
IT路边社
前言
与其它的编码规范一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。这份文档主要侧重于我们所普遍遵循的规则,对于那些不是明确强制要求的,我们尽量避免提供意见。
编码规范对于程序员而言尤为重要,有以下几个原因:
本文档中的准则致力于最大限度达到以下原则:
尽管本文档涵盖了许多基础知识,但应注意的是,没有编码规范可以为我们回答所有问题,开发人员始终需要再编写完代码后,对上述原则做出正确的判断。
注 :未明确指明的则默认为必须(Mandatory)
主要参考如下文档:
仅建议Shell用作相对简单的实用工具或者包装脚本。因此单个shell脚本内容不宜太过复杂。
在选择何时使用shell脚本时时应遵循以下原则:
可执行文件不建议有扩展名,库文件必须使用 .sh 作为扩展名,且应是不可执行的。
执行一个程序时,无需知道其编写语言,且shell脚本并不要求具有扩展名,所以更倾向可执行文件没有扩展名。
而库文件知道其编写语言十分重要,使用 .sh 作为特定语言后缀的扩展名,可以和其他语言编写的库文件加以区分。
文件名要求全部小写, 可以包含下划线 _ 或连字符 - , 建议可执行文件使用连字符,库文件使用下划线。
正例:
反例:
源文件编码格式为UTF-8。避免不同操作系统对文件换行处理的方式不同,一律使用 LF 。
每行最多不超过120个字符。每行代码最大长度限制的根本原因是过长的行会导致阅读障碍,使得缩进失效。
除了以下两种情况例外:
如出现长度必须超过120个字符的字符串,应尽量使用here document或者嵌入的换行符等合适的方法使其变短。
示例:
除了在行结束使用换行符,空格是源文件中唯一允许出现的空白字符。
对从来没有用到的或者被注释的方法、变量等要坚决从代码中清理出去,避免过多垃圾造成干扰。
Bash 是唯一被允许使用的可执行脚本shell。
可执行文件必须以 #!/bin/bash 开始。请使用 set 来设置shell的选项,使得用 bash echo "Process $: Done making $$$."
# 示例7:命令参数及路径不需要引号 grep -li Hugo /dev/ "$1"
# 示例8:常规变量用双引号,ccs可能为空的特殊情况可不用引号 git send-email --to "${reviewers}" ${ccs:+"--cc" "${ccs}"}
# 示例9:正则用单引号,$1可能为空的特殊情况可不用引号 grep -cP '([Ss]pecial||?characters*) ${1:+"$1"}
# 示例10:位置参数传递推荐带引号的"$@",所有参数作为单字符串传递用带引号的"$*" # content of t.sh func_t { echo num: $# echo args: 1:$1 2:$2 3:$3 }
func_t "$@" func_t "$*" # 当执行 ./t.sh a b c 时输出如下: num: 3 args: 1:a 2:b 3:c num: 1 args: 1:a b c 2: 3:
使用 $(command) 而不是反引号。
因反引号如果要嵌套则要求用反斜杠转义内部的反引号。而 $(command) 形式的嵌套无需转义,且可读性更高。
正例:
反例:
条件测试
使用 [[ ... ]] ,而不是 [ , test , 和 /usr/bin/[ 。
因为在 [[ 和 ]] 之间不会出现路径扩展或单词切分,所以使用 [[ ... ]] 能够减少犯错。且 [[ ... ]] 支持正则表达式匹配,而 [ ... ] 不支持。参考以下示例:
尽可能使用变量引用,而非字符串过滤。
Bash可以很好的处理空字符串测试,请使用空/非空字符串测试方法,而不是过滤字符,让代码具有更高的可读性。正例:
反例:
正例:
反例:
正例:
反例:
文件名扩展
当进行文件名的通配符扩展时,请指定明确的路径。
当目录中有特殊文件名如以 - 开头的文件时,使用带路径的扩展通配符 ./* 比不带路径的 * 要安全很多。
应该避免使用eval。
Eval在用于分配变量时会修改输入内容,但设置变量的同时并不能检查这些变量是什么。反例:
请使用进程替换或者for循环,而不是通过管道连接while循环。
这是因为在管道之后的while循环中,命令是在一个子shell中运行的,因此对变量的修改是不能传递给父shell的。
这种管道连接while循环中的隐式子shell使得bug定位非常困难。反例:
如果你确定输入中不包含空格或者其他特殊符号(通常不是来自用户输入),则可以用for循环代替。例如:
使用进程替换可实现重定向输出,但是请将命令放入显式子 shell,而非 while 循环创建的隐式子 shell。例如:
总是检查返回值,且提供有用的返回值。
对于非管道命令,使用 $? 或直接通过 if 语句来检查以保持其简洁。
例如:
当内建命令可以完成相同的任务时,在shell内建命令和调用外部命令之间,应尽量选择内建命令。
因内建命令相比外部命令而言会产生更少的依赖,且多数情况调用内建命令比调用外部命令可以获得更好的性能(通常外部命令会产生额外的进程开销)。
正例:
反例:
加载外部库文件不建议用使用.,建议使用source,已提升可阅读性。正例:
反例:
除非必要情况,尽量使用单个命令及其参数组合来完成一项任务,而非多个命令加上管道的不必要组合。常见的不建议的用法例如:cat和grep连用过滤字符串; cat和wc连用统计行数; grep和wc连用统计行数等。
正例:
除特殊情况外,几乎所有函数都不应该使用exit直接退出脚本,而应该使用return进行返回,以便后续逻辑中可以对错误进行处理。正例:
反例:
推荐以下工具帮助我们进行代码的规范:
原文链接:
获取更多的面试题、脚本等运维资料点击: 运维知识社区 获取
脚本之---短信轰炸机
脚本之---QQ微信轰炸机
ansible---一键搭建redis5.0.5集群
elk7.9真集群docker部署文档
全球最全loki部署及配置文档
最强安全加固脚本2.0
一键设置iptbales脚本