最全Linux Shell详细教程

news2024/11/23 4:20:54

一、环境准备

我们在这里就在本地测试学习,因此我在这里先不建议大家这么着急去买服务器来学,这样比较费钱,等我们学好这些基础之后,再去上手服务器,那将是手到擒来。 本地学习工具:虚拟机 如果你没有该工具,请按照这个操作安装:虚拟机安装配置教程 当然,如果你有钱,阿里云,腾讯云自己租一个也可以。

二、hello Linux

创建shell脚本,命名test,格式统一为.sh

touch test.sh

编辑脚本:

vim test.sh

如果你不了解vim用法,或者你的虚拟机没有安装vim,看这一篇文章前面部分:cat详细教程顺便你也可以学一下cat命令。这里大概演示一下: 先输入如下命令回车

vim test.sh

按一下字母i键,即可编辑,我就输入hello Linux,你也可以写别的内容,不一定为英文

编辑好内容后,按一下ESC键,再输入:wq! (表示强制保存退出的意思),回车即可。

如上则是保存成功。

三、运行shell脚本

首先赋予权限:

chmod 777 test.sh

执行脚本:

./test.sh

演示:

四、shell变量

1)普通变量

变量就很简单,比如我我要给变量a赋值为“川川帅哥“,则是:

a="川川帅哥"

使用打印变量呢?

echo $a

你可以在这里把echo理解为python的print,c语言的printf之类。

现在我们还是新建一个sh来进行测试

touch test1.sh

编辑文件:

vim test1.sh

编辑内容如下:

操作界面如下:

你可以看到,我开始忘记给文件权限,所以执行的时候显示权限不够。所以不要忘记赋予权限。

2)只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。举个例子。 创建新的文件并编辑:

编辑内容如下:

执行则会报错:

实际上这样的变量,我们一般也不怎么用,个人认为了解一下就是。

3)删除变量

使用函数unset,跟上面操作一样,就不演示了,也是作为了解就行。

c="川川菜鸟"
unset c
echo $c

以上实例执行将没有任何输出。

五、Shell 字符串

1)单双引号

字符串可以用单引号,也可以用双引号,也可以不用引号。 创建内容为:

a='川川菜鳥'
b="川川帥哥"
echo $a
echo $b

演示:

完整演示:

单引号特点:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

双引号特点: - 双引号里可以有变量 - 双引号里可以出现转义字符

2)字符串拼接

a="chuan"
b="chuan"
c=" $a$b"
echo $c

如下:

完整演示如下:

3)获取字符串长度

在上面的基础之上加上echo ${#c}即可:

a="chuan"
b="chuan"
c=" $a$b"
echo $c
echo ${#c}

完整演示:

4)字符串提取

我们在前面的基础之上加上一点即可,我们主要是用切片的方法来来获取,什么是切片?如果你跟我一起学过python那你不会不知道,就不讲解了。 编辑保存内容如下

a="chuan"
b="chuan"
c=" $a$b"
echo $c
echo ${#c}
echo ${a:1:3}

即:

完整演示:

六、Shell 数组

1)读取索引数组

Shell 数组用括号来表示,元素用空格符号分割开。 sh文件内容为:

a=(A B "C" D)
echo $a

完整演示为:

但是你是否在疑惑只输出的第一个,shell里我们不能像别的语言一样,直接输出全部,因此我们要修改一下。 改为这样:

a=(A B "C" D)
echo ${a[0]}
echo ${a[1]}
echo ${a[2]}
echo ${a[3]}

保存再次运行:

2)获取数组中的所有元素

如果想一次性全部输出,并不想通过索引来输出怎么办?使用@ 或 * 可以获取数组中的所有元素,在上面的基础上我再编辑加两行:

a=(A B "C" D)
echo ${a[0]}
echo ${a[1]}
echo ${a[2]}
echo ${a[3]}
echo "數組元素依次如下:${a[@]}"
echo "數組元素依次如下:${a[*]}"

完整演示:

3)获取数组的长度

在前面的基础之上加上:

echo "數組元素個數爲:${#a[@]}"
echo "數組元素個數爲:${#a[*]}"

演示如下:

七、shell运算符

算术运算符

演示其中一部分,其它则类似:

a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
   echo "a 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi

完整演示如下:

注意事项:

  • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
  • 完整的表达式要被 两个反引号 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
  • 乘号(*)前边必须加反斜杠()才能实现乘法运算;
  • if...then...fi 是条件语句,后续将会补充讲解。

其它运算符就不讲了,主要掌握下算数运算符。

八、Shell echo命令

