提升命令行操作逼格不得不学的操作

输入输出重定向
命令的输入重定向和输出重定向的原理

输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中

  • 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。
  • 标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕,也可输出到其他文件或命令中。
  • 错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕,同上。
输入重定向中用到的符号及其作用
符号作用
命令 < 文件将文件作为命令的标准输入
命令 << 分界符从标准输入中读入,直到遇见分界符才停止
命令 < 文件1 > 文件2将文件1作为命令的标准输入并将标准输出到文件2
输出重定向中用到的符号及其作用
符号作用
命令 > 文件将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
命令 &>> 文件作用同上 ,简化写法

代码演示:

# >  重定向echo输出内容到readme.txt中(清空模式)
# >> 重定向echo输出内容到readme.txt中(追加模式)
[root@localhost ~]# echo "Welcome to LinuxProbe.Com" > readme.txt
[root@localhost ~]# echo "Quality linux learning materials" >> readme.txt
[root@localhost ~]# cat readme.txt
Welcome to LinuxProbe.Com
Quality linux learning materials[root@linuxprobe ~]# grep "/sbin/nologin" /etc/passwd | wc -l
33
#通过输入重定向将readme.txt的内容作为wc命令的输入,统计readme.txt文件的行数
[root@localhost ~]# wc -l < readme.txt
2
管道命令符
管道命令符的作用

把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入

代码演示:

#grep命令找出系统中所有禁止登录的用户,通过管道符,交给wc命令统计行数
[root@localhost ~]# grep "/sbin/nologin" /etc/passwd | wc -l
33
#通过组合echo命令和管道符,再加上passwd的 --stdin参数,实现指令式的更改密码操作
[root@localhost ~]# echo "linuxprobe" | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.

管道符可以在命令组合中多次使用;

#ifconfig输出网卡信息,grep提取出带有IP字段的行,head输出第一行,cut根据空格分隔文本,提取出IP
[root@localhost ~]# ifconfig | grep inet | head -n 1 | cut -d ' ' -f 10
192.168.10.10
命令行的通配符

常用通配符写法及作用:

符号作用
星号(*)代表匹配零个或多个字符
问号(?)代表匹配单个字符
中括号内加上数字[0-9]代表匹配0~9之间的单个数字的字符
中括号内加上字母[abc]代表匹配a、b、c三个字符中的任意一个字符。

代码演示:

#列出/dev目录下所有以sda开头的文件
[root@localhost ~]# ls -l /dev/sda*
brw-rw----. 1 root disk 8, 0 May 4 15:55 /dev/sda
brw-rw----. 1 root disk 8, 1 May 4 15:55 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 4 15:55 /dev/sda2
#列出/dev目录下所有以sda开头,其后有且必须有一个字符的文件
[root@localhost ~]# ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 May 4 15:55 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 4 15:55 /dev/sda2
#列出/dev目录下所有以sda开头,且其后只有一个数字的文件
[root@localhost ~]# ls -l /dev/sda[0-9]
brw-rw----. 1 root disk 8, 1 May 4 15:55 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 4 15:55 /dev/sda2
#列出/dev目录下所有以sda开头,且其后只有1,3,5中任意一个数字的文件
[root@localhost ~]# ls -l /dev/sda[135]
brw-rw----. 1 root disk 8, 1 May 4 15:55 /dev/sda1
常用的转义字符
  • 反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。

  • 单引号(’’):转义其中所有的变量为单纯的字符串。

  • 双引号(""):保留其中的变量属性,不进行转义处理。

  • 反引号(``):把其中的命令执行后返回结果。

代码演示:

