0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Linux系统中系统变量存在哪里呢?

阿铭linux 来源:阿铭linux 作者:阿铭 2022-11-16 09:46 次阅读

11.3系统环境变量与个人环境变量的配置文件

上面讲了很多系统变量,那么在Linux系统中,这些变量存在哪里呢?为什么用户一登录shell就自动有了这些变量呢?我们先来看看下面几个文件。

/etc/profile:这个文件预设了几个重要的变量,例如PATH、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask等。

/etc/bashrc:这个文件主要预设umask以及PS1。这个PS1就是我们在输入命令时前面的那串字符。例如,阿铭的Linux系统的PS1就是[root@localhost~]#,我们不妨看一下PS1的值,如下所示:

# echo $PS1
[u@h W]$

其中,u指用户,h指主机名,W指当前目录,$指字符#(如果是普通用户,则显示为$)。

除了以上两个系统级别的配置文件外,每个用户的主目录下还有以下几个隐藏文件。

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

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

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

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

11.4Linux shell中的特殊符号

在学习Linux的过程中,也许你已经接触过某个特殊符号,例如*,它是一个通配符,代表零个或多个字符或数字。下面阿铭就介绍一下常用的特殊字符。

11.4.1*代表零个或多个任意字符

这个字符前面已经介绍过,这里再次提到,它的用法如下:

#ls/tmp/4_6/test*
/tmp/4_6/test1 /tmp/4_6/test111  /tmp/4_6/test4  /tmp/4_6/test5

11.4.2?只代表一个任意的字符

这个字符的用法如下:

#touch/tmp/4_6/testa
#ls-d/tmp/4_6/test?
/tmp/4_6/test1 /tmp/4_6/test4  /tmp/4_6/test5 /tmp/4_6/testa

不管是数字还是字母,只要是一个字符,都能匹配出来。

11.4.3注释符号#

这个符号在Linux中表示注释说明,即#后面的内容都会被忽略。用法如下:

#abc=123#aaaaa
#echo$abc
123

11.4.4脱义字符

这个字符会将后面的特殊符号(如*)还原为普通字符。用法如下:

#ls-dtest*
ls:
cannot access 'test*': No such file or directory

11.4.5再说管道符|

这个字符前面曾多次出现过,它的作用是将前面命令的输出作为后面命令的输入。这里提到的后面的命令,并不是所有的命令都可以的,一般针对文档操作的命令比较常用。

例如cat、less、head、tail、grep、cut、sort、wc、uniq、tee、tr、split、sed、awk等,其中grep、sed和awk是正则表达式必须掌握的工具,在后面会详细介绍。管道符的用法如下:

#cattestb.txt|wc-l
0

在上例中,wc -l用来计算一个文档有多少行。管道的作用在于将左边命令的输出内容作为右边命令的输入。

11.4.6特殊符号$

符号$可以用作变量前面的标识符,还可以和!结合起来使用。示例命令如下:

# cd ..
# ls testb.txt
testb.txt
# ls !$
ls testb.txt
testb.txt

!$表示上条命令中的最后一个变量,本例中上条命令最后是testb.txt,那么在当前命令下输入!$则代表testb.txt。

11.4.7特殊符号;

通常,我们都是在一行中输入一个命令,然后回车就运行了。如果想在一行中运行两个或两个以上的命令,需要在命令之间加符号;。示例命令如下:

# mkdir testdir ; touch
test1.txt ; touch test2.txt; ls -d test*
test1.txt test2.txt 
testb.txt  testdir

11.4.8特殊符号~

符号~表示用户的家目录,root用户的家目录是/root ,普通用户则是/home/username。示例命令如下:

#cd~
#pwd
/root
#suaming
$cd~
$pwd
/home/aming

11.4.9特殊符号&

如果想把一条命令放到后台执行,则需要加上符号&,它通常用于命令运行时间较长的情况。比如,可以用在sleep后,如下所示:

#sleep30&
[1]
3808
#jobs
[1]+ 运行中               sleep 30 &

11.4.10重定向符号>、>>、2>和2>>

前面讲过重定向符号>和>>,它们分别表示取代和追加的意思。当我们运行一个命令报错时,报错信息会输出到当前屏幕。

如果想重定向到一个文本,则要用重定向符号2>或者2>>,它们分别表示错误重定向和错误追加重定向。示例命令如下:

#lsaaaa
ls:
cannot access 'aaaa': No such file or directory
#lsaaaa2>/tmp/error
#cat/tmp/error
ls:
cannot access 'aaaa': No such file or directory
#lsaaaa2>>/tmp/error
#cat/tmp/error
ls:
cannot access 'aaaa': No such file or directory
ls:
cannot access 'aaaa': No such file or directory

11.4.11中括号[]

中括号内为字符组合,代表字符组合中的任意一个,可以是一个范围(1-3,a-z),用法如下:

#cd/tmp/10
#ls-dtest*
test1.txt test2.txt 
testb.txt  testdir
#ls-dtest[1-3].txt
test1.txt test2.txt
#ls-dtest[12b].txt
test1.txt test2.txt 
testb.txt
#ls-dtest[1-9].txt
test1.txt test2.txt
#ls-dtest[1-9a-z].txt
test1.txt test2.txt 
testb.txt

11.4.12特殊符号&&和||

