管道符、shell变量、配置文件

简介:

管道符和作业控制

把一个文件的输出作为后面的输入

cat 1.txt |wc -l ;

[root@localhost ~]# cat 2.txt |wc -l

2

 

cat 1.txt |grep 'aaa'

[root@localhost ~]# cat 2.txt |grep '1' //过滤出含有字符串‘1’的行

11

 

 ctrl z 暂停一个任务

[root@localhost ~]# vi 1.txt

[1]+  已停止               vi 1.txt

 

 jobs查看后台停止的任务

[root@localhost ~]# jobs

[1]+  已停止               vi 1.txt

 

bg[id]把任务调到后台并运行

[root@localhost ~]# vmstat 1

执行ctrl+z

[root@localhost ~]# jobs

[root@localhost ~]# bg 1 //命令在屏幕显示,仍然可以执行其他命令

[root@localhost ~]# fg 1 //命令在屏幕显示,执行其他命令不显示

Ctrl+c中断当前进程

 

[root@localhost ~]# jobs

[root@localhost ~]# sleep 1000

^Z

[1]+  已停止               sleep 1000

[root@localhost ~]# bg 1

[1]+ sleep 1000 &

[root@localhost ~]# jobs

[1]+  运行中               sleep 1000 &

[root@localhost ~]# sleep 200

^Z

[2]+  已停止               sleep 200

[root@localhost ~]# jobs

[1]-  运行中               sleep 1000 &

[2]+  已停止               sleep 200

[root@localhost ~]# bg 2

[2]+ sleep 200 &

[root@localhost ~]# jobs

[1]-  运行中               sleep 1000 &

[2]+  运行中               sleep 200 &

 

 fg[id]把任务调到前台

[root@localhost ~]# fg 1

vi 1.txt

 

 命令后面加&直接丢到后台

[root@localhost ~]# sleep 30 &  //一次性丢到后台运行

[3] 2497

[root@localhost ~]# jobs

[2]-  运行中               sleep 200 &

[3]+  运行中               sleep 30 &

 

shell变量

PATHHOMEPWDLOGNAME

 env命令

[root@localhost ~]# env  //获取变量(系统变量通常都是大写的英文字母)

XDG_SESSION_ID=1

HOSTNAME=localhost.localdomain

TERM=xterm

SHELL=/bin/bash

HISTSIZE=6000

 

 

 set命令多了很多变量,并且包括用户自定义的变量

[root@localhost ~]# set  //系统变量和用户自定义的变量

 

 自定义变量a=1

[root@localhost ~]# a=111  

[root@localhost ~]# echo $a

111

[root@localhost ~]# set |grep '111'  //自定义变量出现在set

_=111

a=111

 

 变量名规则:字母、数字下划线,首位不能为数字

 

 变量值有特殊符号时需要用单引号括起来

[root@localhost ~]# a='a b c'

[root@localhost ~]# echo $a

a b c

 

[root@localhost ~]# c="a$bc" //加双引号$会被系统当作指定变量的

[root@localhost ~]# echo $c

a

[root@localhost ~]# c='a$bc'

[root@localhost ~]# echo $c

a$bc

 

 变量的累加

[root@localhost ~]# a=1

[root@localhost ~]# b=2

[root@localhost ~]# echo $a$b

12

[root@localhost ~]# a='$abc2' //单引号里的$会被系统认为只是个符号

[root@localhost ~]# echo $a$b

$abc22

 

[root@localhost ~]# d=b$b"b

[root@localhost ~]# echo $d

b2b

 

 全局变量export b=2

[root@localhost ~]# w

 22:44:03 up  1:10,  2 users,  load average: 0.00, 0.01, 0.05

USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT

root     pts/0     21:33    3.00s  0.26s  0.00s w

root     pts/1     21:38    1:04m  0.08s  0.04s -bash

[root@localhost ~]# echo $SSH_TTY  //查看自己在哪个tty终端下面

