linux主机跳转环境变量,Linux中shell基础、重定向、管道符、环境变量

原标题:Linux中shell基础、重定向、管道符、环境变量

1、什么是shell

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器)。它接收用户输入的命令并把它送入内核去执行。起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。

Shell在Linux系统上具有极其重要的地位

1ca93ffe0b18934996e30d118f9e51d0.png

2、命令解释过程

Shell可以执行:内部命令、应用程序、shell脚本

7db17baf88696ed3ad8e2be1c9da960f.png

3、Shell的种类

常见的各种版本的shell:

Bash(Bourne Again Shell)

bash是大多数Linux系统的默认Shell。bash与bsh完全向后兼容,并且在bsh的基础上增加和增强了很多特性。bash也包含了很多C Shell和Korn Shell中的有点。bash有很多灵活和强大的变成接口,同时又有很友好的用户界面。

Ksh(Korn Shell)

Korn Shell(ksh)由Dave Korn所写。它是UNIX系统上的标准Shell。在Linux环境下有一个专门为Linux系统写的Korn Shell的扩展版本,即Public Domain Korn(pdksh)

tcsh(csh 的扩展) tcsh是C Shell的扩展。tcsh与csh完全向后兼容,但它包含了更多的使用户感觉方便的新特性。其最大的提高是在命令行编辑和历史浏览方面。

4、Linux的元字符

在Shell中有一些具有特殊意义的字符,称为Shell 元字符(shell metacharacters)。

若不以特殊方式(使用转义字符)指明,Shell 并不会把它们当作普通文字符使用。

5a993a6599d8e2b92b47cd440c15a080.png

5、Bash的基本功能

历史命令(history)

命 令:history 命令可以用来显示曾执行过的命令,也可以根据显示的治疗来重新执行需要的命令

语 法:history(选项)(参数)

选 项:n 显示n个最近的记录

参 数:-a 添加记录

-r 读取记录,但不会添加内容记录

-w 覆盖原有的history 文件

-c 清除记录

-d[n] 删除指定n条记录

-n 读取指定文件

-r 读取文件但不记录

-w 覆盖原有文件

使用上下箭头---调用以前的历史命令

使用 "!n" 的方式---重复执行第n条历史命令

使用 "!!" 的方式---重复执行上一条命令

使用 "!字符串" 的方式---重复执行最后一条以该字符串开头的命令

使用 "!$" 的方式---重复执行上一条命令的最后一个参数

f2af863d0bf5114e4fbd734765b4f115.png

历史命令存放在当前用户家目录下的 .bash_history 隐藏文件中。

3.2、标准输出重定向(覆盖)

命令:echo > aa

标准输出重定向,先清空后写入,如果文件不存在则创建,echo后面没有接内容,则是清空文件。

5ee1ea47ae2fb907b042cc16c371da15.png

3.3、标准输出重定向(追加)

命令:echo "但是在冬季之后迎来的是春暖花开" >> aa

标准追加输出重定向,想配置文件末尾追加内容

c53cacd6c32ae4f37228638d0e46ca97.png

3.4、禁止覆盖

如果在工作中,我们想要在文件中追加内容时 ">>",却不小心写入 ">" 就执行了,那么我们的我呢见就覆盖了,这时候就需要禁止覆盖了,命令:set -C

795029b88ec379417cf8008e7bcacf98.png

强制覆盖 ">|"

b84a2588c3b867a2a3a356aa66e3ea74.png

禁止覆盖命令:set -C ,解除禁制覆盖命令:set +C

3.5、错误输出从定向

命令:ls /root /error 1>a 2>b

将标准输出和标准错误输出从定向到不同文件

ef0ef3ae2e20df92a82a9ad0e506d60b.png

3.6、正确和错误都输入到相同位置

命令:find /root -name "*.txt" &>ab

将标准输出和标准错误输出重定向到同一个文件,混合输出

20a5fa9e4cbcd0b296fbe3c348ef484e.png

命令:cat a aa > ab

合并两个文件内容至一个文件

20fd1f0f08445d565daa836c071db6d3.png

3.7、重定向到空设备/dev/null

命令:ls /root /error >ab 2>/dev/null

空设备,即将产生的输出丢掉

9186edc5d58fd222a80fcaea487086b6.png

如果 /dev/null 设备被删除

命令:rm -f /dev/null //删除/dev/null设备

1、手动创建

命令:mkmod -m 666 /dev/null c 1 3

2、重启自动创建

7、进程管道技术

管道操作符号 "|" 连接左右两个命令,将右侧的命令的标准输出,交给右侧命令的标准输入

26d96b28ec20ccad0a77eddc8fb73e5e.png

格式:cmd1 | cmd2 [...|cmdn]

将/etc/passwd 中的用户按UID大小排序

命令:sort -t ":" -k3 -n /etc/passwd -r | head

93d34312c06c10fa88f769066865b4d2.png

命令:ip a|grep 'inet ' | awk '{print $2}' | awk -F "/" '{print $1}'

