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命令将提升为全局变量

 

posted @ 2020-06-18 17:19  春困秋乏夏打盹  阅读(279)  评论(0编辑  收藏  举报