Linux学习记录(持续更新......)

Linux学习记录(持续更新......),第1张

Part1.使用编辑器 gedit编辑器

建简单易懂,依赖图形界面(类似windows系统下文件 *** 作,可以ctrl+c等 *** 作)

vi/vim

vi与vim区别:

vim是vi的升级版,兼容vi

vi按u只能撤销上次命令,而在vim里可以无限制的撤销

vi只能运行于类uninx系统中,而vim可以运行unix,windows,mac等多 *** 作平台

vim可以用不同颜色来高亮代码

可通过vimrc文件配置更高级的功能

vi/vim的使用

安装:

sudo apt install vim

vi/vim的三种模式

一般模式(默认模式)

        完成文本浏览、内容查找、复制粘贴等功能,不能进行文件的修改等 *** 作

插入模式(编辑模式)

        用于对文件编辑

命令行模式

        配置vi编辑器的一些属性跟功能,如设置行号和代码高亮等

模式切换 

上述三种模式可以通过命令进行模式切换,打开vi后默认进入一般模式

 打开vi编辑器

vi

vi 文件夹

 进入/退出插入模式快捷键

快捷键                功能描述

i                          在当前光标所在位置插入文本

a                         在当前光标所在位置的下一个字符插入文本

o                         在光标所在位置后插入新行

r                          替换当前光标所在位置的字符

R                         可以替换当前光标所在位置之后的字符,按下ESC则退出

ESC                    退出插入模式

 一般模式快捷键

/word                在文件中搜索关键字word

u                       撤销上一步的 *** 作,等价于windows ctrl+z

dd                     删除当前行

ndd                   删除光标后n行

x                       剪切光标选中的字符

y                       复制光标所选的内容

yy                     复制当前行

nyy                   复制当前行后n行

P                      将复制的数据粘贴到当前行的下一行

p                      将复制的数据粘贴到当前行的上一行

命令行模式快捷键(按ESC退到一般模式,再输入:进入命令行模式,即可执行以下指令)

w                 保存文档

w       另存为以xxx为文件名的文档

r        读取文件名为xxx的文件

q                 直接退出软件,前提是文档未做任何修改

q!                不保存修改,直接退出软件

wq              保存文档,并退出软件

set nu         在首航行加入行号

set nonu     不显示行号

set hisearch 搜索结果高亮显示

!command    回到终端窗口,执行command命令,按回车切回vim

Part2.Shell脚本简介 Shell脚本是什么

shell命令是按一定语法组成的文件。

Shell脚本有什么用

批量处理文件/整合shell命令

软件启动

性能监控

日志分析等

Shell命令的本质

内置命令(如cd、ls)/外部命令

先在内置命令,找不到再在path对应的文件路径下找外部命令

通过type可以区分一个命令是内置命令还是外部命令  eg:  type cd     查询cd是内置还是外部命令

shell在启动的时候,已经设置了path环境变量,记录了外部命令所对应的应用程序的目录

小实验

目的:用c语言写一个应用程序,然后把这个程序变成一个shell命令

应用程序功能:打印hello world!

步骤:

1、sudo vi hello.c

2、在文件里写入代码:(打印hello wold!),然后:wq保存退出

#include 

int main()
{
    printf("hello world!\n");
    return 0;
}

3、使用gcc编译器把hello.c编译成一个应用程序

gcc hello.c -o hello

此时,ls可以看到hello应用程序已经编译出来了(绿色hello)

 4、运行这个程序

./hello

可以看到打印出来了hello world!

 5、查看环境变量路径

echo $PATH

6、把hello应用程序放到其中一个路径里,就成了shell外部命令了,如移到/usr/bin里

sudo mv hello /usr/bin

7、现在直接输hello就可以运行hello程序了,此时hello程序就是一个shell外部命令了

Shell脚本语言和C语言一样吗?

编译型语言(c语言):如上在执行hello.c时,需要先gcc hello.c-o hello把hello.c编译成一个二进制可执行文件hello,然后 *** 作系统才能去运行这个文件。类似这种需要借助编译器,来把源文件编译成可执行文件的语言,叫做编译型语言。

解释型语言(shelli脚本语言)如上在终端只需输入hello这个外部命令,然后shell就会把这个外部命令解析成一个对应的应用程序,接着就可以借助 *** 作系统运行这个应用程序。类似于这种借助解析器去运行的语言,叫做解释型语言。

常用的解释器有哪些?

/etc/shells 查看

练习:写一个最简单的shell脚本

步骤:

1、sudo vi hello.sh    (shell脚本惯用的后缀名就是.sh)

2、打开后先用#!指定使用shell脚本的解释器,linux里默认的是/bin/bash  这个解释器

