变量

常见的变量:

PATH:决定shell在哪些目录下寻找命令和程序;

HOME:家目录;

PWD:当前目录;

LOGNAME:当前用户名称;

env命令:

查看常见变量;

HOSTNAME:表示主机的名称。

SHELL:表示当前用户的shell类型。

HISTSIZE:表示历史记录数。

MAIL:表示当前用户的邮件存放目录。

PATH:该变量决定了shell将到哪些目录中寻找命令或程序。

PWD:表示当前目录。

LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量。

HOME:表示当前用户的家目录。

set命令:

查看全部系统以及自己定义变量;

如果想让设定的环境变量永久有效,有以下两种方法:

允许系统内所有用户登录后都能使用该变量。具体的操作方法是:在/etc/profile文件的最后一行加入export myname=jinkai,然后运行source /etc/profile就可以生效了。此时再运行bash命令或者切换到其他账户

[root@jinkai01 ~]# echo "export myname=jinkai" >> /etc/profile

[root@jinkai01 ~]# source !$

source /etc/profile

[root@jinkai01 ~]# bash

[root@jinkai01 ~]# echo $myname

jinkai

[root@jinkai01 ~]# exit

exit

root@jinkai01 ~]# su - linuxprobe

[linuxprobe@jinkai01 ~]$ echo $myname

jinkai

如仅允许当前用户使用该变量。具体的操作方法是:在用户主目录下的.bashrc文件的最后一行加入export myname=jinkai,然后运行source .bashrc就可以生效了。这时再登录test账户,myname变量则不会生效了。这里source命令的作用是将目前设定的配置刷新,即不用注销再登录也能生效。

[root@jinkai01 ~]# echo "export myname=jinkai" >> .bashrc

[root@jinkai01 ~]# source .bashrc

[root@jinkai01 ~]# echo $myname

jinkai

[root@jinkai01 ~]# su - linuxprobe

Last login: Mon Aug 17 22:47:20 CST 2020 on pts/0

[linuxprobe@jinkai01 ~]$ echo $myname

[linuxprobe@jinkai01 ~]$

自定义的变量规则:

设定变量的格式为a=b,其中a为变量名,b为变量的内容,等号两边不能有空格。

变量名只能由字母、数字以及下划线组成,而且不能以数字开头。

当变量内容带有特殊字符(如空格)时,需要加上单引号。

实验1:特殊符号变量,必须加单引号;

[linuxprobe@jinkai01 ~]$ myname='jin kai'

[linuxprobe@jinkai01 ~]$ echo $myname

jin kai

实验2:变量内容本身带有单引号,这时就需要加双引号

[linuxprobe@jinkai01 ~]$ myname="jin'kai"

[linuxprobe@jinkai01 ~]$ echo $myname

jin'kai

实验3:如果变量内容中需要使用到其他命令,运行结果则可以使用反引号

[linuxprobe@jinkai01 ~]$ name=pwd

[linuxprobe@jinkai01 ~]$ echo $name

/home/linuxprobe

实验4:变量内容可以累加其他变量的内容,但需要加双引号

[root@jinkai01 ~]# b=2

[root@jinkai01 ~]# myname="$b"a

[root@jinkai01 ~]# echo $myname

2a

定义全局变量:

格式:

export [变量名]=[变量值]

[root@jinkai01 ~]# abc=123

[root@jinkai01 ~]# echo $abc

123

[root@jinkai01 ~]# bash

[root@jinkai01 ~]# echo $abc

#没有使用全局变量前,切换一个环境,变量不生效了

[root@jinkai01 ~]# exit

exit

[root@jinkai01 ~]# export abc

[root@jinkai01 ~]# echo $abc

123

[root@jinkai01 ~]# bash

[root@jinkai01 ~]# echo $abc

123 #设定全局变量后,切换环境,变量依然生效

取消全局变量:

格式:

unset [变量名]

[root@jinkai01 ~]# echo $abc

123

[root@jinkai01 ~]# unset abc

[root@jinkai01 ~]# echo $abc

[root@jinkai01 ~]#

pstree

pstree命令需要安装psmisc包;

yum -y install psmisc

查看当前所在bash

[root@jinkai01 ~]# pstree