查看本地IP,打印以 "inet "开头的行,以空格为分隔符截取第二段(默认以空格为分隔符),再以 "/" 为分隔符截取第一段。

9ae5a8b756edb3ee482f58654734124f.png

4b66d6ad8ee9c9e0645f30553012fbc0.png

41ae35500001311dd23f1332915b0467.png

7.1、tee 管道技术

功能:tee 指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件或显示。

6446704585deac3810ccdd195a7a54cb.png

命令:ip a|grep 'inet '|tee ip.txt | awk '{print $2}' | awk -F "/" '{print $1}'

将前一个程序产生的结果保存在指定文件中,并送至下一个程序。

3f4b057d161108ccc66ebb27c3998c95.png

7.2、参数传递 xargs

功能:将参数列表转换成小块分段传递给其他命令,读入stdin的数据转换为参数添加至命令行中,让一些不支持管道的命令可以使用管道。

有些命令不支持管道技术,但是可以通过xargs来实现

6d0b57bb83078c1439ebdd462571d2c5.png

8、shell 环境变量

1)环境变量定义shell的运行环境,保证shell 命令的正确执行;

2)Shell 用环境变量类确定查找路线、注册目录、终端类型、终端名称、用户名等;

3)所有环境变量都是全局变量(既可以传递给Shell 的子进程)。

8.1、常见的Shell 环境变量

变量名含义HOME用户主目录LOGNAME登录名USER用户名、与登录名相同PWD当前目录/工作目录名MAIL用户的邮箱路径名HOSTNAME计算机的主机名INPUTRC默认的键盘映像SHELL用户所使用的shell的路径名LANG默认语言HISTSIZEhistory所能记住的命令的最多个数PATHshell查找用户输入命令的路径(目录列表)PS1、PS2shell一级、二级命令提示符

8.2、查看环境变量

Linux中set、env和 export 都可以查看环境变量

1)set 命令显示当前shell 的变量,包括当前用户的变量,set 主要用来显示shell 的参数和选项

2)env 命令显示当前用户的变量,env 用来再构建的幻剑中运行命令

3)export 命令显示当前导出成用户变量的shell 变量

每个shell 都有自己特有的变量(set显示的变量),这个和用户变量不同,当前用户变量和你用什么shell 无关,不管你用神那么shell 都在,比如HOME、SHELL等这些变量;但是shell 自己的变量不同,不如BASH_ARGC、BASH等这些变量只有set 才会显示,时bash特有的;export 不加参数的时候,显示哪些变量被导出了用户变量,因为一个shell自己的变量可以通过 export "导出"变成一个用户变量。

8.3、Linux下环境变量的设置

8.3.1、新建 /root/test/aa.sh 文件,并赋于可执行权限

996ffbd39c1e2279be68b5770ed8eee9.png

2e54539b49b13cdc4cdac023e05fa9c7.png

e379ac51350c696685d96a53e6190bce.png

自定义命令脚本,只需要把脚本目录添加到环境变量中,就可以在任意目录下执行该脚本。

8.3.2、定义系统提示符的变量

PS1:定义系统提示符的变量

\d:显示日期,格式为“星期 月 日”

\h:显示简写主机名。默认主机名“localhost”

\t:显示24小时制时间,格式为"HH:MM:SS"

\T:显示12小时制时间,格式为"HH:MM:SS"

\A:显示12小时制时间,格式为"HH:MM"

\u:显示当前用户名

\w:显示当前所在目录的完整名称

\W:显示当前所在目录的最后一个目录

\#:执行的第几个命令

\$:提示符。如果时root用户会显示为"#",如果时普通用户显示"$"

如:PS1='[\u@\h \w]\$' //将W改成小写

3bc2dee32366c05a8e1335c6556eae69.png

8.3.4、预定义变量

预定义变量作用$?

最后一次执行的命令的返回状态。如果这个变量的值为0,

证明上一个命令正确执行;如果这个变量的值为非0(具体时那个数,

由命令自己来决定),则证明上一个命令执行不正确了。

$$当前进程的进程号(PID)$!后台运行的最后一个进程的进程号(PID)

25fe56880f4b430ee712b3d85c81c277.png

8.3.5、用户工作环境

用户登录系统时,shell 为用户自动定义唯一的工作环境并对该环境进行维护直至用户注销。该环境将定义如身份、工作场所和正在运行的进程的特性。这些特性由指定的环境变量值定义。

用户工作环境分为登录环境和非登录环境:1、登录环境是指用户登录系统时的工作环境,此时的shell 对登录环境而言时主shell;2、非登录环境是指用户在调用子shell 时所使用的用户环境。

设置用户工作环境

对所有用户惊醒设置:

/etc/profile

/etc/bashrc

只对当前用户进行设置

~/.bash_profile

~/.bashrc

通常,个人bash 环境设置都定义在~/.bashrc文件里。

转载自:https://www.cnblogs.com/qiuyu666/p/11943852.html返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值