linux管道符加空格吗,管道符,作业控制,变量以及变量配置文件

一、管道符

前面已经提过过管道符 “|”, 就是把前面的命令运行的结果丢给后面的命令。

# cat 1.txt | wc -l //显示1.txt文件行数

ab5535ee2b0b7d43c9626d9016e18681.png

二、作业控制

当运行进程时,你可以使它暂停(按Ctrl+Z组合键),然后使用fg(foreground的简写)命令恢复它,或是利用bg(background的简写)命令使它到后台运行。此外,你也可以使它终止(按Ctrl+C组合键)

实例:

1、编辑1.txt文件,随意输入一些内容,然后Esc退出编辑模式,按Ctrl+z暂停任务:

3d960256ab8396fbe9d18ce34f905257.png

可以看到提示 “1.txt” 已经停止了,然后使用fg命令恢复它,此时又进入刚才的 “vi” 窗口了。

2、如果想把暂停的任务丢在后台跑起来(vmstat 1是用来观察系统状态的一个命令,会不停的变化),就使用bg命令。

4df928f0d8ec312f01823080cc1cc3bb.png

bg命令,是暂停的任务在后台跑:

e02b93c770aa43c529f114e457c8e9f7.png

jobs命令,可以看到被暂停或者在后台运行的任务。

丢到后台的任务如何关掉呢?如果你没有退出刚才的shell, 那么先使用 fg 编号 把任务调到前台,然后使用 “Ctrl + c” 结束任务:

419954f19463f177e46b627d19d8c384.png

如果运行一个指令直接就在后台跑,在命令后面加&就可以,并且会显示pid信息:

26441173821b9b7b1d155ad2fa69cd66.png

有一种情况则是,关闭到当前的shell, 再次打开另一个shell时,使用jobs命令并不会显示在后台运行或者被暂停的任务,要想停掉它的话,则需要先知道其pid, 然后使用kill命令杀死那个进程。

# ps aux | grep vmstat //显示vmstat进程

# kill 2744

756145cc0e4e81cb82ae0e705d9bf1f0.png

kill命令语法很简单,直接在后面加pid即可,如果遇到杀不死的进程时,可以在kill 后面加一个选项:kill -9 [pid]

三、变量

之前的笔记中写到过环境变量PATH,这个环境变量就是shell预设的一个变量,通常shell预设的变量都是大写的。变量,说简单点就是使用一个较简单的字符串来替代某些具有特殊意义的设定以及数据。就拿PATH来讲,这个PATH就代替了所有常用命令的绝对路径的设定。因为有了PATH这个变量,所以我们运行某个命令时不再去输入全局路径,直接敲命令名即可。你可以使用echo命令显示变量的值。

fca47212e79fef1b6ed4d0e2d56532b2.png

如果需要查看系统预设的全部环境变量,使用命令:

# env

7ff33cf4409c263ff44cd34ea45e8166.png

不过,登录的用户不一样这些环境变量的值也不一样,当前显示的就是root这个账户的环境变量了。下面是一些常见的环境变量:

HOSTNAME表示主机的名称

SHELL 表示当前用户的shell类型

HISTSIZE 表示历史记录数

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

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

PWD 表示当前目录

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

HOME 表示当前用户的家目录

LOGNAME 表示当前用户的登录名

env命令显示的变量只是环境变量,系统预设的变量其实还有很多,你可以使用set命令把系统预设的全部变量都显示出来。

# set

bbc7687421e4c4487f7272c27119259e.png

set命令不仅可以显示系统预设的变量,也可以显示用户自定义的变量。

比如自定义个变量zzz:

db8ba9c99227f095e3229f0e9f99a08d.png

虽然你可以自定义变量,但是该变量只能在当前shell中生效。

0b70f59c4cad39e64f949c5f9a8ffc16.png

使用bash命令即可再打开一个shell,此时先前设置的 “zzz” 变量已经不存在了,退出当前shell回到原来的shell, “zzz” 变量还在。如果需要让变量一直在,那么有两种情况:

1)、允许系统内所有用户登录后都能使用该变量。操作方法:在/etc/profile文件的最后一行加入export zzz=test,然后运行source /etc/profile 就能生效。

7cc980455382b332a8030aa5aace6a9b.png

2)、仅允许当前用户使用该变量。操作方法:在用户主目录下的.bashrc 文件的最后一行加入expor zzz=test,然后运行source .bashrc 就能生效。

16072d4c490afc9a80a99da147718060.png

source命令的作用是,将目前设定的配置刷新,即不用注销再登录也能生效。

