Linux及shell编程

第一章 Linux概述

Unix操作系统是Linux的前身;
多用户、多任务操作系统;收费的;

GPL协议:所有GPL协议下的自由软件都必须遵循“CopyLeft”(非版权)原则:即自由软件允许用户自由拷贝、修改和销售,但对其源代码的任何修改都必须向所有用户公开。
GNU计划:旨在开发一个类似UNIX并且是自由软件的完整操作系统。

Linux系统特点:
开放性(开源)、多用户、多任务、良好的用户界面、优异的性能和稳定性。

Linux版本:常用的主流版本——》Debian、redhat、ubuntu、centos、Fedora 

第二章 安装Linux

安装虚拟机软件
常用的虚拟机:VMware Workstation、VirtualBox、Virtua* PC
安装VMware——》安装centOS操作系统

Linux操作系统和Windows操作系统进行关联:
   桥接模式、NAT模式、仅主机模式

配置静态IP

远程连接工具:Xshell(目前最好用)、SecureCRT(收费)、Putty

第三章 Linux的结构

1、Linux组成:内核、文件系统、脚本、应用程序

第四章 常用Linux命令的基本使用

1、常用快捷键:


                         tab:命令或者路径提示及补全
                         ctrl+c:放弃当前的输入,终止当前任务或程序;
                         ctrl+l:清盘(clear命令)
                         ctrl+insert:复制
                         鼠标右键:粘贴
                         ctrl+shift+R 重新连接
                         ctrl+1/2/3/4...切换会话窗口
                          上下键:查找执行过的命令,或者是history命令

2、常用命令:

a、cp复制拷贝命令:
            cp source dest (复制source到dest)
            cp -r sourceFolder targetFolder(递归复制整个文件夹)

b、mv(move) 移动文件或目录,也可以给文件或目录重命名
           mv oldNameFile newNameFile(重命名)
           mv /temp/movefile  /targetFolder(递归移动文件)

c、cat 查看文件内容 

d、more 查看文件(cat查看小文件,more查看大文件 一页一页显示文件内容)
         

e、less查看文件内容
        

f、head 查看文件内容,只查看头几行
         

g、tail 查看文件内容,只看尾巴几行
          

3、组合命令


1)重定向输出>和>>
      >重定向输出       cat /etc/passwd>a.txt   将输出定向到a.txt
      >> 重定向输出,又追加功能     cat /etc/passwd>>a.txt  输出并且追加
2)管道 |  将一个命令的输出作为另一个命令的输入
      ps 进程状态 ps -ef
      grep 全局正则表达式版本(搜索)
     ps -ef | grep java  所有的进程中查找java进程
     ls --help | more   分页查看帮助信息
3)逻辑控制&&   与  只有左边的命令成功时,右边的命令才会执行
      例子:启动服务并查看日志   ./startup.sh && tail -100f catalina.out

history查看所敲命令历史

第五章 打包和解包命令


      1)打tar包
                       

   2)解tar包
                    

5、


1)gzip格式压缩与解压缩
      压缩文件: tar -zcvf 打包压缩文件名.tar.gz 被压缩文件/目录
      解压文件:tar -zxvf 打包文件.tar.gz
      解压缩到指定路径:tar -zxvf 打包文件.tar.gz -C 目录路径
2)bzip2格式压缩和解压缩
      压缩文件:tar -jcvf 打包文件名.tar.bz2 被压缩文件/目录
      解压缩:tar -jxvf 打包文件.tar.bz2
      解压缩到指定路径:tar -jxvf 打包文件.tar.bz2 -C 目录路径

第六章 时间日期

date显示当前时间
      

date显示当前日期
       

设置系统时间:date -s 字符串时间
cal查看日历:cal [选项]

第七章 搜索查询

        a、find查找文件或者目录
              格式:find path [options]
              
               
               

         b、grep过滤查找  基本格式:grep [options] 范围
               

第八章 vi编辑器

vi即可以查看文件,也可以编辑文件。如果目标文件不存在,会创建新的文件,但是如果新文件没做编辑,退出后还会消失。
vi的三种模式:编辑、底行、命令模式
      
      

