3.8 8.6-8.9听课笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.8 8.6-8.9听课笔记相关的知识,希望对你有一定的参考价值。

管道符和作业控制

 

[[email protected] ~]# cat a.txt

-bash: lsaaa: 未找到命令

-bash: lsaaa: 未找到命令

[[email protected] ~]# cat a.txt|wc -l

2

[[email protected] ~]# cat a.txt|grep 'aaa'

-bash: lsaaa: 未找到命令

-bash: lsaaa: 未找到命令

*将前面的结果交给后面的命令执行

 

Ctrl+z 临时暂停正在执行的进程(调向后台)

 

[[email protected] ~]# vim 2.txt

 

[1]+  已停止               vim 2.txt

[[email protected] ~]# df -h

文件系统        容量  已用  可用 已用% 挂载点

/dev/sda3        28G  1.4G   27G    5% /

devtmpfs        479M     0  479M    0% /dev

tmpfs           489M     0  489M    0% /dev/shm

tmpfs           489M  6.7M  482M    2% /run

tmpfs           489M     0  489M    0% /sys/fs/cgroup

/dev/sda1       197M   97M  100M   50% /boot

tmpfs            98M     0   98M    0% /run/user/0

[[email protected] ~]# fg 将后台进程调回前台

vim 2.txt

[[email protected] ~]# vim aa.txt

 

[2]+  已停止               vim aa.txt

[[email protected] ~]# fg

vim aa.txt

 

[2]+  已停止               vim aa.txt

[[email protected] ~]# jobs 将已经停止的后台任务列出

[1]-  已停止               vim 2.txt

[2]+  已停止               vim aa.txt

[[email protected] ~]# fg 2 多进程在后台时调回一个进程(fg+id号)

vim aa.txt

[[email protected] ~]jobs

[1]-  已停止               vim 2.txt

[2]+  已停止               vim aa.txt

[3]   运行中               vmstat 1 &

[[email protected] ~]fg 3

[[email protected] ~]vmstat 1 该进程会不停的在屏幕上输出信息,按ctrl+z进程停止,敲bg进程会在后台运行起来

[[email protected] ~]# jobs

[3]-  已停止               vmstat 1

[4]+  已停止               vim aa

[[email protected] ~]# bg 4

[4]+ vim aa &

[[email protected] ~]# jobs

[3]-  已停止               vmstat 1

[4]+  已停止               vim aa

