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