编辑模式:  命令模式下按下 i、o、a进入编辑模式
                 i:光标不动;o:另起一行;a:光标到下一个字符; 按ESC退出编辑模式进入命令模式。
底行模式:命令模式下按:或者/进入底行模式,可以输入命令
                1)退出vim:
                      
                 2)撤销上次操作(一般模式下)
                      
                 3)设置行号(底行模式)
                     
                4)替换文本
                     
                5)查找(一般模式)
                      

  命令模式(一般模式)
                 
 

第九章 用户及组管理

        1、添加新用户:useradd 用户名;
         2、设置密码:passwd 用户名;
        3、判断当前用户是否存在:id 用户名;
        4、su 切换用户
              su 用户名称;(切换用户,只能切换用户的执行权限,不能获得环境变量)
              su - 用户名称;(切换用户并获取到用户的环境变量和执行权限)
        5、userdel 删除用户
             userdel 用户名;(删除用户但保存用户主目录)
             userdel - 用户名;(用户和用户目录都删除)
        6、who 查看登录用户信息
              whoami;(显示自身用户名称)
              who am i; (显示登录用户的用户名称)
              who;(看当前哪些用户登录到了本台机器上) 
       7、sudo获取临时管理员权限
             第一步:修改配置文件 、etc/sudoers文件,添加tom ALL=(ALL) ALL;
             第二部:sudo 命令
      8、用户组的操作:
            groupadd 组名;   创建组
            groupdel 组名; 删除组
            groupmod -n 新组名 老组名; 修改组名
            cat /etc/group    查看创建了哪些组
           usermod -g 用户组 用户名   修改用户

第十章 文件权限

      
      

2、修改文件权限
        

3、chown改变所有者
      chown 最终用户 文件

4、chgrp改变所属组
      chgrp 最终用户组 文件

第十一章 系统管理与进程管理

1、磁盘信息
     

2、ps查看系统中的所有进程
      基本语法:ps -aux 
                        a:显示终端上的所有进程,包括其他用户的进程
                        u:显示进程的详细状态
                        x:显示没有控制终端的进程
      

3、top查看系统健康状态
     top [选项] 
            -d 秒数:指定top命令每隔几秒更新。默认是3秒。
            -i:使top不显示任何闲置或者僵死进程。
           -p:通过指定监控进程ID来仅仅监控某个进程的状态。
     在执行top命令之后:
           P:以CUP使用率排序,默认就是此项。
           M:以内存的使用率排序。
           N:以PID排序
           q:退出top

4、kill终止进程:kill -9 pid进程号     -9表示强迫进程立即停止。

5、netstat显示网络统计信息
      作用:netstat命令用于显示与IP、TCP、UDP、ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
      基本语法: NETSTAT [-a][-b][-e][-n][-o][-p proto][-r][-s][-v][interval]
      
netstat -anp 查看这个系统目前网络状态
netstat -anp | grep 22

第十二章 安装软件

1、rpm软件包管理器(对软件的安装、查询、卸载)

        第一步:rpm包的查询命令:
                       -q:(query) 查询
                       -a:(all) 所有
                        -i:(info) 信息
                        -l:(list) 显示所有相关文件
                        -f:(file) 文件,显示文件对应rpm包
                 查询已安装的rpm列表: rmp -qa |grep xxx
                                                         rmp -qa | less
                 查询软件包信息:rmp -qi 软件包全名
                 查询一个rpm包中的文件安装到哪里去了:rpm -ql 软件包全名
                 查询指定文件归属于哪个软件包: rpm -qf 软件包全名
        第二步:rpm包的卸载
                       
       第三步:rpm包的安装
                      
 

2、yum
      能够从服务器上自动下载、自动安装、自动处理依赖关系。
      常用命令:
                     

2、安装JDK

        
           

3、安装tomcat

        