systemd-+-NetworkManager---2[{NetworkManager}]

|-VGAuthService

|-agetty

|-auditd---{auditd}

|-crond

|-dbus-daemon---{dbus-daemon}

|-firewalld---{firewalld}

|-lvmetad

|-master-+-pickup

| `-qmgr

|-polkitd---6[{polkitd}]

|-rsyslogd---2[{rsyslogd}]

|-sshd---sshd---bash---pstree

|-systemd-journal

|-systemd-logind

|-systemd-udevd

|-tuned---4[{tuned}]

`-vmtoolsd---{vmtoolsd}

进入新bash

[root@jinkai01 ~]# bash

[root@jinkai01 ~]# pstree

systemd-+-NetworkManager---2[{NetworkManager}]

|-VGAuthService

|-agetty

|-auditd---{auditd}

|-crond

|-dbus-daemon---{dbus-daemon}

|-firewalld---{firewalld}

|-lvmetad

|-master-+-pickup

| `-qmgr

|-polkitd---6[{polkitd}]

|-rsyslogd---2[{rsyslogd}]

|-sshd---sshd---bash---bash---pstree

|-systemd-journal

|-systemd-logind

|-systemd-udevd

|-tuned---4[{tuned}]

`-vmtoolsd---{vmtoolsd}

退出

exit

环境变量

全局的变量(针对所有用户):

/etc/profile :用户环境变量、交互、登录才执行;

/etc/bashrc : 用户不用登录、执行shell就生效;(这个文件主要预设umask以及PS1)

个人用户home变量文件(只针对当前用户):

.bash_profile:该文件定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用 该文件输入专属于自己的shell信息,当用户登录时,该文件仅仅执行一次。

.bashrc:该文件包含专属于自己的shell的bash信息,当登录或每次打开新的shell时,该文件 会被读取。例如,你可以将用户自定义的别名或者自定义变量写到这个文件中。

.bash_history:该文件用于记录命令历史。

.bash_logout:当退出shell时,会执行该文件。你可以将一些清理的工作放到这个文件中。

PS1变量

当我们登录系统后,命令的最左边会显示:

[root@jinkai01 ~]#

怎样控制这个显示,那么就要说到PS1变量;

PS1变量定义在 /etc/bashrc 文件下面;

[root@jinkai01 ~]# echo $PS1

[\u@\h \W]\$

[root@jinkai01 ~]#

u@:代表用户名

h:代表hostname

W:代表最后一个路径

注意:可将大W改小w 显示为绝对完全路径

实验1:修改显示为绝对路径;

[root@jinkai01 ~]# PS1='[\u@\h \w]\$'

[root@jinkai01 ~]#cd /etc/sysconfig/

[root@jinkai01 /etc/sysconfig]#

特殊符号

号* 任意个任意字符

号?任意一个字符

号 # 注释字符

\ 脱义字符

| 管道符

$变量前面的标识符,还可以和!结合使用。

!$ 表示上条命令中的最后一个变量,例如ls a.txt,那么当前命令下输入!$则代表a.txt

;多条命令写到一行,用分号分隔

~ 用户家目录

& 放到命令后面,会把命令丢到后台执行,例如:sleep 300 &

;> :输出重定向

;>> :追加重定向

2> :错误输出重定向

2>> :错误追加重定向

&>:正确和错误结果重定向到一个文件

[ ] :方括号表示指定字符中的一个,【0-9】,【a-zA-Z】,【abc】;

||和&& 判断语句,用于命令之间;(|| 或的意思 ls 1.txt || ls 2.txt 如果执行ls 1.txt成功 就不会执行ls 2.txt)

(&& 是and的意思 ls 1.txt && ls 2.txt 表示 如果ls 1.txt 执行成功 才会执行 ls 2.txt)

管道符命令

cut命令:

作用:截取文件部分显示

格式:cut -d ‘分割字符’ [-cf] 数字

-d 后面跟分隔符,分割字符要用单引号括起来

-f指定段数

-c后面接的是第几个字符;

显示passwd文档的前两段,截取:之前的1段;

cat /etc/passwd |head -2 |cut -d ":" -f 1

[root@jinkai01 /etc]#cat /etc/passwd | head -2 | cut -d ':' -f 1

