一、管道符

管道符:管道符号用于把前一个命令的结果传递给另一条命令
示例:
1、统计一个文件的行数
命令:cat /etc/passwd | wc -l

2、统计当前文件夹下文件个数
命令: ls | wc -l

3、统计某个目录下所有文件总数
命令: find -type f | wc -l

管道符在实际应用中经常用到。

二、作业控制

作业控制有点类似windows下的后台,windows下可以按ctrl+Tab在不同程序间切换,liunx下也可以实现类似的功能,把正在执行的命令“挂起”到后台。
一个终端只有一个前台,有时候

作业控制涉及的命令
ctrl+z:把命令暂定,在后台停止,可用fg恢复
ctrl+c:终止命令执行
fg:前台
bg:把程序放到后台
COMMAND &:把命令直接放到后台执行
jobs:查看后台任务
screen:

操作示例
1、把正在执行的vim命令暂定

2、恢复暂停的命令

命令的执行恢复了。

3、有的命令支持在后台继续运行,那么我们可以把命令放到后台运行。
们把vmstat命令放到后台运行

可以看到他仍在不停的运行,但是我们仍可以输入其他命令对系统进行操作。这和ctrl+z不一样,ctrl+z程序就不动了。

4、job命令查看后台的程序

有点儿乱,但是可以看出来有三个程序在跑,这时我们可以用fg n(序号)的方式把命令调到前台来然后把他关闭
比如,我把2号命令调到前台来然后关闭。

画圈的地方就是我敲的命令“fg 2”只是因为程序是在跑的,显得有点乱。再用job查看时程序2就没了。

5、关闭后台的程序
命令
查看进程pid:ps -aux
结束进程:kill pid

解释一下,kill -9 +pid是强制结束的意思,我们强制把后台的两个命令关掉了,再用job就看不到之前后台的那两个命令了。

三、shell变量

变量是一个编程中常见的概念,变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。这里我们理解变量就是系统已经预置的一些特定数值或含义的代号,我们在写shell时可以引用他们。

1、系统内置的变量
PATH=命令的路径,builtin命令
HOME 用户的家目录root的home就是root,
PWD 表示当前目录在哪里
LOGNAME 你的登陆用户名
HISTSIZE 命令历史记录数
SHELL 当前用户的shell类型
HOSTNAME 主机名字
2、查看系统预设变量
上面这些系统预置变量的值可以用下面两条明明命令查看
env命令,显示系统的预设环境变量

set命令,显示系统预设的全部变量

(这只是一部分,后面还有很长)
3、用户自定变量,XX=XX自定义变量
变量名规则:避免用大写,系统很多预设变量是大写字符串,你用大写字符串很有可能就把系统预设变量给改变了,
附上一篇15条变量&方法命名的最佳实践(转载至legendmohe.net/2014/04/15/)
自定义变量时名称中可以有数字字母和下划线,但是数字不能是第一位,比如你写“1A=11”就会报错

自定义变量示例:
1、输入:test=888

然后我们看下变量的值就是888了。

2、变量值有特殊符号时需要用单引号括起来。比如/ . ..这些有特殊含义的东西,双引号也行,但是建议用单引号,双引号有时会出问题。示例

3、变量值累加,注意不是求和的意思,而是把变量的值依次显示出来



注意上例中如果你用单引号引用,那么$会脱意,显示结果会变成 $a $b $c

4、全局变量,涉及到子shell,全局变量能传递到所有shell,不能在另外的终端下使用.
补充一下终端的知识,每一次我们通过ssh登录到系统时都会分配给你一个终端,在每个终端下,你还可以通过bash命令进入一个子shell
通常自定义的变量仅在一个shell中生效,称为非全局变量。

w命令可以看到有哪些终端登录到了系统中
pstree可以查看到系统进程情况,需要yum安装psmisc工具才有

操作示例:
首先我们自定义一个非全局变量a=888

现在我们切换到一个子shell中

再看没有a这个变量了

我们生成一个全局变量
命令 export a=888

这时这个a变量就可以用到这个终端下的所有进程了。

但是我们切换终端后,这个变量就传递不过来了
比如我们在看一个终端,没了

注意变量传递是向下的,你在子shell中建立的变量,同样不能传递至上层shell中

5、unset可以取消变量

四、环境变量配置文件

几个重要的环境变量
/etc/profile 用户环境变量,交互,登录才执行,这个文件预设了几个重要的变量,例如PATH、USER、LOGNAME、MAIL、HOSTNAME等等。
/etc/bashrc 用户不用登陆,执行shell就生效,这个文件预设了umask以及PS1变量。
PS1就是我们登录系统时前面的字符串,其中
\u代表用户名 \h代表hostname \W所在目录名 \$就是$root用户显示为#

就是箭头里这个东东。

上面两个文件属于系统级的配置文件,一般情况下对所有用户都有效,如果不是确切知道某个选项的作用,建议不要随意更改。