4、安装mysql

       第一步:查询系统自带的mysql: rpm -qa | grep mysql
       第二步:如果系统自带,则卸载自带的mysql:rpm -e --nodeps mysql-libs-5.1.73-8........
       第三部:下载安装官网yum源:
                                                      查看yum源仓库:ll /etc/yum.repos.d/
                                                      下载yum源:wget -P /user/software http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
      第四步:安装下载好的rpm文件: cd /user/software       rpm -ivh mysql-community-release-el6-5.noarch.rpm
      第五步:安装mysql服务器: install -y mysql-community-server
      第六步:启动服务器: service mysqld start
      第七步:修改密码: /usr/bin/mysqladmin -u root password 123456
      第八步:进入mysql: mysql -uroot -p 123456
      第九步:
                  问题1:解决中文乱码
                               a、查看编码表: show variables like 'character_set_%';
                               b、修改mysql配置文件    >/etc/my.cnf  ——> vim  /etc/my.cnf
                                     [client]
                                     default-character-set=utf8
                                     [mysql]
                                     default-character-set=utf8
                                      [mysqld]
                                      character-set-server=utf8
                                 c、重启mysql服务: service mysqld restart;
                                 d、再次查看编码表,都是UTF-8了:show variables like 'character_set_%'; ——》解决问题
                    问题2:默认情况下mysql服务端不允许远程客户端访问
                                 原因:因为用户没有远程访问权限
                                             use mysql;   select host,user from user;
                                              
                                    解决:授权  grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;
                                               刷新权限: flush privileges;
                                               再次查看权限: 
                                                                     

第十三章 大数据Linux操作

1、克隆两台机器

       选中当前虚拟机 右键—》管理—》克隆(创建完整克隆)
       配置克隆后的虚拟机 vi /etc/sysconfig/network-scripts/ifcfg-ens33   修改ipaddr —》重启网卡服务器  systemctl restart network
                                         更改主机名:hostnamectl set-hostname xxx  —》   重启机器reboot
       克隆好两台机器 centOS 7-2和centOS 7-3

2、关闭三台机器防火墙

       查看防火墙状态: systemctl status firewalld
       关闭防火墙:systemctl stop firewalld
       设置防火墙状态失效,开机自动关闭: systemctl disable firewalld

3、三台机器关闭selinux(安全增强型Linux 不关闭导致SSH链接异常)

       vi /etc/selinux/config   —> SELINUX=disabled

4、三台机器免密登录

     ssh协议(安全外壳协议):
                                                两种级别的安全验证:
                                                         第一种级别(基于口令的安全验证)
                                                                 ssh 192.168.80.122  ——》输入密码         
                                                                 要想ssh 主机名 需配置 vim /etc/hosts  加上 192.168.80.121 centOS7-1 之类
                                                                 ssh centOS7-2 ——》输入密码     
                                                                 exit 退出ssh                
                                                         第二种级别(基于秘钥的安全验证)
                                                                第一步:在三台机器上分别生成私钥和公钥:ssh-keygen -t rsa
                                                                第二步:将三台机器上的公钥拷贝到centOS7-1对应的位置,在三台机器上分别执行:ssh-copy-id centOS7-1
                                                                第三步:在centOS7-1上执行命令,将授权文件拷贝到centOS7-2和centOS7-3 :scp authorized_keys centOS7-2/centOS7-3:$PWD
                                                                最后:ssh centOS7-2 即可完成登录 不需输入密码。

补充:突然远程链接补上 123了,先运行service NetworkManager stop ,然后再运行service network restart就可以了。(因为直接service network restart失败)

5、三台机器同步时间

      
         
          
           crontab在线生成:https://cron.qqe2.com/

第十四章 Shell编程

1、简洁 shell的作用:shell解释器角色,它介于操作系统和系统内核之间;
                                    作为命令语言,也是一个解释型的语言;

2、查看shell解释器: cat /etc/shells

3、linux快速入门:
                           /usr/shell/hello.sh 里面编辑
                                                                     
                        执行脚本:/bin/bash hello.sh
                                         /bin/sh/hello.sh
                                         bash hello.sh
                                         sh hello.sh
                                         以上四种方式均能控制台输出 hello world
                                        ll 查看hello.sh权限
                                                                    
                                                                    没有执行权限,chmod +x hello.sh  添加执行权限
                                       ./hello.sh  也可执行脚本,控制台输出hello world