root

Bin

sort命令:

作用:排序显示;

格式:sort [ -t 分隔符 ] [ -kn1,n2 ] [-nru ]

-n:表示使用纯数字排序

-r:表示使用反向排序

-t:后面跟分割字符,作用跟cut 的 -d 选项一样

-kn1/-kn1,n2:表示由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序

如果sort 不加任何选项,则从首字符向后依次按照ASCII码值进行比较,最后将它们按升序输出

实验:将psswd 按ACISS编码排序从a-z顺序;

sort /etc/passwd #仔细看首字符字母顺序

[root@jinkai01 /etc]#sort /etc/passwd

adm:x:3:4:adm:/var/adm:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

halt:x:7:0:halt:/sbin:/sbin/halt

linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash

wc命令

作用:统计文件行数、字符数或词数;

-l: 统计文件行数;

-m:统计字符数(换行符也会计算在内)#cat -A 可以看到文件换行符

-w:统计词 (空白作为分隔)

统计/etc/passwd 有多少行

[root@jinkai01 /etc]#wc -l /etc/passwd

19 /etc/passwd

[root@jinkai01 /etc]#

uniq命令

作用:去重复(去重复内容只限于相邻段),配合sort排序然后再去重复,-c 统计重复的行数,并把行数写在前面;

实验1:不排序去重复;

[root@jinkai01 /etc]#cat a.txt

abc

222

abc

111

111

[root@jinkai01 /etc]#uniq a.txt

abc

222

abc

111

结果:abc没有去重复,因为不相邻

实验2:排序去重复;结合sort使用

[root@jinkai01 /etc]#cat a.txt

abc

222

abc

111

111

[root@jinkai01 /etc]#sort a.txt

111

111

222

abc

abc

[root@jinkai01 /etc]#sort a.txt | uniq

111

222

abc

sort 先给排序,然后把输出结果通过管道符给后面去执行

tee命令

作用:相当于>命令,也就是输出重定向,但是可以显示;

参数-a:追加;

[root@jinkai01 /etc]#cat a.txt | tee 2.txt

abc

222

[root@jinkai01 /etc]#cat a.txt | tee -a 2.txt

abc

222

[root@jinkai01 /etc]#cat 2.txt

abc

222

abc

222

tr命令

作用:替换字符;

-d:表示删除某个字符,后面跟要删除的字符

-s:表示删除重复的字符

实验:把小写字母换成大写字母,如tr ‘[a-z]’ ‘[A-Z]’

[root@jinkai01 /etc]#head -2 /etc/passwd | tr '[a-z]' '[A-Z]'

ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH

BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN

实验:还可以替换字符

[root@jinkai01 /etc]#grep 'root' /etc/passwd | tr 'r' 'R'

Root:x:0:0:Root:/Root:/bin/bash

opeRatoR:x:11:0:opeRatoR:/Root:/sbin/nologin

split命令

作用:切割命令,将一个大的文件分割成多个文件;

-b表示依据大小来分割(默认单位字节),

-l 表示依据行数来分割;

实验1:按大小来分割文件;

[root@jinkai01 /etc]#mkdir aa

[root@jinkai01 /etc]#cp /etc/passwd aa/

[root@jinkai01 /etc]#cd aa

[root@jinkai01 /etc/aa]#split -b 500 passwd

[root@jinkai01 /etc/aa]#ls

passwd xaa xab

可以指定目标文件名

[root@jinkai01 /etc/aa]#rm -f xa*

[root@jinkai01 /etc/aa]#split -b 500 passwd 123

[root@jinkai01 /etc/aa]#ls

123aa 123ab passwd

实验2:按行数来分割文件;

[root@jinkai01 /etc/aa]#split -l 10 passwd

[root@jinkai01 /etc/aa]#ls

passwd xaa xab

[root@jinkai01 /etc/aa]#wc -l *

19 passwd

10 xaa

9 xab

38 tota

