文章目录
- 1. 认识Linux系统
- 2. Shell命令
- 3. VI编辑器的使用
- 4. Shell脚本编程
- 5. 实验部分
1. 认识Linux系统
- Linux特点
- 完全免费
- 开发性
- 多用户、多任务
- 丰富的网络功能
- 可靠安全、性能稳定
- 支持多种平台
2.Linux系统的组成
- 内核
- Shell
- 应用程序
- 文件系统
3.Linux版本
Linux版本由形如x1.x2.x3三组数字组成
- x1:主版本号,表示内核级别,越大级别越高,目前最高版本为5
- x2:次版本号,分为测试版与稳定版,奇数为测试版,偶数为稳定版。
- x3:修正序号,此数越大,通常会表示该内核功能更强或以前中的缺陷得到修正
4.Linux应用软件安装
查看软件是否安装成功
rpm -qa|grep 软件名称
有信息输出代表安装成功
无信息输出代表安装中
5.Shell提示符号
- #:代表超级用户(管理员)
- $:代表普通用户
2. Shell命令
1.Linux系统的目录结构
- /home:Linux系统各用户的主目录
- /root:root用户的主目录
- /bin:二进制目录,存放很多用户级的GUN
- /sbin:系统二进制目录,存在很多GUN管理员级工具
- /dev:设备目录,Linux在这里创建设备节点
- /lib:库目录,存放系统和应用程序的库文件
- /tmp:临时目录,可以在该目录中创建和删除临时工作文件
- /mnt:挂载目录,另一个可移动载体媒体设备的常用挂载点
- /boot:启动目录,存放启动文件
- /media:媒体目录,可移媒体设备的常用挂载点
- /etc:系统配置文件目录
- /proc:进程目录,存放现有硬件及当前进程相关信息
- /usr:用户二进制目录,大量用户级的GUN工具和数据文件存储在这里
- /var:可变目录,用以存放经常变化的文件,比如日志文件
2.目录操作
pwd
显示当前工作目录的绝对路径
3.mkdir 创建目录
mkdir [选项] [目录]
选项 | 说明 |
---|---|
-p | 若路径中的目录不存在,先创建目录 |
-v | 每次创建目录都显示信息 |
4.cd更改工作目录路径 大题会用到
cd [目录]
特殊符号 | 含义 |
---|---|
. | 代表当前目录 |
… | 代表当前目录位置的上一层目录 |
~ | 代表家目录,即login时所在目录 |
5.ls列出目录和文件信息
ls [选项] [目录][文件]
选项 | 说明 |
---|---|
-l | 以详细信息的形式展示出当前目录的文件 |
-a | 显示当前目录中的全部文件(包括隐藏文件) |
-d | 查看目录属性 |
-t | 按照创建时间顺序列出文件 |
-F | 显示文件类型 |
-i | 用于显示文件的inode号,inode号是文件在文件系统中的唯一标识,可以用来查看文件的硬链接数,以及查看文件是否被删除。 |
使用-l属性会输出如下的文件属性
- 第一个字符:代表文件类型,d代表目录,-代表文件,l代表链接文件,b表示为设备中可提供存储的接口设备,c表示为设备文件中的串行端口设备
- r表示可读,w表示可写,x表示可执行
6.rmdir删除空目录
rmdir [选项] [目录]
选项 | 说明 |
---|---|
-p | 删除递归目录,当子目录删除后其父目录为空时,也一同删除 |
-v | 输出处理的目录详情 |
7.touch 创建空文件 更改文件时间
touch [选项] 文件
选项 | 说明 |
---|---|
-a | 只更改访问时间 |
-m | 更改文件的修改时间记录 |
-e | 假如目标文件不存在,则不会创建新的文件 |
-d<字符串> | 使用指定字符串表示时间而非当前时间 |
-t<日期时间> | 使用MMDDhhmm格式的时间非当前时间 |
8.cp复制文件和目录
cp [选项] [源文件|目录] [目标文件|目录]
选项 | 说明 |
---|---|
-f | 强制复制文件和目录,无论目的文件或目录是否已经存在 |
-r | 递归复制目录下的子目录和文件 |
-i | 若目标文件存在,则提示用户如何操作 |
9.mv文件和目录改名、移动文件和目录路径
mv [选项] [源文件|目录] [目标文件|目录]
选项 | 说明 |
---|---|
-f | 移动时自动替换已经存在的目标文件,不提示 |
-i | 若目标文件存在,则提示用户如何操作 |
10.rm删除文件或目录
rm [选项] [文件|目录]
选项 | 说明 |
---|---|
-f | 强制删除文件,不给出提示信息 |
-r | 递归删除目录及其子目录和文件 |
-i | 删除前需要确认 |
11.find用于查找文件或目录
find [查找范围] [选项] [查找条件]
选项 | 说明 |
---|---|
-name<文件名> | 匹配文件的名称 |
-user<用户名> | 匹配文件的所有者 |
-perm<权限> | 匹配文件的权限 |
-type<文件类型> | 匹配文件类型查找 |
-size n< ckMG > | 匹配文件的大小(+50k查找超过50k的文件,而-50k则表示查找小于50k的文件) |
–exec {} \ ; | 后面可接对搜索到结果进一步处理的命令 |
例如,搜索/etc中所有以host开头的文件
find /etc -name "host*" -type f
-type[选项]
f:普通文件
d:目录文件
l:连接文件
b:块设备文件
c:字符设备文件
p:管道文件
s:套接字文件
12.查找文件或目录 which/whereis
which
主要用于搜索二进制文件、可执行文件或者Shell命令行的位置
whereis
主要用来搜索二进制文件的位置、源代码的位置和man帮助文件位置
13.cat显示文本文件、连接文本内容
cat [选项] [文件]
选项 | 说明 |
---|---|
-n | 对输出的所有行编号 |
-b | 对非空输出行编号 |
14.more分页显示文本文件
more [选项] [文件]
选项 | 说明 |
---|---|
+n | 从第n行开始显示文件内容,n代表数字 |
-n | 一次显示的行数,n表示数字 |
Ctrl + f是向下显示一屏
Ctrl + b是向上滚动一屏
Enter键向下滚动一行
q是退出more命令
15.head显示指定文件的前若干行
head -n 行数值 [文件]
默认缺省显示文件的前10行
比如head -5 /etc/passwd 表示显示/etc/passwd文件的前5行
16.tail查看文件末尾数据
tail -n 行数值[文件]
默认缺省显示文件后10行内容
例如,tail -5 /etc/passwd 表示显示/etc/passwd文件的后5行
17.grep 在文件中搜索与字符串匹配的行输出
grep [选项] 查找条件 源文件
选项 | 说明 |
---|---|
-i | 查找时忽略大小写 |
-v | 反转查找,输出与查找条件不相符的行 |
查找字符串以双引号括起来,“^……”表示以……开头,“……KaTeX parse error: Expected group after '^' at position 11: ”表示以……结尾,“^̲”表示空行
18.tar文件打包、压缩
tar [参数] 打包文件名 文件
选项 | 说明 |
---|---|
-c | 产生.tar打包文件 |
-v | 列出打包/解包的详细过程 |
-f | 指定打包文件的名称 |
-z | 以.gz的格式压缩或解压打包文件 |
-j | 以.bz2的格式压缩或解压打包文件 |
-x | 以打包文件中还原文件 |
-C | 解压到指定目录 |
-r | 将文件追加到打包文档末尾 |
打包:
- tar -czvf [存放路径]打包文件名.tar.gz 源文件或目录
- tar -cjvf [存放路径]打包文件名.tar.bz2 源文件或目录
- tar cJvf [存放路径]打包文件名.tar.xz 源文件或目录
解压
- tar -xzvf [存放路径]打包文件名.tar.gz [-C 解压目录]
- tar -xjvf [存放路径]打包文件名.tar.bz2 [-C 解压目录]
- tar -xJvf [存放路径]打包文件名.tar.xz [-C 解压目录]
19.输入重定向
命令<文件名
20.输出重定向
类型 | 操作符 | 用途 |
---|---|---|
重定向标准输出 | > | 将命令的执行结果输出到指定的文件中,而不是直接显示在屏幕上 |
>> | 将命令执行的结果追加输出到指定文件中 | |
重定向标准错误 | 2> | 清空指定文件的内容,并将标准错误信息保存在该文件中 |
2>> | 将标准错误信息追加输出到指定文件中 | |
重定向标准输出和标准错误 | &> | 将标准输出、标准错误的内容全部保存在指定文件中而不是直接显示在屏幕中 |
find /etc -name “passwd” 2>>error
21.管理用户及组
添加用户
useradd [选项] 用户名
选项 | 说明 |
---|---|
-u | 指定用户ID |
-G | 指定用户的附属组(补充组) |
-s | 指定用户登入所使用的Shell |
-d | 设置登录时使用的主目录 |
-M | 不创建用户组 |
注意,不指定用户ID的时候由系统自主生成
创建一个不可登录无用户主目录的用户
useradd -M -s /bin/nologin user
统计系统可登录用户数量有几个
grep "bash$" /etc/passwd | wc -l
给用户设置密码
passwd [选项]用户名
删除用户
userdel [选项]用户名
选项 | 说明 |
---|---|
-r | 同时删除用户及子目录 |
22.chmod设置基本权限
有两种方法,一种是字符法,一种是数字法
字符法
chmod [ugoa] [+-=] [rwx] [文件或目录]
u、g、o、a分别表示属主、属组、其他用户、所有用户
+、-、=分别表示增加权限、去除权限、设置权限
chmod o+w my.txt
my.txt文件的其他人增加读权限
数字法
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
---|---|---|---|---|---|---|---|---|---|
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
权限分配 | 文件所有者 | 文件所属组 | 其他用户 |
例如数字777表示 111 111 111,也即是rwxrwxrwx
数字664表示110 110 100,也就是rw-rw-r–
23.ps指令
ps [选项]
选项 | 说明 |
---|---|
-a | 显示当前终端上的所有进程,包括其他用户的进程信息 |
-e | 显示系统中所有进程,包括其他用户进程和系统进程信息 |
-l | 以长格式显示进程信息 |
-u | 显示面向用户的格式(包括用户名、CPU及内存使用清空等信息) |
-x | 显示后台进程的信息 |
-f | 显示进程的所有信息 |
显示所有进程
ps -ef
查找某一个进程
ps -ef|grep 进程名
24.周期性计划任务
编辑计划任务
crontab -e [-u 用户名]
查看计划任务
crontab -l [-u 用户名]
删除计划任务
crontab -r [-u 用户名](root用户可以管理指定用户的计划任务,普通用户只能管理自己的计划任务)
字段 | 说明 |
---|---|
分钟 | 取值0-59任意整数 |
小时 | 取值0-23任意整数 |
日期 | 取值1-31任意整数 |
月份 | 取值1-12任意整数 |
星期 | 取值0-7任意整数 |
命令 | 要执行的命令或程序脚本 |
- *:表示该范围内的任意时间
- ,:表示间隔的多个不连续时间点
- -:表示一个连续的时间范围
- /:指定间隔的时间范围
3. VI编辑器的使用
1.VI编辑器的三种操作模式
4. Shell脚本编程
1.Shell中常用符号
- 注释符#
- 美元符$:变量符,与反斜杠转义符相反,使其后面的普通字符作为变量名
- 单引号:被单引号引起的字符全部做普通字符,即全部原样
- 倒引号:倒引号内的字符串做为Shell命令行解释执行,得到的结果取代整个倒引号括起来的部分
- 双引号:被双引号引起来的内容,除了$、转义符\、倒引号保留特殊作用,其他均做普通字符
- 反斜线:转移字符,将特殊字符变成普通字符
2.Shell预定义变量(五分)
用户不可修改
- $#:传送给Shell程序的位置参数的数量
- $?:最后命令得的完成码或者在Shell程序内部执行的Shell程序(返回值)
- $0:Shell程序的名称
- $*:调用Shell程序时所传诵的全部参数的单字符串,“参数1”“参数2”……形式保存参数
- $@:“参数1”“参数2”……形式保存的参数
- $n:第n个参数
- $$:本程序的PID
- $!:上一个命令的PID
3.用户变量(赋值)
变量名=值
取值取空格,必须用引号(单引号或双引号)括起来
取值
echo $变量
4.|| 和 | 和 \ 的区别
- || : 表示上一条命令执行失败后,才执行下一条命令,echo 'step1‘ || echo ‘step2’
- | :表示管道,上一条命令的输出,作为下一条命令参数
- \:转义字符
5.算术扩展运算符
- $((x + y)):加法运算
- $((x - y)):减法运算
- $((x / y)):除法运算,结果仅保留整数位
- $((x * y)):乘法运算
- $((x % y)):自加运算
- $((x --)):自减运算
- $((x ** y)):幂运算,x的y次方
5. 实验部分
- 新建Shell脚本文件test1,在“/home/user/自定义”目录下新建数个文件名的后缀为“*.txt“的文件,编辑如下脚本程序。
#!/bin/bash
path="/root/linux"
cd $path
for file in *.txt
do
leftname=`basename $file .txt`
mv /root/linux/$file /root/linux/$leftname.doc
done
将目录下的全部*.txt文件修改成.doc,也就是修改文件后缀
- 上面的test2脚本改良
#!/bin/bash
cd $1
for file in $(ls *.txt)
do
leftname=`basename $file .txt`
mv $1/$file $1/$leftname.doc
done
其中$1 是执行该shell脚本后面接的参数,也就是home/user/test
- 该脚本功能是什么
#!/bin/bash
function rand(){
min=$1
max=$(($2-$min+1))
num=$(($RANDOM+10000000000)) #增加一个10位的数再求余
echo $(($num%$max+$min))
}
rnd=$(rand 400000 500000)
echo $rnd
这里面顶一个方法rand,rand方法需要接收两个参数,第一个参数赋值给min变量,使用第二个参数减第一个参数再加1将这结果赋值给max。接着顶一个num**,$RANDOM是Linux的内置函数,用于生成0到32767之间的任一随机数**,用来生成随机数。该函数的返回值就是一个生成400000~500000的随机数
- 自己设计一脚本程序test4,要求该程序的运行能判断LINUX计算机上是否在运行sshd进程,如果该进程正在运行,则显示“running”,如果不在运行则显示“not running”.
#!/bin/bash
ps_out=`ps -ef | grep $1 | grep -v 'grep' | grep -v $0`
result=$(echo $ps_out | grep "$1")
if [ "$result" != "" ];then
echo "Running"
else
echo "Not Running"
fi
- 编写一个shell脚本程序test5,它能根据输入的命令行参数采取不同的动作:如果是目录,则列出该目录中的文件;如果是可执行的文件,则用shell执行之;如果是可读的文件,则cat显示其内容;如果不是以上三种类型,则显示“异常对象”。
#!/bin/bash
echo file
read file #输入
if [ -d $file ]
then
echo "ls:"
ls $file/
elif [ -x $file ]
then
echo "result:"
./$file
elif [ -f $file ]
then
echo "contoxt:"
cat $file
else
echo "abnormal"
fi
- 统计LINUX系统中可以正常登录的用户数量,在LINUX系统上写出命令。
cat /etc/passwd|grep /bin/bash|wc –l
- 自己设计一脚本程序test2,要求该脚本能删除指定目录下文件大小为0的文件
#!/bin/bash
for file in `ls $1`
do
if [ -f $1"/"&file ]
then
if [ -s $1"/"$file ]
then
echo "$file is docution but > 0"
else
rm $1"/"$file
fi
else
echo "$file is no docution and > 0"
fi
done
- 设计脚本test3,对命令行参数求平均值
#!/bin/bash
[ $# -ne 1 ] && exit #判断参数个数
[ "$1" -le 0 ] && exit #判断参数合法性
sum=0
for (( i=1;i<=$1;i=i+1 ))
do
read -p "Input number #$i: " num[$i]
sum=$((sum+num[$i]))
done
average=$((sum/$1))
echo "sum: $sum"
echo "average: $average"
- 写出在当前目录下创建下面文件树的命令序列。
mkdir 1
cd 1
mkdir 11 12
cd 11
touch 111 112
cd ..
cd 12
touch 121 122
- Apache服务器基本配置
首先检查httpd软件包是否有安装
rpm -qa |grep httpd
启动httpd服务
systemctl start httpd.service
设置httpd服务为自启动
chkconfig httpd on
编辑Apache主配置文件/etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd" :这是Apache的工作目录,不需修改
KeepAlive On :修改为On,使得一次TCP连接可以传输多个文件
Listen 自己机器IP地址:8080 :修改HTTP服务监听IP地址和端口号
Include conf.d/*.conf :/etc/httpd/conf.d/*.conf都是Apache的附加配置文件,不需修改
ServerAdmin root@localhost :管理员邮箱,可修改为自己的邮箱
ServerName www.example.com:80 :设置服务器名称,如果没有配置DNS解析,可设 :置为IP地址和端口号的组合。把这一行修改为
:ServerName 自己机器的IP地址:80
DocumentRoot "/var/www/html" :这是网站文档主目录,建议保留
设置主页文件内容
#vi /var/www/html/index.html :添加主页文件,随意输入内容
重启Apache服务器
systemctl restart httpd.service
在操作系统中利用浏览器访问http://自己机器IP地址,测试能否显示主页文件index.html。