你可以直接在终端输入这样的单行命令来测试学习,不用一直创建新的文件。

1)显示普通字符串

echo "hello world"

这里的双引号完全可以省略,以下命令与上面实例效果一致:

echo hello world

完整演示如下:

2)显示转义字符

echo "\"hello world\""

演示如下:

3)显示换行

使用\n换行:

echo -e "hello\n"

演示如下:

4)显示不换行

echo -e "chuan! \c" # -e 开启转义 \c 不换行

演示:

5)显示结果重定向至文件

定向至test7.sh文件:

echo "hello world" >test7.sh

演示:

6)显示执行时间

echo `date`

演示:

这里又到了最后了,补充一下printf跟echo命令是一样的作用,因此我就不演示了,统一用echo来输出。

九、Shell test 命令

1)数值测试

参数和说明如下:

-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

演示一个参数如下:

num1=200
num2=200
if test $[num1] -eq $[num2]
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi

即:

完整演示如下:

到这里我先把前面创建的文件删了:

rm -rf test1.sh test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh test8.sh

演示:

代码中的 [] 执行基本的算数运算,例如:

a=10
b=10

result=$[a+b] # 注意等号两边不能有空格
echo "result結果为: $result"

完整演示如下(我新建了一个文件夹,免得打乱了):

我仅仅演示了加法,你也可以去尝试一些别的计算。

2)字符串测试

参数如下:

=   等于则为真
!=  不相等则为真
-z 字符串  字符串的长度为零则为真
-n 字符串  字符串的长度不为零则为真

演示一个如下:

num1="chuan"
num2="chuan"
if test $num1 = $num2
then
    echo '两个字符串相等!'
else
    echo '两个字符串不相等!'
fi

即:

完整演示如下:

3)文件测试

参数:

-e 文件名  如果文件存在则为真
-r 文件名  如果文件存在且可读则为真
-w 文件名  如果文件存在且可写则为真
-x 文件名  如果文件存在且可执行则为真
-s 文件名  如果文件存在且至少有一个字符则为真
-d 文件名  如果文件存在且为目录则为真
-f 文件名  如果文件存在且为普通文件则为真
-c 文件名  如果文件存在且为字符型特殊文件则为真
-b 文件名  如果文件存在且为块特殊文件则为真

举一个例子:

if test -e ./test1.sh
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi

完整演示如下:

其它参数可以自行测试。

十、shell 控制流

1)if判断流

if else fi 语法格式如下:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

举个例子:

-gt 大于则为真

测试代码如下:

a=5
b=6
if test [$a -gt]
then
        echo '大於'
else    
        echo '小於'
fi

完整演示如下:

再来进阶测试代码如下:

a=5
b=6
if test [$a==$b]
then
        echo '等於'
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

完整演示如下:

2)for 循环

语法:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

写成一行则是:

for var in item1 item2 ... itemN; do command1; command2… done;

举例子如下:顺序输出当前列表中的数字

for a in 1 2 3 4 5
do
    echo "值依次爲: $a"
done

完整演示如下:

再例如:顺序输出字符串中的字符

for str in hello chuan chuan
do
    echo $str
done

完整演示如下:

我们再来个进阶:打印任意数的乘法表

echo "输入一个数:"
read num
for ((  i=1;i<=$num;i++  ))
do
   for ((  j=1;j<=$num;j++  ))
   do
      [  $j  -le  $i  ]  &&  echo -n "${i}*${j}=$((i*j))      "    #判断j是否小于i,当
j大于i时不输出,输出不换行,末尾加一个制表符
   done
   echo ""           #输出一个换行符                
done

完整演示如下:

3)while循环

语法格式:

while condition
do
    command
done

举例为:依次输出1到6

int=1
while(( $int<=6 ))
do
    echo $int
    let "int++"
done

完整演示如下:

4)until 循环

until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反。 语法为:

until condition
do
    command
done

condition 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环。 举个例子:使用 until 命令来输出 0 ~ 6 的数字

a=0

until [ ! $a -lt 6 ]
do
   echo $a
   a=`expr $a + 1`
done

完整演示如下:

5)case ... esac

case ... esac 为多选择语句,与C语言中的 switch ... case 类似,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束. 语法为:

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

举例:提示输入 1 到 4,与每一种模式进行匹配

echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read a
case $a in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

完整演示如下:

6)跳出循环

break break命令允许跳出所有循环(终止执行后面的所有循环)。 测试代码如下:

do
    echo -n "输入 1 到 5 之间的数字:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
            b

完整演示如下:

continue continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。 测试代码为:

while :
do
    echo -n "输入 1 到 5 之间的数字: "
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的!"
            continue
            echo "游戏结束"
        ;;
    esac
done

完整演示如下:

是不是有人想问我怎么结束呢?ctrl+c强制结束即可。

十一、Shell 函数

花里胡哨的语言我就不说了,来看一个demo函数:

demoFun(){
    echo "測試一下我的函數!"
}
echo "函数开始执行"
demoFun
echo "-函数执行完毕"

如果你学过别的语言,你一定一眼就看懂了。 完整演示如下:

到这里我再插入一个例子:从键盘读入10个数,显示最大值和最小值 代码为:

printf "请输入十个数字: "  
read   
biggest=$(echo "$REPLY" | tr ' ' '\n' | sort -rn | head -n1)  
smallest=$(echo "$REPLY" |  tr ' ' '\n' | sort -rn | tail -n1)  
echo "最大的数字为:  $biggest"  
echo "最小的数字为:  $smallest"

完整演示如下:

下面定义一个带有return语句的函数: 代码为:

add(){
    echo "这个函数为求两个函数之和.."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read bNum
    echo "两个数字分别为 $aNum 和 $bNum !"
    return $(($aNum+$bNum))
}
add
echo "输入的两个数字之和为 $? !"

完整演示如下:

十二、Shell 输入/输出重定向

相关参数如下:

command > file  将输出重定向到 file。
command < file  将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
n > file    将文件描述符为 n 的文件重定向到 file。
n >> file   将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m  将输出文件 m 和 n 合并。
n <& m  将输入文件 m 和 n 合并。
<< tag  将开始标记 tag 和结束标记 tag 之间的内容作为输入。

做一些例子:

1)输出重定向

将输出重定向到wen文件夹

再比如我把test16.sh这个文件重定向到han这个文件

这样的重定向有一个缺点就是会覆盖原来的内容,如果你不想覆盖原来的内容,你可以使用:

command >> file 将输出以追加的方式重定向到 file。

完整演示如下:

如此我们可以看到已经追加进去了。

2)输入重定向

如果要数一下文件夹内有多少行:

wc -l wen

如果我们用重定向的方式,将输入重定向到 wen文件:

wc -l <  wen

演示为:

3)Here Document

Here Document 是 Shell 中的一种特殊的重定向方式,用来将输入重定向到一个交互式 Shell 脚本或程序。 语法为;

command << delimiter
    document
delimiter

举个例子:

wc -l << EOF
   欢迎大家
   这里是川川菜鸟
   教程
EOF

演示:

也可以以脚本方式执行:

cat << EOF
    欢迎大家
   这里是川川菜鸟
   教程
EOF

演示如下:

4)/dev/null 文件

如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:

十三、实战练习

1)Linux例题

如果以下操作你看不懂的话,请看我这一篇文章,看完这一篇文章后,你就看得懂了:cat详细教程 输入输出重定向: ①新建文件file1,输入: Hello, Linux! 保存并退出。新建文件file2,输入: World! 保存并退出。 将file1和file2的内容显示在终端上,并重定向到文件file3。 将file1的内容追加到文件file3。

操作步骤: 1.创建一个新的文件夹work

mkdir work

2.切换目录

cd work/

完整演示:

3.创建并编辑新文件

touch file1

编辑文件

vim file1

查看文件:

cat file

完整演示:

4.创建另一个文件 同样的道理,完整演示如下:

5.重定向到file3文件

cat file1 file2 >>file3

完整演示如下:

6.将file1的内容追加到文件file3

cat file1>>file3

完整演示如下:

②管道: 统计文件file3中出现“hello”的行数并显示

grep Hello file3 |wc -l

演示如下:

③管道和输入输出重定向: 进入目录/home/student,用ls –l长格式的方式列出当前目录下的文件和目录,并将其前5条信息保存到文件list中。 创建新文件夹,并编辑list.txt内容如下:

file1
file2
file3
file4
file5
file6
file7

完整演示:

查看一下:

查看当前目录下文件和目录

ls -al

演示:

筛选前5的数据加到file3中:

ls -l |head -n 5 >>list.txt

完整演示如下:

2)shell练习题

① 在/home目录中创建50个目录,目录名称依次为:a1,……,a50; 创建一个sh文件:

touch 1.sh

内容为:

i=1

while [ $i -le 50 ]

do

mkdir a$i

i=$((i+1))

done

完整演示:

② 编写一个程序,它的作用是:先查看一下/root/test/logical这个名称是否存在。若不存在,则创建一个文件,使用touch来创建,创建完成后离开;如果存在,判断该名称是否为文件,若为文件,则显示其行数;如果不是文件,则离开; 创建2.sh