~/.bashrc 它运行时会调用系统层的/etc/.bashrc文件
~/.bash_profile:该文件定义了用户的个人化路径和环境变量。当用户登录时会执行一次,你可以把一些shell放这里
~/.bash_history:记录用户命令的历史
~/.bash_logout 退出shell时,会执行该文件。一般的可以放一些清理的shell放到这里,每次logout是就会自动清理信息。

这是都是用户自己的配置文件,配置文件的.有点像windows的控制台和手机的设置中心,你可以调整一些系统的选项,预设的变量等等,这些操作不会影响系统和其他用户的配置,比较安全。

配置文件编辑好后可以用source命令激活,同时也可用. ~/.bash_profile 方式激活。

操作示例
1、在~/.bash_logout文件中加入echo 'i am good boy!命令

然后激活下~/.bash_logout文件

然后我们退出终端

系统就执行了我们刚加到~/.bash_logout文件中的命令。

2、修改PS1使其带颜色

本文转自 whytl 51CTO博客,原文链接:http://blog.51cto.com/11934539/2060095

Linux系统 shell基础(二)相关推荐

  1. linux 系统 Shell语言 基础

    linux 系统 Shell语言 基础 第一章 Shell 编程 1 . 概述 ​ Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Sh ...

  2. linux中ftp的工作原理,Linux系统学习 十二、VSFTP服务—简介与原理

    1.简介与原理 互联网诞生之初就存在三大服务:WWW.FTP.邮件 FTP主要针对企业级,可以设置权限,对不同等级的资料针对不同权限人员显示. 但是像网盘这样的基本没有权限划分. 简介: FTP(Fi ...

  3. Linux系统shell脚本之打印系统的IP信息

    Linux系统shell脚本基础之打印系统的IP信息 一.脚本要求 二.脚本内容 三.执行脚本 一.脚本要求 1.显示服务器的运行状态,并输出提示 2.输出电脑的IP地址等信息 3.将执行输出的信息记 ...

  4. Linux系统Shell脚本中的echo命令

    Linux系统Shell脚本中的echo命令 echo的作用       输出字符串 格式                  echo  "字符串内容" 一,显示转义字符 转义字符 ...

  5. linux shell概述,Linux学习 -- Shell基础 -- 概述

    Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串  双引号 ...

  6. shell基础二:查找技巧,find及xargs的使用

    2019独角兽企业重金招聘Python工程师标准>>> 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的 (在有些操作系统中只允许- e ...

  7. linux+管道+分段,Linux中shell基础、重定向、管道符、环境变量

    原标题:Linux中shell基础.重定向.管道符.环境变量 1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核 ...

  8. Linux系统网络基础

    Linux系统网络基础 网络管理 什么是网络 网络就是把分布在不同地理位置上的主机,通过传输介质(网线.卫星等)连接起来,通过网络协议实现主机之间数据传输与共享的目的. 网络的特点 分布式 跨区域 数 ...

  9. Linux系统进阶-基础IO

    Linux系统进阶-基础IO 文章目录 Linux系统进阶-基础IO C语言中的文件接口 对文件进行写入 对文件进行读取 什么是当前路径 默认打开的三个流 stdout & stderr 系统 ...

最新文章

  1. C语言strcpy,strncpy和strlcpy讲解
  2. python软件包自带的集成开发环境-实验一 熟悉Python的集成开发环境
  3. python中bin是什么意思_Python之一、#!/usr/bin/python到底是什么意思
  4. silverlight元素FrameworkElement.LayoutUpdated布局变化事件
  5. 关于写文章的一点经验
  6. [机器学习] XGBoost on Spark 分布式使用完全手册
  7. ipv6寻址_什么是IPV4寻址?
  8. 云贝连锁V2独立版V2.1.5源码-优化扫码登陆流程
  9. SpringBoot 自动装配原理
  10. 【Elasticsearch】Elasticsearch 7.3 的 offheap 原理
  11. Windows下启动Apache报错:ServerRoot must be a valid directory
  12. 一个完整的数据分析、挖掘流程详细介绍
  13. 面向对象技术之系统分析:类图
  14. 北卡罗来纳大学遗传算法工具箱
  15. 主机与虚拟机ping通
  16. SCLK时钟信号可以高电平有效也可以低电平有效
  17. Two-Stream Convolutional Networksfor Action Recognition in Videos——学习笔记
  18. tecplot云图——数据文本格式2
  19. JetBrains Account验证时JetBrains账户连接错误:连接拒绝(连接拒绝) 或 用于签署许可证的证书不是由JetBrains root certifi签署的。
  20. DW大学生网页作业制作设计 基于html+css我的家乡贵州网页项目的设计与实现

热门文章

  1. 网络巨头秘修域名重大疏漏 互联网免遭黑客控制
  2. [原创]用递归写的一个object 转换成JSON的函数
  3. RedisTemplate常用方法总结
  4. 推荐几个堪称神器的学习网站
  5. 新手探索NLP(五)
  6. 单例模式 之 单例模式——Holder
  7. jmeter测试webservice接口
  8. CF183D T-shirt
  9. 关于树论【LCA树上倍增算法】
  10. JavaScript stringObject.replace() 方法