#!/bin/bash

3、指定完解释器后就写入shell脚本需要实现的功能  (输出hello world!)

echo "hello world!"

4、:wq保存退出

#!/bin/bash

echo "hello world!"

5、回到终端后,需要修改shell脚本的可执行权限,因为现在的脚本没有执行权限

sudo chmod 777 hello.sh

6、修改之后就可以运行了,可以看到终端打印出了hello world!

./hello.sh

Shell脚本的启动方式  

1、当作应用程序执行    ./hello.sh

2、指定一个解释器来运行脚本,如指定bin目录下的bash        /bin/bash hello.sh

3、通过source命令.       source hello.sh           

4、通过.                    .hello.sh

 Shell脚本语法讲解

定义变量

直接赋值 variable=value  (适用于变量的值没有空格或字符)                  注意:变量跟=之间以及=与值之间不能有空格

#!/bin/bash

var=666

echo "$var"

单引号赋值 variable='value'           (适用于变量的值有空格或字符)        

双引号赋值 variable="value"    (适用于变量的值没有空格或字符,可以引用已经赋值的变量)       

#!/bin/bash

var="1234 567"
var1="${var}aa"
echo "$var1"

使用变量

$variable       (这种方法不会自动识别变量,而是把整串看作一个变量)

如下:想输出1234bb,但$var不会自动识别var这个变量,而是把整串varbb看作一个变量,而我们并没有把这一整串定义成一个变量,只定义了var,所以结果会输出一个空符。

#!/bin/bash

var="1234"
echo "$varbb"

${variable}  这种方法解决如上问题,可以进行边界区分,区分出变量

#!/bin/bash

var="1234"
echo "${var}bb"

将命令的结果赋值给变量

方法1:

variable=`command` (反引号,TAB键的上方) 

如:通过pwd命令打印var的路径

#!/bin/bash

var=`pwd`
echo "$var"

方法2: 

variable=$(command) 

#!/bin/bash

var=$(pwd)
echo "$var"

删除变量

unset 

 读取从键盘输入的数据

read

退出当前进程

exit

对整数进行数学运算

(())             运算符()前面要加$用于运算结果的获取,()里不需要再加$,因为会自动识别变量

 逻辑与/或

command1 && command2

cammand1 || command2

 检测某个条件是否成立 (如检测上面command1是否成立)

test 表达式和 [ 表达式 ]

-ep                判断数值是否相等

例:判断a和b是否相等,如果是则输出a=b,反之输出空符

-ne                判断数值是否不相等

-gt                 判断数值是否大于

-lt                  判断数值是否小于

-ge                判断数值是否大于等于

-le                 判断数值是否小于等于

-z str             判断字符串str是否为空

-n str             判断字符串str是否为非空

=和==           判断字符串是否相等

-d filename   判断文件是否存在,并且是否为目录文件

-f filename    判断文件是否存在,并且是否为普通文件                  

管道    (将两个或多个命令连接到一起,上一个命令的输出信息,会输给下一个命令,作为下一个命令的输入信息)

command1 | command2

if语句

if 条件表达式

then

        xxxxx

fi 

if else语句

if condition

then

        statement1

else

        statement2

fi

 if elif else语句

if condition

then

        statement1

elif condition2

then

        statement2

......

else

        statementn

fi

 case in语句

case expression in   (类似c语言switch 首先判断表达式的值是否等于pattern1,是就执行s1)

  pattern1)

        statement1   (s1)

        ;;                       (分支结束)

  pattern2)

        statement2

        ;;

  pattern3)

        statement3

        ;;

  ......

        *)                 (类似c语言default,expression为其他值,执行下面语句)

        statementn

        ;;

esac                    (case语句结束)

 for in 循环

for variable in value_list             遍历value_list 赋值给variable  类似python

do

        statements

done

value-list可以是:

直接给出具体的值                 for n in 1 2 3 4 5 6 7 8 9 10

给出一个取值范围                for n in {1..10}

使用命令的执行结果             for n in ${ls /bin/*sh}

使用shell通配符

使用特殊变量

while 循环

while condition

do

        statements

done

函数

function name()

{

        statements

        [return value]

}

Gcc编译器

Gcc编译工具链

c语言程序编译分四个阶段:(预处理、编译、汇编、链接)

gcc编译器(预处理、编译)

binutils工具集(汇编、链接)

运行第一个helloworld

1、新建hello文件夹   mkdir hello

2、在文件夹下创建hello.c文件      vim hello.c

3、写入代码,保存退出

4、使用gcc对程序进行编译      gcc hello.c -o hello       (最后一个hello是给生成的程序命名)

5、.执行               /hello

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/2991621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存