zoukankan      html  css  js  c++  java
  • 管道符和作业控制 & shell变量& 环境变量配置文件

    管道符  |

    用于将前一个指令的输出作为后一个指令的输入

    [root@pantinglinux ]# cat 1.txt | wc -l
    2
    [root@pantinglinux ]# cat 1.txt
    1.txt
    2.txt

    [root@pantinglinux ]# find ./ -type f | wc -l
    37

    作业控制

    当运行进程时,按ctrl+z使它暂停,然后使用fg命令恢复,或者利用bg命令使它到后台运行。ctrl+c可以使它终止。

    [root@pantinglinux ]# vim 1.txt

    [1]+ 已停止 vim 1.txt

    [root@pantinglinux ]# fg    调到前台来

    [root@pantinglinux ]# vim aa.txt

    [2]+ 已停止 vim aa.txt
    [root@pantinglinux ]# jobs
    [1]- 已停止 vim 1.txt
    [2]+ 已停止 vim aa.txt

    [root@pantinglinux ]# fg 2   前台调用2,aa.txt

    [root@pantinglinux ]# bg 2   后台调用2
    [2]+ vim aa.txt &
    [root@pantinglinux ]# jobs
    [1]- 已停止 vim 1.txt
    [2]+ 已停止 vim aa.txt

    [root@pantinglinux ]# fg 2    :q退出
    vim aa.txt
    [root@pantinglinux ]# jobs
    [1]+ 已停止 vim 1.txt

    [root@pantinglinux ]# sleep 1000     睡眠1000秒
    ^Z
    [1]+ 已停止 sleep 1000                      ctrl+z暂停
    [root@pantinglinux ]# jobs
    [1]+ 已停止 sleep 1000
    [root@pantinglinux ]# sleep 200       睡眠200秒
    ^Z                 ctrl+z暂停
    [2]+ 已停止 sleep 200
    [root@pantinglinux ]# jobs             
    [1]- 已停止 sleep 1000
    [2]+ 已停止 sleep 200
    [root@pantinglinux ]# fg                     前台调用最后一个任务   sleep 200
    sleep 200
    ^Z                                                        然后暂停
    [2]+ 已停止 sleep 200
    [root@pantinglinux ]# bg 1                  后台运行sleep 1000
    [1]- sleep 1000 &
    [root@pantinglinux ]# jobs                  
    [1]- 运行中 sleep 1000 &
    [2]+ 已停止 sleep 200

    [root@pantinglinux ]# fg 1
    sleep 1000
    ^C
    [root@pantinglinux ]# fg 2
    sleep 200
    [root@pantinglinux ]# ^C
    [root@pantinglinux ]# jobs

    [root@pantinglinux ]# sleep 100 &     sleep 100命令直接丢到后台运行
    [1] 2632
    [root@pantinglinux ]# jobs
    [1]+ 运行中 sleep 100 &

    env命令

    可以列出系统预设的全部系统变量

    [root@pantinglinux ]# env      只列出了部分
    XDG_SESSION_ID=1
    HOSTNAME=lizhipeng01
    SELINUX_ROLE_REQUESTED=
    TERM=xterm
    SHELL=/bin/bash
    HISTSIZE=5000
    SSH_CLIENT=192.168.5.1 3399 22
    SELINUX_USE_CURRENT_RANGE=
    SSH_TTY=/dev/pts/0
    USER=root
    LS_COLORS=rs=0:di=01;34:ln=01;36:

    HOSTNAME:表示主机名

    SHELL:表示当前用户的shell类型

    HISTSIZE:表示历史记录数

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

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

    PWD:表示当前目录

    LANG:与语言相关的环境变量

    HOME:表示当前用户的家目录

    LOGNAME:表示当前用户的登录名

    set命令
    和env命令类似,可以输出环境变量。set命令不仅可以显示系统预设的变量,也可以显示用户自定义的变量。

    [root@pantinglinux ]# myname=Lizhipeng
    [root@pantinglinux ]# echo $myname
    Lizhipeng
    [root@pantinglinux ]# set |grep myname
    myname=Lizhipeng

    但是这个自定义变量只能在当前shell中生效

    [root@pantinglinux ]# name=li
    [root@pantinglinux ]# echo $name
    li
    [root@pantinglinux ]# bash
    [root@pantinglinux ]# echo $name

    [root@pantinglinux ]# exit
    exit
    [root@pantinglinux ]# echo $name
    li

    使用bash命令可以再打开一个shell,此时先前设置的name变量已经不存在了,退出当前的shell回到原来的shell,name变量还在。如果想让设置的环境变量一直有效,可以有两种方法。

    1.允许系统内所有用户登录后都能使用该变量。具体做法:在/etc/profile文件的最后一行加入export name=li,然后运行 source /etc/profile就能生效了。再运行bash命令或者切换到其他账户就能看到效果

    [root@pantinglinux ]# vi /etc/profile
    [root@pantinglinux ]# source /etc/profile
    [root@pantinglinux ]# echo $name
    li
    [root@pantinglinux ]# bash
    [root@pantinglinux ]# echo $name
    li

    [root@pantinglinux ]# su - lizhipeng
    上一次登录:二 12月 26 07:11:46 CST 2017从 192.168.5.1pts/0 上
    [lizhipeng@lizhipeng01 ~]$ echo $name
    li

    2.仅允许当前用户使用该变量。具体操作方法:在用户主目录下的.bashrc文件的最后一行加入export name=li2,然后source .bashrc就能生效了。source命令的作用是将目前设定的配置刷新,即不用注销再登录也能生效。

    [root@pantinglinux ]# vi .bashrc
    [root@pantinglinux ]# echo $name       没有生效,因为没有source
    li
    [root@pantinglinux ]# source .bashrc
    [root@pantinglinux ]# echo $name        生效了
    li2
    [root@pantinglinux ]# su - lizhipeng
    上一次登录:四 1月 11 04:49:12 CST 2018pts/0 上
    [root@pantinglinux ~]$ echo $name
    li

    变量定义规则

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

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

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

    [root@pantinglinux ]# name='li ju'
    [root@pantinglinux ]# echo $name
    li ju
    [root@pantinglinux ]# name="li's"           当变量内容中本身带有单引号,这是需要加双引号
    [root@pantinglinux ]# echo $name
    li's

    [root@pantinglinux ]# name=`pwd`         如果变量内容中需要用到其他命令,运行结果则可以使用反引号
    [root@pantinglinux ]# echo $name
    /root

    [root@pantinglinux ]# name="$name"AAA      变量累积,加的是双引号
    [root@pantinglinux ]# echo $name
    /rootAAA

    [root@pantinglinux ]# name='$name'AAA        加的是单引号,里面的特殊字符全部失去其本身的作用
    [root@pantinglinux ]# echo $name
    $nameAAA

    系统环境变量与个人环境变量的配置文件

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

    /etc/bashrc:预设umask以及PS1。PS1就是我们输入命令时前面的那串字符

    [root@pantinglinux ]# echo $PS1
    [u@h W]$

    u指用户,h指主机名,W指当前目录,$指字符#(如果是普通用户,则显示$)

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

    .bashrc:该文件包含专属于自己的shell的bash信息,当登录或每次打开新的shell时,该文件会被读取。

    .bash_history:该文件用于记录命令历史。

    .bash_logout:当退出shell时,会执行该文件。

    [root@pantinglinux ]# echo $PS2
    >
    [root@pantinglinux ]# for i in `seq 1 10`
    > do
    > echo $i
    > done

  • 相关阅读:
    Spring sprint @ ninth day
    微软面试:找水王问题
    Spring sprint @ first day
    软件工程概论 购书最低价格问题
    网络助手的NABCD分析
    记初学net-SNMP
    求二维数组联通子数组和的最大值 (联通涂色) beta!
    二维数组环状最大子矩阵
    一维数组中的最大子数组(环状)
    图书助手冲刺第七天
  • 原文地址:https://www.cnblogs.com/pta188/p/8925675.html
Copyright © 2011-2022 走看看