linux局部变量特殊字符替换,变量,全局变量,环境变量,特殊符号、管道符命令:cut、sort、uniq、wc、tee、tr、sp...相关推荐

  1. Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs

    在每个管线后面接的第一个数据必定是『命令』喔!而且这个命令必须要能够接受 standard input 的数据才行,这样的命令才可以是为『管线命令』,例如 less, more, head, tail ...

  2. linux读取环境变量替换,linux Shell脚本学习笔记二(变量和环境变量)

    2.变量和环境变量 使用env命令在终端中查看所有与此终端进程相关的环境变量.对于每个进程,在起运行时的环境变量可以使用下面的命令来查看: cat /proc/$PID/environ 其中,将PID ...

  3. linux环境变量自定义环境变量

    shell中的变量可以简单分为环境变量和自定义变量.环境变量有时也被称为全局变量,它是操作系统为Shell事先定义的一组变量,这些变量共同描述了当前shell运行的系统环境:而自定义变量则是用户根据所 ...

  4. linux超级基础系列——shell变量(本地变量和环境变量)

    linux超级基础系列--shell变量(本地变量和环境变量) 2006-12-04 00:39 为使shell编程更有效,系统提供了一些shell变量.shell变量可以保存诸如路径名.文件名或者一 ...

  5. Linux操作系统下三种配置环境变量的方法(linux下几种profile执行顺序)

    http://www.linuxeden.com/html/sysadmin/20080424/56879.html 现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量, ...

  6. linux下查看和添加PATH环境变量

    linux下查看和添加PATH环境变量 $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PA ...

  7. linux共享库位置配置(LD_LIBRARY_PATH环境变量 或者 更改/etc/ld.so.conf)

    linux共享库位置配置(LD_LIBRARY_PATH环境变量 或者 更改/etc/ld.so.conf) 转载于:https://www.cnblogs.com/RichardLee/archiv ...

  8. linux 环境变量导出,关于Linux:如何删除导出的环境变量?

    在安装gnuplot之前,我设置了环境变量GNUPLOT_DRIVER_DIR = /home/gnuplot/build/src.在安装过程中,出了点问题. 我想删除GNUPLOT_DRIVER_D ...

  9. linux设置环境变量设置环境变量

    出自:http://hi.baidu.com/jiaxi2000/blog/item/da9f2f1fdb6951caa6866913.html linux设置环境变量设置环境变量: 1.设置临时环境 ...

最新文章

  1. 记录一下MATLAB中ode45函数求解非刚性微分方程
  2. 突发奇想写的一篇小科幻(如果可以叫做科幻的话)
  3. cookie封装调用
  4. jstat 内存泄漏_基于Java内存dump文件分析解决内存泄漏问题
  5. 【Python】递归绘制科赫曲线及科赫雪花及转换成可执行文件打包
  6. Linux中断处理流程
  7. 【ARM】ARM处理器寻址方式
  8. linux安装php支持redis拓展
  9. EasyPlayer Android RTSP播放器延迟再优化策略
  10. 视屏教程、电子书、技术文档
  11. 为什么都不想去中科创达_那些过年不想回家的人,都去了哪?
  12. Web前端工程师工资逐年增长,背后有哪些因素?
  13. 传统文化中,沉香对养身、养心、养神的功效
  14. 海康摄像机RTSP连接Opencv读取视频
  15. 2021-11-03 投资学实务翻译9.1和9.2
  16. x射线管的kV、mA、mAs
  17. Android权限 - 权限分类
  18. Pytorch(GPU)配环境原理:cuda+cudnn+pytorch配环境的每一步到底干了些什么?
  19. 1011:2.4将磅转换为千克
  20. nn.Parameter()

热门文章

  1. leetcode 785. Is Graph Bipartite? | 785. 判断二分图(DFS,地图着色)
  2. leetcode 978. Longest Turbulent Subarray | 978. 最长湍流子数组(Java)
  3. Redis实战(七):redis的集群:主从复制、CAP、PAXOS、cluster分片集群 2
  4. 四面阿里,看看你都会吗
  5. Hadoop2异常分析(二):Sqoop导出数据错误
  6. MyBatis的association示例
  7. 归并排序,快速排序,冒泡排序,选择排序,基数排序,桶排序,堆排序(c++实现)
  8. [leetcode]1137. 第 N 个泰波那契数
  9. android文件加解密开发,Android文件加密解密的实现
  10. php 调用memcache,Windows下的Memcache安装(php调用)