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

  • 相关阅读:
    flink 读取kafka 数据,partition分配
    Flink 报错 "Could not find a suitable table factory for 'org.apache.flink.table.factories.StreamTableSourceFactory' in the classpath"
    flume接收http请求,并将数据写到kafka
    【翻译】Flume 1.8.0 User Guide(用户指南) Processors
    【翻译】Flume 1.8.0 User Guide(用户指南) Channel
    【翻译】Flume 1.8.0 User Guide(用户指南) Sink
    【翻译】Flume 1.8.0 User Guide(用户指南) source
    【翻译】Flume 1.8.0 User Guide(用户指南)
    Apache Flink 简单安装
    Java之使用IDE
  • 原文地址:https://www.cnblogs.com/pta188/p/8925675.html
Copyright © 2011-2022 走看看