touch 2.sh

内容为:

if [ ! -e /home/yifan/maying/shell/case5/logical ]  
then
    touch logical  
elif 
    [ -f /home/yifan/maying/shell/case5/logical ]  
then 
    rm -f /home/yifan/maying/shell/case5/logical && mkdir /home/yifan/maying/shell/case5/logical  
elif 
    [ -d /home/yifan/maying/shell/case5/logical ]  
then 
    rm -r /home/yifan/maying/shell/case5/logical  
fi

演示如下:

查看一下:

③编写一个shell脚本,从键盘读入10个数,显示最大值和最小值

printf "请输入十个数字: "  
read   
biggest=$(echo "$REPLY" | tr ' ' '\n' | sort -rn | head -n1)  
smallest=$(echo "$REPLY" |  tr ' ' '\n' | sort -rn | tail -n1)  
echo "最大的数字为:  $biggest"  
echo "最小的数字为:  $smallest"

完整演示如下:

④ 编写一个脚本,打印任何数的乘法表。如:输入3,则打印 11=1 21=2 22=4 31=3 32=6 33=9 代码如下:

echo "输入一个数:"
read num
for ((  i=1;i<=$num;i++  ))
do
   for ((  j=1;j<=$num;j++  ))
   do
      [  $j  -le  $i  ]  &&  echo -n "${i}*${j}=$((i*j))      "    #判断j是否小于i,当
j大于i时不输出,输出不换行,末尾加一个制表符
   done
   echo ""           #输出一个换行符                
done

完整演示如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/746056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ES6~ES13新特性(一)

1 ECMA新描述概念 2 let、const的使用 3 let、const和var区别 4 块级作用域的使用 5 模板字符串的详解 6 ES6函数的增强用法 一个执行上下文关联两个环境。词法环境和变量环境。 词法环境是由let和const创建&#xff1b;变量环境是由var创建的。 let-const的基本使用、不能…

网络安全现状,一个黑客真实的收入

前言 上次带大家了解了什么是黑客&#xff0c;黑客是干嘛的&#xff0c;今天就来看看黑客的收入和方向怎么样。 一个黑客年薪是多少呢&#xff1f; 外界普遍认为黑客是高收入群体&#xff0c;那么你想过黑客是怎么赚钱的吗&#xff1f;黑客分为白帽黑客和黑帽黑客&#xff0…

R语言实现SMOTE与SMOGN算法解决不平衡数据的回归问题

本文介绍基于R语言中的UBL包&#xff0c;读取.csv格式的Excel表格文件&#xff0c;实现SMOTE算法与SMOGN算法&#xff0c;对机器学习、深度学习回归中&#xff0c;训练数据集不平衡的情况加以解决的具体方法。 在之前的文章Python实现SMOGN算法解决不平衡数据的回归问题&#x…

源码安装 gcc遇到的问题

1、需要的工具和库的安装1 见https://gcc.gnu.org/install/preprequisites.hml 2、源码下载和依赖的工具的源码的下载 在https://gcc.gnu.org/mirrors.html中选择一个镜像源的链接打开&#xff0c;下边以日本的源(http://ftp.tsukuba.wide.ad.jp/software/gcc/)为例。 2.1 …

MySQL数据库的备份与还原、视图基础操作

一、备份与还原 1、使用mysqldump命令备份数据库中的所有表 mysqldump -uroot -p#$%#*#^* booksDB authorbook authors books > /backup/db/booksDB.spl 2、备份booksDB数据库中的books表 mysqldump -uroot -p*&*&……%&#xffe5;#&#xffe5;% booksDB books …

FreeRTOS(任务调度)

任务调度 什么是任务调度&#xff1f; 调度器就是使用相关的调度算法来决定当前需要执行的哪个任务。 FreeRTOS中开启任务调度的函数是 vTaskStartScheduler() &#xff0c;但在 CubeMX 中被封装为 osKernelStart() 。 FreeRTOS的任务调度规则是怎样的&#xff1f; FreeRTOS…

QT禁用窗口【关闭】按钮的实现方法

QT禁用窗口关闭按钮的实现方法&#xff0c;直接在窗体类构造函数的内部写入setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint)即可实现&#xff0c;案例如下&#xff1a; #include "form.h" #include "…

apache 安装配置 基础篇(三) 之 虚拟机、主服务等、默认虚拟主机、serverpath、DocumentRoot Directory