[root@localhost ~]# PRICE=5							#定义变量PRICE并赋值为5
[root@localhost ~]# echo "Price is $PRICE"			#双引号不对变量进行转义处理
Price is 5											#$加变量名,输出变量的值
[root@localhost ~]# echo "Price is $$PRICE" 		#在价格前显示一个$符号
Price is 3767PRICE									#$$会显示出当前进程的ID号码
[root@localhost ~]# echo "Price is \$$PRICE"		#使用反斜杠对$符号进行转义
Price is $5											#输出结果中可以显示出$符号
[root@localhost ~]# echo `ls | wc -l`				#将反引号里的内容作为命令执行
6													#结果为当前目录下的文件个数
[root@localhost ~]# echo `notacommand`		    	#执行notacommand
-bash: notacommand: command not found				#报错,指令未找到
重要的环境变量

命令在Linux系统中的执行分为4个步骤。
第1步: 判断用户是否以绝对路径或相对路径的方式输入命令;
第2步: Linux系统检查用户输入的命令是否为“别名命令”;
第3步: Bash解释器判断用户输入的是内部命令还是外部命令;
第4步: 系统在环境变量PATH中查找用户输入的命令文件;
代码详解:

#绝对路径与相对路径
[root@localhost ~]# /bin/ls							#绝对路径
[root@localhost ~]# ls								#相对路径
#别名命令
[root@localhost ~]# alias rm=‘rm -i’				#添加别名命令
[root@localhost ~]# alias rm 						#显示rm命令的别名信息
alias rm='rm -i'									#执行rm命令会被替换为rm -i
[root@localhost ~]# rm readme.txt					#rm为定义后的别名命令
rm: remove regular file ‘readme.txt’? n 			#再次确认是否删除
[root@localhost ~]# unalias rm						#取消别名命令
[root@localhost ~]# rm readme.txt					#直接删除,无需再次确认
#内外部命令
[root@localhost ~]# type echo					
echo is a shell builtin								#echo命令是一个内部命令
[root@localhost ~]# type cat
cat is /usr/bin/cat									#cat命令是一个外部命令
#环境变量PATH
[root@localhost ~]# echo $PATH						#输出环境变量的值
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@localhost ~]# PATH=$PATH:/root/bin			#将/root/bin添加到PATH中
[root@localhost ~]# echo $PATH						#重新输出PATH变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Linux系统中最重要的10个环境变量
变量名称作用
HOME用户的主目录(即家目录)
SHELL用户在使用的Shell解释器名称
HISTSIZE输出的历史命令记录条数
HISTFILESIZE保存的历史命令记录条数
MAIL邮件保存路径
LANG系统语言、语系名称
RANDOM生成一个随机数字
PS1 Bash解释器的提示符
PATH定义解释器搜索用户执行命令的路径
EDITOR用户默认的文本编辑器

代码演示:

#HOME环境变量
[root@localhost ~]# echo $HOME						#输出root用户的HOME变量值
/root												#root用户的家目录
[root@localhost ~]# su - user						#切换用户
Last login: Fri Feb 27 19:49:57 CST 2017 on pts/0
[user@localhost ~]$ echo $HOME						#输出user用户的HOME变量值
/home/user											#user用户的家目录
#自定义变量
[root@localhost ~]# mkdir /home/workdir				#创建目录
[root@localhost ~]# WORKDIR=/home/workdir			#创建变量并赋值
[root@localhost ~]# cd $WORKDIR 					#利用变量切换目录
[root@localhost workdir]# pwd						#查看当前工作目录
/home/workdir
[root@localhost workdir]# su user					#切换用户
Last login: Fri Mar 20 20:52:10 CST 2017 on pts/0
[user@localhost ~]$ cd $WORKDIR						#使用WORKDIR变量
[user@localhost ~]$ echo $WORKDIR					#WORKDIR对user用户不可见
[user@localhost ~]$ exit							#退出user用户
[root@localhost ~]# export WORKDIR					#提升WORKDIR为全局变量
[root@localhost ~]# su user 						#重新切换为user
Last login: Fri Mar 20 21:52:10 CST 2017 on pts/0
[user@localhost ~]$ cd $WORKDIR						#user用户使用WORKDIR
[user@localhost workdir]$ pwd						#查看当前工作目录
/home/workdir										#user用户使用WORKDIR成功

day04
素材来源: https://www.linuxprobe.com/chapter-03.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值