管道符和作业控制
| 把一个文件的输出作为后面的输入
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变量
PATH,HOME,PWD,LOGNAME
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(系统层) 用户环境变量,交互,登录才执行
预设了几个重要的变量。PATH、USER、LOGNAME、MAIL、HOSTNAME、HISTSIZE、umask.
/etc/bashrc (系统层)用户不用登录,执行shell就生效
预设umask、PS1
[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(用户层)
该文件包含了专属于自己的shell的bash信息,当登录和每次打开新的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,如需转载请自行联系原作者