4、变量:
             定义变量:username="tom"  注意 :变量名前不能加$
             规则:变量只能用字母、数字、下划线,首字母不能是数字;中间不能有空格,可以使用_;不能使用标点符号;不能使用bash里的关键字;
             
              使用变量: echo $username  或  echo ${username}
              只读变量:readonly 变量名
              删除变量:unset 变量名   注意:unset命令不能删除只读变量。

5、字符串
     可以用单引号、双引号、不用引号。
     单引号的限制:单引号中任何字符串都会原样输出,里面任何变量都是无效的。
                              单引号中不能出现单独一个单引号,使用转义符也是无效的。
     双引号的优点:双引号中可以有变量,可以出现转义符。
     ---------------skill="java"-------------------
     获取字符串的长度:echo ${#skill}  —》4
     ------------str="i like hadoop"----------------
    提取字符串:echo ${str:2} —》substring(2)  like hadoop
                          echo ${str:2:2} —》subtring(2,2) li
   --------------str="hadoop is so easy" 查找o----------------
   查找字符串:echo `expr index "$str" o` —》4 找的时候从1开始计算

6、运算符
     val=`expr 1 + 2`
     echo val
     注意:表达式和运算符之间要有空格,例如 1+2 是不对的,必须写成 1 + 2;
                完成的表达式要被``包含,不是单引号;
  算数运算符:
                   
                  注意:条件表达式要放在[]之间,且一定有空格 [$a==$b]是不对的,要写成[ $a == $b ]
                             `expr $a == $b`
                  还可以通过$(())、$[]进行算数运算符
   关系运算符:
               只支持数字,不支持字符串,除非字符串的值是数字。
               
7、流程控制语句
     if语句
     实例:      

#!/bin/bash
score=95
if [ $score -gt 60 ] ; then
	echo "及格"
else 
	echo "不及格"
fi

if [ $score -ge 90 ] ; then
	echo "A"
elif [ $score -ge 80 ] ; then
	echo "B"
elif [ $score -ge 70 ] ; then
	echo "C"
else 
	echo "D"
fi

      for循环语句:              

#!/bin/bash
# 需求1: 遍历 1~5
for i in 1 2 3 4 5; do
	echo $i;
done
echo "---------------------"

# 需求2: 遍历 1~100
for i in {1..100}; do
	echo $i;
done
echo "------------------------"

# 需求3: 遍历 1~100之间的奇数
for i in {1..100..2}; do
	echo $i;
done
echo "----------------------"

# 需求4: 遍历 根目录 下的内容
for i in `ls /`; do
	echo $i;
done
echo "-----------------"

      while循环         

#!/bin/bash
# 计算 1~100 的和

sum=0;
i=1;
while [ $i -le 100 ]; do
	sum=$[ sum + i ];
	i=$[ i + 1 ];
done
echo "sum=$sum";

无限循环

#!/bin/bash

#使用for循环每隔一秒打印hello
for((;;))
do
	echo "hello";
	sleep 1;
done

# 使用while循环 每隔一秒打印当前时间
while true;
do
	echo `date +"%Y-%m-%d %H:%M:%S"`
	sleep 1;
done

case语句

#!/bin/bash

# 输入1-4之间的数字

echo "请输入1-4之间的数字:"
read aNum
case $aNum in
	1) echo "你选择了1"
	;;
	2) echo "你选择了2"
	;;
	3) echo "你选择了3"
	;;
	4) echo "你选择了4"
	;;
	*) echo "输入错误"
	;;
esac

break和continue

函数的使用
无参函数: 

#!/bin/bash
# 定义参数
fun(){
	echo "这是我的第一个shell参数"
}

# 调用函数
fun

传递参数:

# 定义函数
fun1(){
	echo "获取参数"
	echo "第一个参数:$1"
	echo "第二个参数:${2}"
	echo "第三个参数:$3"
	echo "全部参数:$*"
	echo "全部参数:$@"
}
# 调用函数
fun1 aa bb cc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 ... ...
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值