/dev/pts/0

 

[root@localhost ~]# lsx=linux  //非全局变量

[root@localhost ~]# echo $lsx

Linux

 

[root@localhost ~]# bash  //shell

[root@localhost ~]# echo $lsx //结果为空

[root@localhost ~]# yum install -y psmisc  //安装pstree命令

 

[root@localhost ~]# export lsx=linux //定义全局变量(向下面的子shell有效),在其他终端是不生效的

[root@localhost ~]# bash //shell

[root@localhost ~]# echo $lsx

linux

 

 unset变量

[root@localhost ~]# a=1

[root@localhost ~]# echo $a

1

[root@localhost ~]# unset a //取消变量

[root@localhost ~]# echo $a //结果为空

 

环境变量配置文件

/etc/profile(系统层) 用户环境变量,交互,登录才执行

预设了几个重要的变量。PATHUSERLOGNAMEMAILHOSTNAMEHISTSIZEumask.

 

 /etc/bashrc (系统层)用户不用登录,执行shell就生效

预设umaskPS1

[root@localhost ~]# echo $PS1

[\u@\h \W]\$   

//\u指用户、\h指主机名、\W当前目录、\$指字符#(普通用户显示)$

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

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

[root@localhost /etc/sysconfig]#

 

[root@localhost /etc/sysconfig]#PS1='{\u@\h \w}\$'

{root@localhost /etc/sysconfig}#

 

 ~/.bashrc(用户层)

该文件包含了专属于自己的shellbash信息,当登录和每次打开新的shell,该文件会被读取。如:可以将用户自定义的别名和变量写到这里

 

 ~/.bash_profile

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

 

 ~/.bash_history

该文件用于记录历史命令

 

 ~/.bash_logout

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

 

 PS1='[\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]]\$ '

 PS2..




本文转自 虾米的春天 51CTO博客,原文链接:http://blog.51cto.com/lsxme/1980881,如需转载请自行联系原作者

相关文章
|
4月前
|
存储 Java Shell
Shell 变量
10月更文挑战第2天
41 0
|
5月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
5月前
|
Java Shell Linux
Shell 变量设置
Shell设置变量
65 5
|
6月前
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
289 1
|
5月前
|
Java Shell Linux
Shell 变量设置25-1
Shell编程语言是一种非类型的解释型语言,无需像C++/Java那样事先声明变量。通过赋值即可定义变量,在Linux支持的所有Shell中均适用。变量分为局部变量与环境变量,前者仅限于定义脚本内使用,后者可在其派生的子进程中使用。常见系统变量如$0表示当前程序名称,$n表示第n个参数(n=1,2,...,9),$*代表所有参数,$#代表参数个数,$?表示命令执行后的状态(0为成功),$UID为当前用户ID,$PWD表示当前目录。定义变量如`A=123`,
40 0
|
7月前
|
分布式计算 大数据 Shell
MaxCompute产品使用合集之odps shell如何将ech变量的结果集合写入文件,并且指定服务器的位置
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
63 10
|
9月前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
119 2
|
7月前
|
Shell Linux
Linux环境变量之shell中export定义全局变量和echo 变量的区别
Linux环境变量之shell中export定义全局变量和echo 变量的区别
|
8月前
|
存储 Shell 开发者
Shell 变量详解:如何定义、使用和管理
**Shell脚本中,变量是核心元素,用于暂存数据。变量默认为字符串,赋值时等号两侧无空格。命名遵循:数字、字母、下划线,以非数字开头。常用特殊变量如 `$0` (脚本名),`$#` (参数个数)。定义变量可使用单引号(不解析变量)、双引号(解析变量)或不加引号(注意空格)。使用花括号明确变量边界,`readonly` 则可设定只读变量,`unset` 删除变量。实践这些概念以加深理解。**
268 0
|
8月前
|
Shell Linux
linux shell 脚本中变量截取
linux shell 脚本中变量截取
141 0