当前位置:首页>Linux>Linux操作(三)掌握shell基础

Linux操作(三)掌握shell基础

  • 2026-10-11 06:58:55
Linux操作(三)掌握shell基础

Linux操作掌握shell基础

shell支持具有字符串值的变量。shell变量不需要专门的说明语句,通过赋值语句完成变量说明并予以赋值。在命令行或shell脚本文件中使用$name的形式引用变量name的值。

在shell中,变量的赋值格式如下:name=String

变量名是以字母或下画线开头的字母、数字和下画线字符序列组成的。

通过在变量名(name)前加 $ 字符(如$name)引用变量的值,引用的结果就是用字符串string代替 $name,此过程也称为变量替换。

在定义变量时,若string中包含空格,则string必须用引号将其括起来,单双引号均可。

双引号内允许变量替换,而单引号内则不可以。

shell变量分为局部变量和全局变量。

局部变量的作用范围仅限制在其命令行所在的shell或shell脚本文件中。

全局变量的作用范围则包括本shell进程及其所有子进程。

可以使用export内置命令将局部变量设置为全局变量。

环境变量是指由shell定义和赋初值的shell变量。shell用环境变量来确定查找路径、注册目录、终端类型、终端名称、用户名等。所有环境变量都是全局变量,并可以由用户重新设置。在bash中,设置环境变量与普通变量设置方法相同,命令的格式是:

环境变量=变量的值

(1)cmd ; cmd(不考虑命令相关性的连续命令执行)。

(2)$?(命令回传值)与“&&”或“||”。

由于命令是一个接着一个运行的,因此,如果真要使用判断,那么 && 与 || 的顺序就不能搞错。

正则表示法是处理字符串的方法,它以“行”为单位来进行字符串的处理。正则表示法透过一些特殊符号的辅助,可以让使用者轻易达到查找/删除/替换某些特定字符串的工作。正则表达式通常与grep命令搭配使用。

grep  '查找字符串'  filename

使用重定向

重定向就是不使用系统的标准输入端口、标准输出端口或标准错误端口,而进行重新的指定,所以重定向分为输入重定向、输出重定向和错误重定向。通常情况下,重定向到一个文件。

当我们输入重定向符时,命令解释程序会检查目标文件是否存在。如果不存在,命令解释程序将会根据给定的文件名创建一个空文件;如果文件已经存在,命令解释程序则会清除其内容并准备写入命令的输出到结果。这种操作方式表明:当重定向到一个已存在的文件时需要十分小心,数据很容易在用户还没有意识到之前就丢失了。

在Linux中若前一个命令运行的结果正确,则在Linux中会回传一个 $? = 0的值。那么我们需要通过这个回传值来判断后续的命令是否要运行。这要用到“&&”及“||”,如下表所示。

任务1:身为系统管理员,为简化每日重复工作,请对root用户环境配置文件内PATH进行修改,使得“自制命令”可在全局使用。要求:自制命令文件名称为mytask,存放位置为/root/mybin,文件完成以下步骤配置,①进入root用户家目录②创建log文件③在log文件内追加写入信息④将log文件内信息输出显示。

①在root用户主目录下,创建mybin文件夹,在该文件夹下创建mytask文件

[root@30client2 ~]# mkdir mybin //在root下创建mybin文件夹

[root@30client2 ~]# cd mybin //进入mybin目录

②利用vim编辑器,对mytask文件进行编辑,写入对应指令

[root@30client2 mybin]# vim mytask //在mybin目录中创建文件并编写代码

cd /root

touch log

echo "my name is siyang">>log

cat log

[root@30client2 mybin]# chmod 777 mytask //设置mytask文件的权限使其能够读取、写入和执行

③对root用户环境配置文件.bash_profile进行修改,配置PATH

[root@30client2 mybin]# cd

[root@30client2 ~]# vim .bash_profile//对.bash_profile进行修改,使得可在全局使用。

PATH=$PATH:$HOME/bin:/root/mybin

④重新加载配置文件 

[root@30client2 ~]# source .bash_profile

[root@30client2 ~]# mytask

my name is siyang

任务2:将one.txt、two.txt文件利用scp命令从windos传输到linux上,使用grep命令找出one文件中包含the字符的行,使用grep+正则找出one文件中t[a-z]e的行、找出one文件中The开头的行,找出two文件中g开头d结尾且包含3个连续字母o的行,找出two文件中包含至少2个连续字母o的行。

2、使用grep、正则表达式完成实验内容

准备工作:

将one.txt、two.txt文件放在windows桌面上,开启windows命令行,利用cd Desktop命令切换至桌面,使用scp one.txt two.txt root@192.168.10.11:/root命令,将两个文件传输至linux服务器/root目录下

远程传输命令

scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令,与cp命令不同的是,scp不仅能够通过网络传送数据,而且所有的数据都将进行加密处理。

其格式为:

scp [参数] 本地文件 远程账户@远程IP地址:远程目录

scp [参数] 远程账户@远程IP地址:远程文件 本地目录

-r:用于传送文件夹

-P:指定远程主机的sshd端口号

scp ./one.txt root@192.168.197.130:/root/

①使用grep命令找出one文件中包含the字符的行

grep -n 'the' one.txt

②使用grep+正则找出one文件中t[a-z]e的行

grep -n 't[a-z]e' one.txt

③使用grep+正则找出one文件中The开头的行

grep -n '^The' one.txt

④使用grep+正则找出two文件中g开头d结尾且包含3个连续字母o的行

grep -n 'g.*oo.*d' two.txt

3:good

4:goood

5:gooood

6:goooood

7:gooooood

⑤使用grep+正则找出two文件中包含至少2个连续字母o的行

grep -n 'ooo*' two.txt

3:good

4:goood

5:gooood

6:goooood

7:gooooood

任务3:利用管道符,找出dmesg命令所输出内容中包含ens32的行,并显示行号。//找出ps -aux命令所输出内容中包含ssh的行,并显示行号。

3、使用管道符,完成实验内容

找出dmesg命令所输出内容中包含ens33的行,并显示行号

dmesg | grep -n 'ens32'

1859:[6.738664] IPv6: ADDRCONF(NETDEV_UP): ens32: link is not ready

1860:[6.740851] IPv6: ADDRCONF(NETDEV_UP): ens32: link is not ready

找出ps -aux命令所输出内容中包含ssh的行,并显示行号

ps -aux | grep -n 'ssh'

238:root 1417 0.0  0.2 105996  4108 ?       Ss   10:18   0:00 /usr/sbin/sshd -D

“点点赞”再走吧!

点赞

分享

喜欢

留言

最新文章

随机文章