在说下Linux下自定义变量的规则:

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

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

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

也有特殊情况:

-变量内容中本身带有单引号,这就需要用到双引号了

bfd38b100e7273ec22bc3e061089af5c.png

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

f78945f34700a6aa67d99e55063f643f.png

-变量内容可以累加其他变量的内容,需要加双引号

f2c736577d495f449fb860ad9f988982.png

通过上面几个例子能看得出,单引号和双引号的区别,用双引号时不会取消掉里面出现的特殊字符的本身作用(这里的$),而使用单引号则里面的特殊字符全部失去它本身的作用。

在前面的例子中多次使用了bash命令,如果在当前shell中运行bash命令,则会进入一个新的shell,这个shell就是原来shell的子shell。可以用pstree命令查看。(安装pstree命令:yum install -y psmisc)pstree命令会把linux系统中的所有进程以树形结构显示出来。

7bfd01f3a901ec8070d1c1c1745cf2a1.png

在父shell中设定一个变量后,进入子shell后该变量是不会生效的.如果想让这个变量在子shell中生效则要用到export指令。

34abef4cc79de849ee5fb4c88f035115.png

如果想让这个变量在子shell中生效则要用到export指令。

export xxx=hahaha

adfac10946eeefd951bbfb0ba28cbce3.png

在子shell中设定变量后即便用export声明了变量,也不能在父shell中生效,往下层不往上层。

export声明变量后,切换到其他终端就失效了,如果需要时刻生效,则需要把变量加入到/etc/profile中,参考上文。

当打开多个终端时,可使用echo $SSH_TTY可以查看自己所在的终端:

0cd35d33b2cbad1811caa20939ace7dc.png

能自定义变量,那么必然可以取消自定义变量:

# unset 变量名

四、变量配置文件

环境变量配置文件分为:系统环境变量配置文件和用户环境变量配置文件。

系统级别的配置文件:

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

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

b8bb1a6ba40e91d00e0668f899b5324b.png

\u 就是用户, \h 主机名, \W 则是当前目录,\$ 就是那个 ‘#’ 了,如果是普通用户则显示为 ‘$’。

用户环境变量配置文件(在用户家目录下):

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

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

.bash_history:记录命令历史用的。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PL/SQL 连接配置

PLSQL连接oracle数据库配置 方法一: 1)点击Net Configuration Assistant 2) 在弹出的对话框中选择本地Net服务名配置,点下一步 3) 在服务名配置对话框中选择添加,点下一步 4)在如下对话框中填写要访问的ora…

自动驾驶汽车硬件与软件技术介绍

来源:知乎概要:本文详细介绍了自动驾驶汽车的硬件和软件,以及所需要做的准备工作,每个研发者或者准备投身于无人驾驶领域的人都应该好好看一下。全球有数不清的公司在忙着研发自动驾驶汽车,他们的产品也千奇百怪&#…

linux数组随机数,随机数与数组

随机数数组变量清屏时间延迟静态网站HTML随机数srand()函数用于播种函数头文件: stdlib.h函数定义: void srand(unsigned int seed)函数功能:设置随机数种子函数说明:通常可以用getpid(获取当前进程的进程识别码)或者time(NULL)(获取当前系统的时间信息)来充当种子,…

DeepMind 的2017:有 AlphaGo,更有社会责任

来源:AI科技评论概要:DeepMind 相信 AI 在更复杂的问题上也能起到同样的作用,它可以是科学技术工具,也可以是人类创造力的倍增器。AlphaGo 团队现在已经把注意力转向了另一组宏伟的目标,DeepMind 自己也希望这些研究人…

脏读、不可重复读和幻读

1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。2. 不可重复读 :是指在一个事务内…

c++语言中break的作用,C++ break和continue用法详解

用于 switch 中的 break 语句也可以放在循环中,当遇到 break 时,循环立即停止,程序跳转到循环后面的语句。以下是一个带有 break 语句的循环示例。程序段中的 while 循环看起来要执行 10 次,但 break 语句导致它在第 5 次迭代后即…

2018年人工智能13大预测

来源:英伟达概要:2017 年人工智能领域取得了许多里程碑式的成果。那么,以后人工智能又会如何发展呢?2017年被《华尔街日报》、《福布斯》和《财富》等刊物称为“人工智能之年”。各种深度学习在线课程不断推出,接受相关…

ORACLE 多版本读一致性

先来看看这段代码:while s in (select * from table1) loopinsert into table1 values(s.field1,s.field2,s.field3,s.field4,s.field5);end loop;如果是SQL server的开发人员,看到这段代码,肯定会摇头:这段代码有问题&#xff0c…

