当前位置: 首页 > Linux

LinuxShell编程(一)——Bash的基本功能:别名、快捷键、历史命令、输出重定向、管道符号、shell中的特殊符号

时间:2023-04-06 11:10:09 Linux

Bash的基本功能一、命令别名1、命令的取值顺序effect被执行并使用绝对路径或相对路径执行命令执行别名执行Bash内部命令根据$PATH环境变量定义的目录顺序执行找到的第一个命令2.查看别名命令格式grep='grep--color=auto'aliasl='ls-CF'aliasla='ls-A'aliasll='ls-AlhF--color=auto'aliasls='ls--color=auto'别名vi='vim'[vagrant/tmp]]$aliaslsaliasls='ls--color=auto'[vagrant/tmp]]$aliascp-bash:alias:cp:notfound3.设置别名命令格式aliasalias='命令参数'instance[vagrant/tmp]]$aliascat='cat-n'[vagrant/tmp]]$aliasless='less-mN'[vagrant/tmp]]$aliasaliascat='cat-n'aliasgrep='grep--color=auto'aliasl='ls-CF'aliasla='ls-A'aliasless='less-mN'aliasll='ls-AlhF--color=auto'aliasls='ls--color=auto'aliasvi='vim'设置别名永久生效。在上面的命令行中设置别名。别名只能在当前bash中使用,一旦退出,别名将失效。要使别名永久化,您需要将别名添加到~/.bashrc配置文件中。~/.bashrc文件#lsaliasesaliasgrep='grep--color=auto'aliasll='ls-AlhF--color=auto'aliasla='ls-A'aliasl='ls-CF'aliasvi='vim'aliascat='cat-n'aliasless='less-mN'4.删除alias命令格式unaliasaliasinstance[vagrant/tmp]]$aliasaliascat='cat-n'aliasgrep='grep--color=auto'aliasl='ls-CF'aliasla='ls-A'aliasless='less-mN'aliasll='ls-AlhF--color=auto'aliasls='ls--color=auto'aliasvi='vim'[vagrant/tmp]]$unaliasgrep[vagrant/tmp]]$unaliascat[vagrant/tmp]]$aliasaliasl='ls-CF'aliasla='ls-A'aliasless='less-mN'aliasll='ls-AlhF--color=auto'aliasls='ls--color=auto'aliasvi='vim'删除别名是永久性的并且设置别名,如果你想永久删除一个别名,只需从~/.bashrc配置文件中删除该别名即可。2.常用快捷键Ctrl+c:强制停止当前命令Ctrl+l:清屏Ctrl+a:将光标移至命令行开头Ctrl+e:将光标移至命令行末尾Ctrl+u:从光标位置删除到第一行Ctrl+z:发送命令到后台执行Ctrl+r:在命令历史中搜索3.历史命令1.命令格式history[选项][历史命令保存文件]2.选项-c清除历史命令-w缓存将历史命令写入历史命令保存文件~/bash_history3。historysave历史命令的条数默认会保存1000条,可以在环境变量配置文件~/.bashrc#中修改history长度的设置见bash中的HISTSIZE和HISTFILESIZE(1)HISTSIZE=1000HISTFILESIZE=20004。调用历史命令使用上下箭头调用之前的历史命令使用!n重复执行第n条历史命令使用!!重复前面的命令使用!字符串重复最后一个字符串开头的命令4.输出重定向1.标准输入输出设备设备文件名文件描述符类型键盘/dev/stdin0标准输入监视器/dev/stdout1标准输出监视器/dev/stderr2错误输出2.输出重定向Directingstandardoutputredirectingcommand>file通过覆盖的方式将命令的正确输出存储在指定的文件或设备中。命令>>文件通过附加的方式将命令的正确输出存储在指定的文件或设备中。错误输出重定向errorcommand2>file将命令的错误输出以覆盖的方式存储在指定的文件或设备中。错误命令2>>file将命令的错误输出以追加的方式存储在指定的文件或设备中。同时保存正确输出和错误输出。>File2>&1将命令的正确输出和错误输出都以覆盖的方式存储在指定的文件中。command>>file2>&1(常用)将命令的正确输出和错误输出以追加的方式存储在指定的文件中。命令&>文件通过覆盖的方式将命令的正确输出和错误输出都存储在指定的文件中。Command&>>file(常用)将命令的正确输出和错误输出以追加的方式存储在指定的文件中。Command>>file12>>file2(常用)将正确的命令输出追加到文件1,将错误的输出追加到文件2。#将shell.sh运行的正确输出保存到access.log文件,并将错误输出存储到error.log文件中shell.sh>>access.log2>>error.log3.输入重定向命令/etc/redis/redis6379.conf#在/home目录下查找包含"max_children"的文件sudofind/home-typef-name'*'|xargsgrep"max_children"6.Shell中间特殊符号1.通配符通配符有什么作用?匹配任意字符*匹配0或任意字符,即可以匹配任意内容[]匹配方括号中的任意字符。例如:[abc]表示匹配a/b/c中的任意字符[-]匹配方括号中的任意字符。-代表一个范围。例如:[a-z]表示匹配任何小写字母[^]逻辑not,匹配的不是方括号中的任何字符。例如:[^0-9]表示匹配任何不是数字的字符[vagrant/tmp]]$lltotal0-rw-rw-r--1vagrantvagrant0May302:21ab1-rw-rw-r--1vagrantvagrant0May302:21ab2-rw-rw-r--1vagrantvagrant0May302:21ab3-rw-rw-r--1vagrantvagrant0May302:21abc-rw-rw-r--1vagrantvagrant0May302:21abc.log-rw-rw-r--1vagrantvagrant0May302:21abd-rw-rw-r--1vagrantvagrant0May302:21abe[流浪汉/tmp]]$lsabcabc[流浪汉/tmp]]$lsabc*abcabc.log[流浪汉/tmp]]$lsab?ab1ab2ab3abcabdabe[流浪汉/tmp]]$lsab[0-9]ab1ab2ab3[流浪汉/tmp]]$lsab[0-9a-z]ab1ab2ab3abcabdabe[流浪汉/tmp]]$lsab[^a-z]ab1ab2ab32。Bash其他特殊符号被用作''单引号。单引号内的所有特殊符号,如$和`(反引号)都没有特殊含义""双引号。双引号中没有特殊符号,但$、`(反引号)、\是例外,分别有“调用变量值”??、“引用命令”和“转义字符”的特殊含义``反引号。反引号中的内容是一个系统命令,在Bash中会首先执行。$()与反引号作用相同,用于引用系统命令。但是,建议使用$(),因为反引号非常容易被误读。#在Shell脚本中,#开头的行代表注释$,用于调用变量的值。如果需要调用变量名的值,需要使用$name获取变量\转义字符的值。\后面的特殊符号将失去特殊意义,变成普通字符。例如,\$将输出$符号,而不是将其用作变量引用