Vim学习笔记

-----------------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
 添加启用鼠标
 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值