*有的命令在后台只能是停止状态(vim),有些命令按ctrl+z会被放在后台并停止,但使用bg+id可以使这种命令在后台运行起来(vmstat 1

[[email protected] ~]# sleep 1000 在这1000秒内什么也不做

Ctrl+z停止进程,暂停这种状态

[[email protected] ~]#

[[email protected] ~]# sleep 200

^Z

[6]+  已停止               sleep 200

[[email protected] ~]# jobs

[3]   已停止               vmstat 1

[4]   已停止               vim aa

[5]-  已停止               sleep 1000

[6]+  已停止               sleep 200

[[email protected] ~]# fg

sleep 200

fg后不加任何内容则将最新被停止的进程拉到前台执行

[[email protected] ~]# bg 6

[6]+ sleep 200 &

[[email protected] ~]# jobs

[3]   已停止               vmstat 1

[4]-  已停止               vim aa

[5]+  已停止               sleep 1000

[6]   运行中               sleep 200 &

被执行了bg的停止进程会在后台重新运行起来

[[email protected] ~]# sleep 100 &

[7] 1112

[6]   完成                  sleep 200

[[email protected] ~]# jobs

[3]   已停止               vmstat 1

[4]-  已停止               vim aa

[5]+  已停止               sleep 1000

[7]   运行中               sleep 100 &

[[email protected] ~]#

将一条命令直接丢到后台执行

 

*Jobs命令只能发现目前终端下的被放在后台的进程

[[email protected] ~]# ps aux |grep sleep

root       1109  0.0  0.0 107904   612 pts/0    T    21:32   0:00 sleep 1000

root       1115  0.0  0.0 112676   984 pts/0    S+   21:43   0:00 grep --color=auto sleep

[7]   完成                  sleep 100

 

Shell变量

 

查看变量

[[email protected] ~]# env 查看系统常用的环境变量

XDG_SESSION_ID=4

HOSTNAME=localhost.localdomain

SELINUX_ROLE_REQUESTED=

TERM=xterm

SHELL=/bin/bash

HISTSIZE=2000

[[email protected] ~]# set 查看系统内置环境变量和用户自定义变量

[[email protected] ~]# a=111 自定义变量

[[email protected] ~]# set |grep '111' 111为条件在set的结果下查找

PPID=1118

a=111

[[email protected] ~]# env |grep 'a=111' env无法搜索自定义变量

[[email protected] ~]#

[[email protected] ~]# env |grep HOSTNAME

HOSTNAME=localhost.localdomain

 

系统变量通常不能修改(可以通过配置文件更改),自定义变量是用户自己定义的变量;

变量名可以是字母、数字、下划线,变量名不能以数字开头;

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

 

[[email protected] ~]# a1=2

[[email protected] ~]# echo $a1

2

[[email protected] ~]# _a1=3

[[email protected] ~]# echo $_a1

3

[[email protected] ~]# 1a1=4

-bash: 1a1=4: 未找到命令

 

[[email protected] ~]# g=a b c

-bash: b: 未找到命令

[[email protected] ~]# g='a b c'

 

[[email protected] ~]# h="a$bc"

[[email protected] ~]# echo $h

a

[[email protected] ~]# h='a$bc' ‘’中无论任何特殊符号都会原样输出

[[email protected] ~]# echo $h

a$bc

单引号:

可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看见的是什么就会输出什么。

双引号:

  把双引号内的内容输出出来;如果内容中有命令,变量等,会先把变量,命令解析出结果,然后在输出最终内容来。

  双引号内命令或变量的写法为`命令或变量`$(命令或变量)。

 

无引号:

把内容输出出来,可能不会讲含有空格的字符串视为一个整体输出,如果内容中有命令,变量等,会先把变量,命令解析结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用,不过最好用双引号替代之

[[email protected] ~]# c="a$b"c  “”中的变量、命令会先被执行再输出

[[email protected] ~]# echo $c

a3c

[[email protected] ~]#

 

全局变量

[[email protected] ~]# w 查看当前系统用户登录情况

 22:36:39 up  2:07,  3 users,  load average: 0.00, 0.01, 0.02

USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT

root     tty1                      20:30    2:06m  0.02s  0.02s -bash

root     pts/0    192.168.91.1     20:30   40:55   1.45s  0.14s -bash

root     pts/1    192.168.91.1     21:45    7.00s  0.09s  0.02s w

[[email protected] ~]# echo $SSH_TTY 通过环境变量查看自己在哪个tty

/dev/pts/1

[[email protected] ~]# echo $SSH_TTY

/dev/pts/1

[[email protected] ~]# hyc=linux

[[email protected] ~]# echo $hyc

linux

[[email protected] ~]# echo $SSH_TTY

/dev/pts/0

[[email protected] ~]# echo $hyc

在一个tty下定义的变量在另一个tty下不生效

[[email protected] ~]# pstree

技术分享图片

*重新打开一个bash(子shell)执行pstree命令

[[email protected] ~]# echo $hyc 打开的两个子shell并没有继承自定义变量hyc

 

[[email protected] ~]# exit

exit

[[email protected] ~]# echo $hyc

 

[[email protected] ~]# exit

exit

[[email protected] ~]# echo $hyc 退出到最初的shell

linux

之前自定义的变量只在本地生效

 

定义全局变量

[[email protected] ~]# export aming=linux

[[email protected] ~]# echo $aming

linux

[[email protected] ~]# bash

[[email protected] ~]# echo $aming

Linux

全局变量向下生效,该shell下配置的全局变量只在该shell的子shell及以下的shell中生效;

不同sshd的全局变量互不影响;

[[email protected] ~]# unset aming 取消自定义的变量

 

[[email protected] ~]# export yy=aa

[[email protected] ~]# echo $yy

aa

[[email protected] ~]# bash

[[email protected] ~]# echo $yy

aa

[[email protected] ~]# unset yy

[[email protected] ~]# echo $yy

shell可以删除从上级shell获得的全局变量

 

环境变量配置文件

 

系统层次配置文件

/etc/profile /etc/bashrc

用户层次

~/.bashrc  ~/.bash_history  ~/.bash_logout  ~/.bash_profile

Profile是用户登录才生效;

bashrc在系统执行shell时就生效,此时用户可以不用登录

如果需要变量全局生效则在/etc下编辑对应文件,如果只针对某个用户生效则在用户家目录下编辑对应文件

 

~/.bash_logout 定义用户每次登出时执行的操作

 

变量PS1

[[email protected] ~]PS1影响

[[email protected] ~/d6z/hyc]#echo $PS1

[\[email protected]\h \w]\$

[[email protected] ~/d6z/hyc]#PS1='[\[email protected]\h \W]\$'

[[email protected] hyc]#

W小写代表绝对路径,大写代表相对路径

[[email protected] hyc]#PS1='<\[email protected]\h \W>\$'  []可代替为其他任意符号或消除

<[email protected] hyc>#

 

设置使括号内容带颜色

技术分享图片

 

变量PS2

 

例如进入mysql会进入一个小终端,此时一行开头显示的内容会用到变量PS2

[email protected] ~]#echo $PS2

[email protected] ~]#for i in `seq 1 100` 进入PS2

> done

-bash: 未预期的符号 `done' 附近有语法错误

[email protected] ~]#PS2="#"

[email protected] ~]#for i in `seq 1 100`

#


以上是关于3.8 8.6-8.9听课笔记的主要内容,如果未能解决你的问题,请参考以下文章

python 听课笔记- 序(鸡汤)

APIO2017听课笔记关键词

听课笔记

Daily dictation 听课笔记

Struts+Hibernate 听课笔记

3.12 听课笔记