zoukankan      html  css  js  c++  java
  • linux 简单记录3--重定向,通配符,环境变量,管道命令符,转义符

    1 输入输出重定向

    标准输入重定向(STDIN,文件描述符0)默认从键盘输入,也可以从其他文件或命令中输入
    标准输出重定向(STDOUT,文件描述符1)默认输出到屏幕
    错误输出重定向(STDERR,文件描述符为2)默认输出到屏幕

    [root@iscsi opt]# touch t3.txt
    [root@iscsi opt]# ls -l t3.txt 
    -rw-r--r-- 1 root root 0 Jun 18 15:00 t3.txt
    [root@iscsi opt]# ls -l xxx
    ls: cannot access xxx: No such file or directory

    输入重定向

    命令 < 文件 将文件作为命令的标准输入
    命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
    命令 < 文件 1 > 文件 2 将文件 1 作为命令的标准输入并将标准输出到文件 2

    输出重定向

    命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)
    命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
    命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
    命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面)
    命令 >> 文件 2>&1 或命令 &>> 文件   将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
    [root@iscsi opt]# man bash > readme.txt
    [root@iscsi opt]# more readme.txt
    [root@iscsi opt]# echo "yhq iesr to yang" > readme.txt 
    [root@iscsi opt]# echo "i ove t1234" >> readme.txt 
    [root@iscsi opt]# cat readme.txt 
    yhq iesr to yang
    i ove t1234
    [root@iscsi opt]# ls -l xxx 2>sdtrr.txt 
    [root@iscsi opt]# cat sdtrr.txt 
    ls: cannot access xxx: No such file or directory
    输入重定向的作用是把文件直接导入到命令中
    [root@iscsi opt]# wc -l < readme.txt #把readme.txt文件导入给wc -l命令,统计文件中的内容行数
    2
    [root@iscsi opt]# cat readme.txt |wc -l #上面命令的作用实际上等同
    2

    管道命令符:格式为“命令A|命令B|命令C"

    [root@iscsi opt]# grep "/sbin/nologin" /etc/passwd | wc -l
    37
    [root@iscsi opt]# ls -l /etc/ |more
    total 1420
    drwxr-xr-x.  3 root root      101 Apr 17 16:01 abrt
    -rw-r--r--.  1 root root       16 Apr 17 16:06 adjtime
    命令完成修改密码
    [root@iscsi opt]# echo "mon123" | passwd --stdin mongod #修改mongod用户的密码
    Changing password for user mongod.
    passwd: all authentication tokens updated successfully.
    [root@iscsi opt]# echo "cccc" |mail -s "sub" mongod
    [root@iscsi opt]# su - mongod
    Last login: Tue Jun 16 15:28:57 CST 2020 on pts/0
    [root@iscsi opt]# mail

    命令行的通配符

    比如星号(*)代表匹配零个或多个字符,问号(?)代表匹配单个字符,中括号内加上数字[0-9]代表匹配 0~9
    之间的单个数字的字符,而中括号内加上字母[abc]则是代表匹配 a、 b、 c 三个字符中的任意一个字符。
    [root@iscsi opt]# ls -l /dev/sda*
    brw-rw---- 1 root disk 8, 0 Jun 18 09:30 /dev/sda
    brw-rw---- 1 root disk 8, 1 Jun 18 09:30 /dev/sda1
    brw-rw---- 1 root disk 8, 2 Jun 18 09:30 /dev/sda2
    [root@iscsi opt]# ls -l /dev/sda?
    brw-rw---- 1 root disk 8, 1 Jun 18 09:30 /dev/sda1
    brw-rw---- 1 root disk 8, 2 Jun 18 09:30 /dev/sda2
    [root@iscsi opt]# ls -l /dev/sda[0-9]
    brw-rw---- 1 root disk 8, 1 Jun 18 09:30 /dev/sda1
    brw-rw---- 1 root disk 8, 2 Jun 18 09:30 /dev/sda2
    [root@iscsi opt]# ls -l /dev/sda[147]
    brw-rw---- 1 root disk 8, 1 Jun 18 09:30 /dev/sda1

    常用的转义字符

    反斜杠():使反斜杠后面的一个变量变为单纯的字符串。
    单引号(''):转义其中所有的变量为单纯的字符串。
    双引号(""):保留其中的变量属性,不进行转义处理。
    反引号(``):把其中的命令执行后返回结果。
    [root@iscsi opt]# y1=6
    [root@iscsi opt]# echo "y1 is $y1"
    y1 is 6
    [root@iscsi opt]# echo "y1 is $$y1" #$$显示当前程序的进程id号码
    y1 is 2614y1
    [root@iscsi opt]# echo "y1 is $$y1" #使用进行转义
    y1 is $6
    [root@iscsi opt]# echo `uname -a` #输出uname -a的值
    Linux iscsi 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

    重要的环境变量

    在linux系统中一切都是文件,linux命令也是一样
    命令在linux中的执行分为4个步骤
    1 判断用户是否以绝对路径或相对路径的方式输入命令(比如/bin/ls),如果是就直接执行
    2 linux系统检查用户输入的命令是否为“别名命令”,“alias 别名=命令”。取消别名“unalias 命令”。
    3 bash解释器判断用户输入的是内部命令还是外部命令
    --内部命令是解释器内部的指令,会直接执行
    --外部命令,到步骤4
    4 系统在多个路径中查找用户输入的命令文件,定义这些路径的变量PATH,告诉bash解释器待执行的命令可能存放的位置。
    [root@iscsi opt]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@iscsi opt]# PATH=$PATH:/bin
    [root@iscsi opt]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin
    [root@iscsi opt]# env #查看系统所有的环境变量,以下是比较重要的
    HOME 用户的主目录(即家目录)
    SHELL 用户在使用的 Shell 解释器名称
    HISTSIZE 输出的历史命令记录条数
    HISTFILESIZE 保存的历史命令记录条数
    MAIL 邮件保存路径
    LANG 系统语言、语系名称
    RANDOM 生成一个随机数字
    PS1 Bash 解释器的提示符
    PATH 定义解释器搜索用户执行命令的路径
    EDITOR 用户默认的文本编辑器
    linux是一个多用户多任务的操作系统,为每个用户提供独立的、合适的工作运行环境。
    [root@iscsi ~]# echo $HOME
    /root
    [root@iscsi ~]# useradd mysql
    [root@iscsi ~]# su - mysql
    [mysql@iscsi ~]$ echo $HOME
    /home/mysql
    自定义变量
    [root@iscsi ~]# mkdir /home/workdir
    [root@iscsi ~]# WORKDIR=/home/workdir/ #不具有全局性
    [root@iscsi ~]# cd $WORKDIR
    Similar command is: 'pwd'
    [root@iscsi workdir]# pwd
    /home/workdir
    [root@iscsi workdir]# export WORKDIR #export命令将提升为全局变量
  • 相关阅读:
    转载:SqlServer数据库性能优化详解
    复杂事件处理技术概览(一)
    Netty : writeAndFlush的线程安全及并发问题
    如何在RCP程序中添加一个banner栏
    AChecker + Selenium2对需要登录的页面进行自动化可访问性测试
    5分钟开启Esper之旅
    使SWT/JFace支持跨平台
    Ubuntu上Docker安装Trouble Shooting
    使Docker Container支持运行SWT程序
    Xcode5中如何切换Storyboards为xib
  • 原文地址:https://www.cnblogs.com/yhq1314/p/13158650.html
Copyright © 2011-2022 走看看