apache虚拟主机类型有两种 1、基于名称的虚拟主机 2、基于地址或IP地址的虚拟主机 基于名称的虚拟主机 但是如果不用域名&#xff08;host&#xff09;就没有办法区分了&#xff0c;而执行第一个匹配的网站了(第一个虚拟主机所处理) ## httpd-vhosts.conf 添加如下代码&…

选择合适的软件,提升工作计划效率

在快节奏的工作环境中&#xff0c;日程安排变得尤为重要。有许多不同的软件可用于帮助管理日程&#xff0c;但哪个软件最适合您的需求&#xff1f;在本文中&#xff0c;我们将介绍几种适合工作安排的软件。 1.Google Calendar Google日历是一种功能强大、易于使用且免费的日历应…

Orange pi3初调试

因为树莓派沦为理财产品1年前出手殆尽后&#xff0c;现在唯一一个B性能不足一直没动力调试&#xff0c;沦为吃灰工具。 偶然之间多多给推了个orange产品预售&#xff0c;看了下pi3的参数&#xff0c;这不和赚了差价的3B一个性能吗&#xff1f;果断定了个预售款&#xff0c;在差…

机器学习洞察 | 挖掘多模态数据机器学习的价值

在过去的数年里&#xff0c;我们见证了机器学习和计算机科学领域的很多变化。人工智能应用也愈趋广泛&#xff0c;正在加速融入人们的日常生活之中。机器学习作为技术核心&#xff0c;也在持续地发展进化&#xff0c;在更多领域发挥出越来越重要的作用。**机器学习会有哪些新的…

python 将 csv转excel (.xls和.xlsx)的几种方式

前言 excel 后缀有2种格式&#xff0c; .xls 是从 Excel 97 到 Excel 2003 的默认文件格式&#xff0c;而 .xlsx 是 Excel 2007 及更高版本的默认文件格式。 .xlsx和.xls格式的主要区别在于&#xff0c;.xls格式单个工作表最多支持65536行&#xff0c;256列。 .xlsx格式最多…

torch分布式训练笔记

torch分布式训练笔记 1. 数据并行&#xff08;DistributedDataParallel&#xff09;2. 模型并行&#xff08;单机多卡&#xff09;3. 混合并行&#xff08;数据并行 模型并行/PipeLine并行&#xff09; 1. 数据并行&#xff08;DistributedDataParallel&#xff09; 官方文档…

github搜索案例

目录结构 public/index.html <!DOCTYPE html> <html lang""><head><meta charset"utf-8"><!-- 针对IE浏览器的一个特殊配置&#xff0c;含义是让IE浏览器以最高的渲染级别渲染页面 --><meta http-equiv"X-UA-Comp…

海量文件高速传输解决方案(基于Rsync)

​​随着互联网的飞速发展和社会的数字化转型&#xff0c;企业信息化建设推动了数据的快速增长&#xff0c;越来越多的信息服务依赖海量数据的采集与应用。传统的FTP、网盘等工具无法满足海量数据的传输与分发&#xff0c;导致企业无法高效完成海量数据传输 。 传统的ftp传输效…

【使用驱动代码实现如下要求 应用程序通过阻塞的io模型来读取number变量的值】

驱动应用层代码 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <sys/ioctl.h> #include "head.h"…

记一次JVM调优过程

文档修订记录 版本 日期 撰写人 审核人 批准人 变更摘要 & 修订位置 JVM相关理论 JVM内存 可分配内存&#xff1a; JVM可以调度使用的总的内存数&#xff0c;这个数量受操作系统进程寻址范围、系统虚…

学无止境·MySQL⑦(索引和视图)

索引和视图练习 索引练习1、建立一个utf8编码的数据库test12、建立商品表goods和栏目表category3、删除 goods 表中的 goods_desc 字段及货号字段,并增加 click_count 字段4、在 goods_name 列上加唯一性索引&#xff08;用alter table方式&#xff09;5、在 shop_price 列上加…

基于linux下的高并发服务器开发(第一章)-GCC(1)1.2

打开XShell,在连接虚拟机Ubuntu的窗口中输入&#xff1a;sudo apt install gcc g gcc -v,查看gcc的版本,gcc version 7.5.0 也可以是gcc --version,查看信息相对少一些 g -v g --version ls查看当前目录的文件/文件夹 cd Linux/ 进入Linux文件夹 mkdir lession02 创建lession0…

校内VPN如何访问web of science?

web of science简介 Web of Science是获取全球学术信息的重要数据库&#xff0c;它收录了全球13000多种权威的、高影响力的学术期刊&#xff0c;内容涵盖自然科学、工程技术、生物医学、社会科学、艺术与人文等领域。Web of Science收录了论文中所引用的参考文献&#xff0c;通…