前面提到了分号可作为多条命令间的分隔符,其实还有两个可以用于多条命令中间的特殊符号,那就是&&和||。下面阿铭列出以下几种情况:

command1 ; command2

command1 && command2

command1 || command2

使用;时,不管command1是否执行成功,都会执行command2。

使用&&时,只有command1执行成功后,command2才会执行,否则command2不执行。

使用||时,command1执行成功后则command2不执行,否则执行command2,即command1和command2中总有一条命令会执行。接下来,阿铭要通过做试验来说明&&与||这两个特殊符号的作用:

#rm-rftest*
#touchtest1test3
#lstest2&&touchtest2
ls:
cannot access 'test2': No such file or directory
#lstest2
ls:
cannot access 'test2': No such file or directory

本例中,只有当ls test2成功执行后,才会执行touch test2。因为test2不存在, ls test2没有执行成功,所以&&后面的touch test2并没有执行。

#lstest2||touchtest2
ls:
cannot access 'test2': No such file or directory
#lstest*
test1 test2 
test3

本例中,若ls test2执行不成功,则会执行touch test2。因为test2不存在,所以ls test2没有执行成功,转而执行||后面的touch test2,所以增加了test2这个文件。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    593

    浏览量

    27392
  • Shell
    +关注

    关注

    1

    文章

    365

    浏览量

    23358

原文标题:我猜你这些shell基础知识很多都不知道

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux系统中线程同步方式的条件变量方法

    今天主要和大家聊一聊,如何使用Linux中线程同步方式的条件变量
    发表于 11-08 09:16 529次阅读

    我猜你这些shell基础知识很多都不知道

    上面讲了很多系统变量,那么Linux系统,这些变量
    发表于 11-16 09:41 290次阅读

    Linux实时方面存在哪些不足? 如何去改进Linux内核的实时性?

    实时系统分为哪几类?Linux实时方面存在哪些不足?如何去改进Linux内核的实时性?怎样去设计抢占式内核体系结构?
    发表于 04-26 06:36

    嵌入式为什么要用到Linux系统

    串行外设接口SPI是什么?嵌入式为什么要用到Linux系统?Cache常见的替换算法有哪几种
    发表于 11-02 08:09

    嵌入式Linux系统的组成包括哪些

    。③ Linux内核Linux内核的最主要目的是去启动APP,APP保存在哪里?保存在“根文件系统”里。“根文件
    发表于 12-17 08:13

    请问OK3399-c Linux系统在哪里可以设置开机不进入界面?

    OK3399-c 开发板Linux系统启动后默认显示桌面,请问在哪里可以设置开机不进入界面。
    发表于 12-30 06:55

    可以了解的Linux 文件系统结构

    Linux的文件是什么?它的文件系统又是什么?那些配置文件又在哪里?我下载好的程序保存在哪里了?
    发表于 04-27 14:06 716次阅读
    可以了解的<b class='flag-5'>Linux</b> 文件<b class='flag-5'>系统</b>结构

    鸿蒙系统优势在哪里

    自从华为公布首批搭载鸿蒙学堂的消息之后,不少华为手机用户接到了鸿蒙操作系统的更新推送。鸿蒙系统到底能不能成?鸿蒙系统优势在哪里? 鸿蒙系统
    的头像 发表于 06-21 16:42 1.1w次阅读
    鸿蒙<b class='flag-5'>系统</b>优势<b class='flag-5'>在哪里</b>?

    鸿蒙系统在哪里可以下载 华为p20支持鸿蒙系统

    鸿蒙系统在哪里可以下载?下面就由小编为大家来简单介绍一下!
    的头像 发表于 07-05 09:52 3665次阅读

    鸿蒙系统在哪里 华为鸿蒙官网报名

    鸿蒙系统在哪里?有哪些优势?下面就由小编来为大家简单介绍一下!
    的头像 发表于 07-07 09:09 2336次阅读

    鸿蒙系统截屏功能在哪里

    华为鸿蒙系统发布后,目前为止很多小伙伴都升级了鸿蒙系统,截屏是手机使用过程中一个很基础的功能,那么鸿蒙系统截屏功能在哪里?下面小编就为大家
    的头像 发表于 07-09 15:44 1.1w次阅读

    通过env命令来查看Linux系统当前的环境变量

    Linux 系统,环境变量是用来定义系统运行环境的一些参数,常见的环境
    的头像 发表于 01-18 16:10 2463次阅读

    VESD静电监控系统优势在哪里

    VESD静电监控系统优势在哪里?今天我们就从各个方面为您介绍。
    的头像 发表于 04-26 14:52 630次阅读
    VESD静电监控<b class='flag-5'>系统</b>优势<b class='flag-5'>在哪里</b>

    0欧姆电阻神奇在哪里?电路0欧姆电阻的12点妙用总结

    电路设计,电阻是至关重要的,它能有效地实现电路的限流、分流、分压。0欧姆电阻是电阻中一个很神奇的存在。神奇在哪里
    的头像 发表于 08-22 11:36 1219次阅读

    Linux系统设置环境变量的方法和技巧

    Linux中环境变量是一种保存有关系统环境配置的信息的对象。它们被广泛用于存储有关系统操作的信息比如路径、文件名等。通过合理配置环境
    的头像 发表于 02-01 11:09 1680次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b><b class='flag-5'>中</b>设置环境<b class='flag-5'>变量</b>的方法和技巧