自动点名系统c语言,用C语言编写一个随机点名系统

/*编写一个随机点名系统,运行该系统后,按空格键可以显示出一名同学,以前被选中的同学,将不会再次被选中*/#include /*standard input & output*/#include /*standard libary*/#include /*string*/#include /*Console Input/Ou…

2017年全球AI芯片公司大盘点

来源:芯师爷概要:2017年,我们被AI公司的融资信息一次次刷屏,从2千万到1亿美金,让我惊诧道,AI的黄金年代真的来了吗?2017年,我们被AI公司的融资信息一次次刷屏,从2千万到1…

Oracle常用sql操作总结

一、选择行 1. 简单的SELECT 语句 SELECT 字段名1 [AS] 字段名1 解释 FROM table; 2. 处理NULL NVL函数可把NULL转换成其它类型的符号 编程技巧: NVL函数在多条件模糊查询的时候比较有用 NVL函数可返回多种数据类型: 返回日期 NVL(start_date,2002-02-01) 返回字符串 NVL(title…

51单片机 驱动步进电机 C语言 lcd,51单片机红外遥控控制步进电机的LCD显示源程序...

/******************************************************************************** 实验名 : 红外控制步进电机1602显示值实验* 使用的IO : 电机用P2口* 实验效果 : LCD1602显示出读取到的红外线的值,步进电机作出…

邬贺铨:工业物联网的技术与前景

来源:走向智能论坛概要:工业物联网是企业信息化的进程,我们经历了流程电子化、管理数字化、生产自动化到企业互联网化和企业智能化。邬贺铨:工业物联网靠花钱是买不到的!12月20日,2017第八届中国物联网产业…

约瑟夫问题C语言加注释,用链表实现约瑟夫环【有注释,有很多注释】

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼主要问题在于删除约瑟夫环的数,结果一直出不来,看了好几天改了好几次都改不对#include #include typedef struct ysf{int num;struct ysf*next;}YSF;YSF*creat(int aa[]){int i;YSF *headNULL,*p1NULL,*p2NULL;headp1p2(YSF*)mallo…

Windows平台下GO语言编译器(GO-windows)

go for windows下载:http://code.google.com/p/go-windows/ ,http://savechina.download.csdn.net/使用前需要dos执行set GOROOT<the go folder>set GOOSmingwset GOARCH386set PATH<the go folder>/bin编译执行test.go文件需要执行8g test.go //编译生成test.88l …

30亿美金投入!一文读懂英伟达性能凶残的Tesla V100牛在哪?

来源&#xff1a;智东西概要&#xff1a;AI已无处不在&#xff0c;两股力量正推动计算机领域的未来。GTC CHINA 2017大会上&#xff0c;英伟达创始人兼CEO黄仁勋表示&#xff0c;AI已无处不在&#xff0c;两股力量正推动计算机领域的未来。第一、摩尔定律已终结&#xff0c;设计…

WPF Border

在 WPF 中&#xff0c;Border 是一种常用的控件&#xff0c;用于给其他控件提供边框和背景效果。 要使用 Border 控件&#xff0c;您可以在 XAML 代码中添加以下代码&#xff1a; <Border BorderBrush"Black" BorderThickness"2" Background"Lig…

C语言的数组基础,C语言基础-数组

一、数组(一维数组)什么是数组&#xff1f;数组是一组有序的、类型相同的数据的集合数组的作用&#xff1f;处理一些类型相同的数据集合数组的构成&#xff1a;元素、下标或索引、数组名定义&#xff1a;使用前必须定义1、存储类型2、数据类型3、数组名4、数组大小语法&#xf…

Go语言,在Ubuntu9.10和Windows安装

工作环境&#xff1a;Ubuntu9.10A、安装C语言工具Go的工具链采用C语言编写&#xff0c;构建需要安装以下开发工具&#xff1a;GCC,C语言标准库,the parser generator Bison,make,awk, 和ed &#xff08;编辑器&#xff09;.对于 OS X 系统&#xff0c;以上工具是Xcode的一部分。…

世界类脑AI巨系统研究综述,论ET大脑是不是全球首个类脑架构AI

前言&#xff1a;2017年12月20日阿里云云栖大会提出ET大脑&#xff0c;并宣称为全球首个类脑架构AI&#xff0c;本文详细介绍了类脑AI系统的理论研究和发展现状&#xff0c;分析了ET大脑理论的沿袭与借鉴。并指出企业为提升影响里推动新概念新理论无可厚非&#xff0c;但涉及到…