-----------------day03-------------------
(1)vim使用
1.vim有三种模式
1.1 插入模式
vim打开时,默认是命令模式,当按下i按键后有命令模式进入插入模式,按下ESC有插入模式退出到命令模式
1.2 命令模式
i 进入插入模式
y 复制一个字符
yy 复制一行
p 粘贴
d 删除
x 剪切
yw 复制一个字符串
dd 删除一行
dw 删除一个字符串
u 撤销命令
/ 搜索查找命令
1.3 末行模式(命令模式下操作)
:w 保存
:q 退出不保存
:wq 保存并退出
:q!当无法正常退出时,需要强制退出,退出后已经修改内容
1.4 可视模式
shift+V 进入可视模式,使用键盘中的上下左右建来选中一个块
当再次按下shift+v时退出可视模式
1.5其他命令
G 将光标移动到末行
gg 将光标移动到首行
:n 将光标移动到第n行
/string 在文档中查找一个字符串
shift+k 在vim中查看man 手册
(2)安装及双系统windows+ubuntu总结
系统磁盘使用的格式有MBR与GPT两种
当磁盘是MBR格式时,一般使用USB的模式时legacy(传统模式);需要禁用安全启动
当磁盘是GPT(guid格式)时,一般使用USB的模式是UEFI(安装的操作系统本身需要支持UFEI一般是64位的均支持)
SATA磁盘使用的传输数据模式是AHCI
我们的uefi安装却不一样,它的引导驱动是esp分区(windows)
2.2多位系统安装顺序
先安装windows后安装linux
先低版本后高版本
一般情况下使用linuix引导其它系统
2.3 安装双系统时,常见问题
2.3.1装好双系统后无法正常引导windows
此时需要使用sudo updata-grub重建引导
2.3.2一般情况下,需要重新安装输入法与浏览器,输入法使用搜狗输入法
2.3.3安装好系统后,无法正常使用无线网
1.可以在系统设置“软件和更新”中的“附加驱动”中安装无线网卡驱动”
2.重新安装linux系统,更换更高版本的系统或者由64位系统更换位32位系统,或者由32位更换为64位系统即可解决
3.查看本机无线网卡型号,到相应官网下载驱动程序,重新安装驱动
2.4首次使用Ubuntu时,需要注意事项
需要更新一下软件源
sudo apt-get update
(3)基本命令的使用
3.1 Ubuntu安装软件与卸载软件
sudo apt-get install 命令 安装命令
sudo apt-get remove 命令 卸载命令
sudo apt-get install -f 重新规整依赖关系
sudo apt-get update 更新软件源
3.2基本文件与目录操作命令
1.目录操作命令
ls列举当前目录下的所有文件
ls -l 查看当前目录下所有文件的长格式
ls path 查看path路径下的文件
ls -l path 查看
cd 切换目录命令
cd path 切换到path路径下
cd ~ 切换到当前用户主目录下
cd .. 切换到上级目录
cd - 切换到最近所在目录
cd 切换到用户主目录中
相对路径与绝对路径
/home/spring/sqzj1517/ 绝对路径
. 当前目录 相对路径
.. 上级目录 相对路径
../..上上级目录 相对路径
pwd 打印当前用户的工作路径
mkdir dir 创建目录dir
mkdir path/dir在path路径下创建目录dir
mkdir -p path/dir 在path路径下创建目录dir
如果path路径下的某个目录不存在则创建该目录
rmdir删除空目录
rm -rvf删除非空目录
2.文件操作命令
cp 复制命令
cp src/file1 dir/file2 将原目录以及内容中的file拷贝到dir目录中
cp -arf-dir path 将目录dir以及目录中的所有文件拷贝到path路径下
-a 拷贝所有的权限
-r 递归拷贝目录以及目录中的文件
-v 显示拷贝过程
-f 强制考贝
rm 删除文件以及目录命令
rm path/file 删除路径path下的文件file
rm dir -rvf 删除非空目录dir
--------------------day04---------------------
mv 移动命令(相当与windows下的剪切)
重命名
mv file path 将file文件移动到path路径下
mv file1 file2 将file1 文件重命名为file2
touch 创建文件命令,默认的文件用户与组为当前用户
sudo touch 默认的文件与组为root
vim file 打开file文件后保存,即可创建file文件
cat查看文件内容 将文件内容输
出到终端
tail 产看文件末为信息
head 查看文件头部信息
less分行显示文件信息 按下q退出
more 分页查看文件信息 当终端无法一次全部显示文件信息时按下空格翻页按下回车显示下一行
file 查看文件属性信息
diff file1 file2 对比两个文件的不同
find path -name filename查看文件名称为filename的文件
find / -name ls 在/ 目录下查找文件为 ls的路径
find ./ -name "*.txt"当前路径中查找所有后缀为txt的文件
3.3系统管理命令
linux中一般将用户分为两种用户,一种是root用户一种是普通用户操作系统中使用如下
yinxili@yinxili-Lenovo-G405:~/sqzj1517$
yinxili:当前用户
yinxili-Lenovo-G405:主机名称
~/sqzj1517:当前用户所在工作目录
$ :普通用户
root@yinxili-Lenovo-G405:/home/yinxili/sqzj1517#
root:当前用户
#:超级用户
sudo su root 由当前用户切换到root用户
su 用户名 由root切换到普通
su 用户切换命令
sudo 获取超级用户权限
sudo -i 获取5分钟超级用户时间
3.3.2登陆与退出用户
login 登陆用户命令
exit 退出用户命令 ctrl+d 退出
ctrl+Alt+fn+(f1~f6)进入打开字符界面
Ctrl+fn+alt+f7返回图形界面(有的不加fn)
3.3.3关机命令
shutdown 关机命令
sudo shutdown -h now立刻关机
sudo shutdown -h m m分钟后关机(ctrl+c退出)
poweroff关机
halt 关机
init 0 关机
3.4帮助命令
man 查看man手册
man ls 查看ls命令的man手册(q退出)
man 1 在man 1 手册中查看ls命令说明
man 2,3 查看函数说明(2低级函数,3高级函数)
man 3 printf在man 3手册中查看printf函数说明
man 2 open在man 2 手册中查看open函数说明
help 查看帮助文档
ls --help
info 查看信息页
info ls
3.5 用户管理命令
添加用户
sudo useradd user 添加用户user,不会创建user用户主目录
sudo useradd -m user添加用户user,会创建用户主目录,需要使用passwd重新设置密码
sudo adduser user 添加用户user,会创建用户主目录,会设置密码
修改用户密码
sudo passwd user 修改用户user的密码
用户信息存储在/etc/passwd配置文件中
添加组
sudo groupadd group 向系统添加组
sudo groupdel group 删除group组
组信息存储在/etc/group配置文件中
修改用户的主组
sudo usermod -g group user将user用户的主组修改为group
sudo useradd -g group -m user添加用户user并指定用户的组是group
补充说明:如果使用添加用户具有sudo权限或者root权限则需要修改/etc/sudoers配置文件
3.6文件与目录权限管理
ls -dl 查看目录的长格式
ls -l 查看文件长格式
ls -a 查看所有文件,包含隐藏文件,文件名以.开始的都是隐藏文件,只有ls -a才能查到
如: -rw-r--r-- 1 spring vboxsf 7448 5月 11 21:38 day04.note
-rw-r--r-- 文件权限部分
- 代表普通文件
rw- 代表用户spring对对该文件有读写权限,没有执行权限
r-- 代表vboxf组中的用户对该文件具有读 权限没有写权限与执行权限
r-- 带白哦除过spring用户与vbfbox组中的所有用户以外的其他用户对该文件具有读权限但没有写和执行权限
linux中文件内型有一下几种
- 代表普通文件
l 代表链接文
p 管道文件
s socket文件
c 字符设备文件
linux中权限标记符号有三种
r 读
w 写
x 执行权限
b 块设备文件
文件权限解释
文件读权限(r):可以读取文件内容,cat,vim可以查看到具体文件内容;
文件写权限(w):可以向文件写内容;
文件执行权限(x):文件可执行;
目录权限解释
目录读权限(r):可以查看目录中的文件,ls命令可以查看
目录写权限(w):可以在目录中创建文件,vim,touch
目录执行权限(x):可以切换到目录中,cd
修改文件权限chmod
文件有三种级别的权限,用户级别u,组级别g,其他级别o,
添加权限 u+,g+,o+,a+(a=u+g+o)
删除权限 u-,d-,o-,a-(a=u+g+o)
复制权限 u=,g=,o=,a=(a=u+g+o)
chmod 的选项参数代表的是修改目录以及目录中所有的权限
练习:创建一个文件file.txt使其权限为-r-x--x-w-(512)
-----------(0000)
-rwxrwxrwx(0777)
-rwxrw-r--(0764)
-rwxrw-rw-(0766)
-rw-rw-r-- 1 yinxili yinxili 0 5月 13 19:32 file.txt
sudo chmod u-w,g-r-w+x,o-r+w file.txt 或者sudo chmod 0512 file.txt
修改系统默认权限umask
如果使用umask,u=rwx,g=rw,o=r,等效于umask 0013
如果使用u,g,o配置权限,则权限按照u,g,o的实际权限设置,
如果使用八进制,怎文件实际最低权限为八进制取反后的权限
则系统创建文件时,文件所具有的最低权限是rwxrw-r--
例如:如果系统创建文件时指定权限为rwxr--rw-,则系统市级创建的权限是:(764&746=744)rwxr--r--
修改文件所属用户与组(chown,chgrp)
练习:创建三个用户st01,st02,st03 ,st01所属的组为gp01,st02,st03所属的组为gp02
请设定st01可以查看目录文件dir中的文件,但是不可以在目录中创建文件,st02,st03可以在目录dir中创建文件
答案步骤:(1)创建两个组: gp01,gp02
sudo groupadd gp01
sudo groupadd gp02
(2)创建三个用户,指定用户所属的组
sudo useradd -g gp01 -m st01
sudo passwd st01
sudo useradd -g gp02 -m st02
sudo passwd st02
sudo useradd -g gp02 -m st03
sudo passwd st03
(3)创建文件夹,并修改权限
mkdir dir
sudo chmod u=rx,g=rwx,o=r dir
(4)修改目录的用户与组
sudo chown st01 dir
sudo chgrp gp02 dir
(5)访问权限验证
sudo su st01
ls dir (OK)
touch dir/1.txt (failure)
ctrl+d退出
sudo SU st02
ls dir (OK)
touch dir/1.txt(OK)
ls dir (OK)
3.7文件压缩与解压
tar 命令选项参数解释
-t 查看tar文件内容
-d 创建tar文件
-x 释放tar文件
-z 对.tar.gz文件进行操作
-j 对.tar.bz2文件进行操作
-v 显示过程
-f 对文件进行操作
练习:压缩与归档文件
1.将当前文件目录下的目录111进行归档
tar -cvf 111.tar 111
-------------------day06--------------------------------
2.当前目录下的目录111进行压缩。gz
tar -zcvf 111.tar.gz 111
3.将当前目录下的目录111进行压缩。bz2
tar -jcvf 111.tar.bz2 111
查看压缩与归档文件内容
tar -tvf 111.tar
tar -ztvf 111.tar.gz
tar -jtvf 111.tar.bz2
释放归档与解压压缩文件
tar -xvf 111.tar
tar -zvxf 111.tar.gz
tar -jxvf 111.tar.bz2
3.8系统管理命令
磁盘管理: fdisk,mount,umount,lspci,insmod,rmmod,update-grup,grup-install
查看磁盘分区命令:fidisk
sudo fdisk -l
如果磁盘是GPT,则使用parted/dev/sda查看具体信息
mount挂载磁盘命令
默认情况下,U盘会被自动挂载在/media/目录中
如果需要修改U盘的原始挂载目录,则执行以下命令:
sudo fdisk -l 查看U盘分区
sudo mkdir /mnt/usb(在mnt下创建)
sudo mount -t vfat /dev/sdb4/mnt/usb 或者sudo mount -t ntfs /dev/sdb4 /mnt/usb
解挂U盘 sudo umount /mnt/usb
lspci查看pci总线上的设备
insmod,lsmod,rmmod模块安装查看删除命令
重建引导update-grup
sudo update-grup一般双系统无法识别widows引导时可以使用该命令重建
重新安装引导grup-install
sudo fdisk -l 查看/,/home,swap,/boot所在分区,将ubuntu系统所在分区(例如/dev/sda7)挂在到/mnt下:
mount/dev/sda7/mnt
将ubuntu原有的boot所在分区挂在到/mnt/boot,如果当时未给/boot重新分区,该步骤可以省略:
mount/dev/sda6/mnt/boot
重新安装引导记录:
grub-install -root-directory=/mnt /dev/sda
3.9进程管理命令
touch test.c
vim test.c添加以下内容:
#include<stdio>
int main()
{
printf("hello word\n");
while(1);
}
gcc test.c -o test
./test(运行程序)
ctrl+c 杀死进程
查看进程信息命令ps:
ps -aux 或者 ps -elf
nice -n 10 ./test指定优先级权值运行程序
renice 重新指定优先级权值运行程序
renice 优先级 pid
renice 20 3182
sudo renice -10 3183
ps -aux|grep test
ps -elf|grep test
pstree查看进程树
top 监测进程实时行状态(ctrl+c退出)
kill -9 pid 杀死pid进程号为pid的进程
3.9 前台与后台进程运行切换
./test 8 在后台运行test任务
./test 在前台运行test任务
ctrl+z 将前台进程切换到后台,进程状态为停止状态
jobs 查看后台进程运行状态
bg %n 将后台停止的n号进程设置为继续运行
fg %n 将后台进程切换到前台
3.10 网络管理命令
ifconfig,ping,traceroute,nslookup,netstat,ufw,service,showmount,hostname
ifconfig 查看网卡ip地址信息
ping 测试ip地址是否联通
ping 域名/主机名称/ip
ping localhost
ping www.baidu.com -c 4
ping yinxili-Lenovo-G405
ping 8.8.8.8. -c 4
traceroute 跟踪数据包经过了哪些路由器
nslookup 查看dns工作状态
nslookup 8.8.8.8
netstat 查看网络状态
netstat -a 查看所有网络状态
netstat -r 查看路由表
route 查看路由表
ufw status 查看防火墙状态
ufw enable 打开防火墙
ufw disable 关闭防火墙
sudo service network-manager restart 重启网卡(网络图形界面管管理工具)
sudo service network-manager stop 停止
sudo service network-manager start 启动
hostname 查看主机名称
hostname 123 临时修改主机名称
cat /etc/hostname 修改该文件可以永久修改主机名称
4 服务器搭建
4.1 tftp服务器搭建
4.1.1
1.安装tftp服务端tftpd,客户端tftp,守护段xinetd
sudo apt-get install tftp tftpd xinet
配置tftp文档
sudo vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flgs = IPv4
}
3 创建tftp服务器主目录
sudo mkdir /tftpboot
sudo chmod -R 777 /tftpboot
4 启动tftp服务器
sudo /etc/init.d/xinetd reload
sudo /etc/init.d/xinetd restart
5.查看tftp运行状态信息
sudo netstat -a |grep tftp
6.
7.tftp注意事项
可以使用tftp-hpa,tftpd-hpa高版本,但是低版本与高版本不可以共存,如果已经使用低版本,需将低版本卸载,安装高版本,如果使用低版本,再上传时,需要在服务器目录中存在一个同名并且权限最低的空文件,方可上传成功
4.2 nfs服务器搭建
1 安装nfs服务器
sudo apt-get install nfs-kernel-server
2.修改配置文件
sudo vim /etc/exports
3.创建nfs服务器目录
sudo chmod -R 777 /nfsroot
4.启动nfs服务器
sudo /etc/init.d/nfs-kernel-server restart
5.查看nfs 运行状态
sudo showmount -e
sudo mount -t nfs 127.0.0.1:nfsroot /mnt/nfs
sudo touch /mnt/nfs/1.txt
ls /nfsroot
sudo umount /mnt/nfs
/nfsroot *(rw,sync,no_root_squash)
添加以下内容
5 shell脚本
5.1管道
将第一个命令的输出作为另一个命令的输入
cmd1|cmdz|...|cmdn
who|grep yinxili|wc -l
5.2 输入输出重订向
linux中标准输入输出以及标准错误输出对应的文件描述符是0,1,2
标准输入:从键盘输入
标准输出:输出到终端
错误输出:遇到错误输出到终端屏幕
5.2.3 输出重定向
定义: 将标准输出错误输出重定向到文件流中
ls >1.txt
cat 1.txt
ls -l >1.txt
cat 1.txt
>输出重订向每次会清除原有文件内容
>> 追加输出重定向,每次追加到文件末尾
ls >1.txt
cat 1.txt
ls >>1.txt
cat 1.txt
2> 错误输出重定向,每次会清楚文件原有内容
2>> 错误追加输出重定向,每次追加到文件末尾
lls >1.txt
lls 2>1.txt
&> 正确与错误输出重定向,会清除原有文件内容
&>>正确与错误追加输出重定向会清除原有内容
ls &>1.tx
lls &>>1.txt
5.2.4 输入重定向
输入重定向是使用文件的输入流代替原有标准输入流<
cat <1.txt >2.txt
5.3 shell脚本编程
高级语言有两种一种是编译性语言一种是 shell语言是一种解释性语言,编译性语言如C语言,解释性语言,java,script,shell
5.3.1创建shell脚本的过程
1.创建文件
2.给shell脚本添加执行权限:sudo chmod u+x sh01
3.添加shell脚本头部信息 :#!/bin/sh
4.编写shell脚本
5.运行shell脚本:./sh01
例如:
touch sh01
vim sh01
添加以下内容
who |grep $1 |wc -l
保存退出
sudo chmod u+x sh01
./sh01 yinxili
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ vim sh01
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ sudo chmod u+x sh01
[sudo] password for yinxili:
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ ./sh01 st03
./sh01: 2: ./sh01: Syntax error: "|" unexpected
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ vim sh01
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ sudo chmod u+x sh01
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ ./sh01 st03
0
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ ./sh01 yinxili
3
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ who
yinxili :0 2016-05-15 08:40 (:0)
yinxili pts/2 2016-05-15 08:41 (:0)
yinxili pts/4 2016-05-15 09:10 (:0)
5.3.2 shell变量
shell定义的变量有:自定义变量,位置变量,环境变量,预定义变量
shell自定义变量有两种变量,字符串变量以及数值变量
shell定义变量的语法结构:变量名=数值
变量名=字符串
变量名=“字符串”
变量名=‘字符串’
如何使用shell变量语法结构:&变量名 含义:取变量的值
shell位置变量
$0终端命令名称
$1~$9终端命令的参数
$#命令参数的个数
$@命令参数集合
$*命令参数集合
$$命令的进程号
例如:sh02
#! /bin/sh
echo $0
echo $#
echo $1
echo $2
echo $3
echo $@
echo $*
echo $$
echo $?
shell环镜变量
PATH 系统默认路径信息
HOME 用户主目录路径
echo $PATH
echo $HOME
5.3.3 shell expr运算
bash shell中使用expr命令计算表达式
shell中常使用的常规运算符有:+,-,\*,/
例如 a=1
b=2
求 a+b则
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ a=1
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ b=2
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ c=`expr $a + $b`
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ echo $c
3
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ expr $a + $b
3
yinxili@yinxili-Lenovo-Gz405:~/sqzj1517/shell$ unset a
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ unset b
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$
5.3.4shell输入与输出
shell输入语句是read
shell输出语句是echo
read使用语法结构:read 变量名1 变量名2 ... 变量名n
echo适用语法结构:echo $变量名
echo 字符串
练习:sh03
要求输入两个数:计算其和差积商
#! /bin/sh
echo 请输入a与b
read a b
echo a/b=`expr $a / $b`
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ ./sh03
请输入a与b
1 2
a+b=3
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ vim sh03
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ ./sh03
请输入a与b
3 2
a-b=1
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ vim sh03
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ ./sh03
请输入a与b
2 3
a*b=6
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ vim sh03
yinxili@yinxili-Lenovo-G405:~/sqzj1517/shell$ ./sh03
请输入a与b
6 2
a/b=3
5.3.5 shell测试语句
test
-d name 测试name是否为一个目录
-l name 测试name是否为一个链接文件
-f name 测试name是否为一个普通文件
-r name 测试namename文件是否具有r权限
-w name 测试name文件具有w权限
-x name 测试name文件具有x权限
-s name 测试name字符串的长度是否为0
file1 -nt file2 测试file1是否比file2长
file1 -ot file2 测试file1 是否比file2旧
s1 = s2 判断s1是否与s2相等
s1 != s2 判断s1是否与s2不相等
-z s 判断字符串是否为空
-n s 判断字符串是否不为空
数值判断
a -eq b 判断a与b是否相等
a -gt b 判断a是否大于b
a -ge b 判断a是否大于等于b
a -lt b 判断a是否小于b
a -le b 判断a是否小于等于b
5.3.6shell程序结构
顺序结构,分支结构,多路分支结构,循环结构,函数
顺序结构:命令表,由一系列顺序的命令组成
分支结构:if if...else...if else
5.3.6.1分支结构
if...then...fi
语法结构:
if 表达式
then 命令表
fi
表达式可以使用test语句或者[]语句实现
练习:sho4
输入一个文件名称然后判断该文件是否为目录文件
#! /bin/sh
read name
if test -d $name或者 if [ -d $name ]
then echo
exit "是目录文件"
fi
if...then...else fi
语法结构
if 表达式
then 命令表
else 命令表
fi
练习:sh05
判断一个文件是目录或者是普通文件
#! /bin/sh
echo 请输入一个文件名称
read name
if [ -d $name ]
then echo "$name 是一个目录"
exit
else if [ -f $name ]
then echo "$name 是一个文件"
exit
fi
fi
echo "$name 不是一个目录或普通文件"
5.3.6.2多路分支语句
case ...esac的语法结构是:
case $varname in
模式1)命令表1
;;
模式2)命令表2
;;
模式3)命令表3
;;
...
*)命令表n
esac
练习:要求输入: 1 + 2
输出: 3
要求输入:1 * 2
输出:2
#! /bin/sh
echo 请输入要计算的表达式
read a op b
case $op in
+) c= `expr $a + $b`
;;
-)c=`expr $a - $b`
;;
\*) c=`expr $a \* $b`
;;
/) c=`expr $a / $b`
;;
esac
echo "$a $op $b = $c"
5.3.6.3循环语句
for循环语句
while循环语句
until循环语句
5.3.6.3.1 for循环语句语法结构
for 变量名 in 变量表
do
命令表
done
for循环语法结构1说明:变量每次循环所取的值来自命令行参数的输入,输入即$@集合的内容;
例如:终端中输入:./sh07 1 2 3 4 5
sh07:源码如下:
#! /bin/sh
for a
do
echo $a
done
输出结果为12345
for循环语句语法结构2说明:for中的变量来自自语变量表中的内容
练习:sh08
查看当前路径下指定的文件是否存在
#! /bin/sh
echo "请输入要查看的文件名称"
read name
file=`ls`
for filename in $file
do
if [ $name = $filename ]
then if [ -d $name ]
then echo "$name 是一个目录"
exit
fi
if [ -f $name ]
then echo "$name 是一个普通文件"
exit
fi
fi
done
echo "当前目录中不存在该文件"
for循环语句语法结构2
for 变量名 in 变量表
do
命令表
done
5.3.6.2while循环语句
while 表达式
do
命令表
done
练习:sh09
根据指定文件的前缀以及要创建文件的数量,批量创建文件
#! /bin/sh
echo "请输入你要创建文件的前缀"
read file
echo "请输入你要创建文件的数量"
read n
i=1
while [ $i -le $n ]
do
touch "$file$i" # >"$filele$i"
i=`expr $i + 1`
done
5.3.6.4函数
shell函数语法结构
function_name()
{
命令表1 #$1代表一个参数,$2代表第二个参数
命令表2
......
命令表n
}
函数调用部分:
functin_name $a $b $c #函数调用传参
r=$?# 函数返回值
练习:sh10
使用函数比较两个数的大小
#! /bin/sh
max()
{
if [ $1 -ge $2 ]#$1第一个参数,$2第二个参数
then return $1
else return $2
fi
}
read a b
max $a $b
c=$? #max函数返回值
echo $c
5.3.6.5全局与局部变量
定义shell局部变量的关键字local
练习:sh11
local关键字的使用
#! /bin/sh
function()
{
set -x
echo "a=$a"
echo "b=$b"
local a=10
b=11
echo "a=$a"
echo "b=$b"
echo "--------end function-------"
set +x
}
a=1
b=2
echo "a=$a"
echo "b=$b"
function
echo "a=$a"
echo "b=$b"
(根(boot)——dev存放设备文件,home用户目录,lib动静太库,etc系统配置,user应用文件)
3.x补充命令
vim sp vsp
ctrl+w w(窗口切换命令)(./shell/sh02打开一个窗口在当前路径下shell目录下的sh02目中)
qall 退出所有窗口
wall 保存所有窗口
如何在vim中启用鼠标:sudo vim /etc/vim/vimrc
添加启用鼠标