基础知识命令历史位于~/.bash_history文件中,可以用cat命令查看。需要注意的是,它存放的是上次登录时执行的命令,本次登录时执行的命令会暂存在内存中。Tab键可用于完成命令或提示可选操作\可用于换行以增强命令的可读性。该命令将根据环境变量PATH进行搜索。您可以使用echo$PATH查看环境变量。命令执行过程中,会先执行反引号中的命令,执行结果会作为外部输入的信息,$()同命令执行顺序相同:以相对/绝对路径执行命令,找到别名的命令并执行,使用bash内置命令执行,找到第一个命令并通过$PATH的顺序执行数据流重定向是指在一条指令执行后,将应该出现在屏幕上的数据进行传输执行到另一个地方。直接执行和bash或sh执行脚本会在子进程中执行,而使用源码执行脚本会在父进程中执行各种指令和例子aliasalias:显示所有别名aliaslm='ls-al':设置别名为lmunalias:取消别名type格式:type[-ta]name可以通过type命令找到可执行文件而不是一般的文件typename:显示名称是外部命令还是bash内部命令type-tname:外部命令为file,别名命令为alias,内置命令为builtintype-aname:从PATH变量定义的路径中,列出所有包含name的命令,包括aliasechodisplayvariableecho$PATH:display环境变量echo$HOME:显示当前用户的主目录echo$MAIL:显示当前用户的邮件目录,也可以直接赋值。赋值时,需要注意等号两边的空格。如果有空格,可以用双引号括起来。如果要累加,应该使用双引号,比如name="$name"yesunsetVARIABLE:取消对VARIABLE的赋值exportVARIALBE:导出变量,这样子进程也可以使用env查看所有的环境变量,比如PATH,HOME,SHELLset不仅可以查看环境变量,还可以显示bash中的所有其他变量,比如HISTFILE,MAILCHECK,PS1PS1默认格式是'[\u@\h\W]\$'这是我们通常看到[rale@localhost~]$这里参数的含义如下:\d:显示周、月、日的格式\H:完整的主机名\h:只取主机名第一个小数点前的名称\t:显示24小时制时间格式为“HH:MM:SS”\t:显示时间为12小时制\A:显示时间为24小时制"HH:MM"的格式\@:以"am/pm"的格式显示时间"\u:当前用户的账户名\v:bash版本信息\w:完整的工作目录\W:使用basename获取工作目录名,只显示最后一个目录名\#:执行的命令数\$:提示符,如果是root则为#,否则为$可以使用如下命令PS1='[\u@\h\w\A#\#]\$'修改PS1。read从键盘获取输入read[-pt]variable-p:后跟提示符-t:后跟等待秒数read-p"请输入你的名字:"-t30namedeclare/typeset声明的类型变量,默认类型为字符串,不能进行小数运算declare[-aixr]variable-a:定义以下变量为数组类型-i:定义以下变量为整数数值类型-x:定义以下变量作为环境变量,相当于export-r:设置变量为readonlydeclare-isum=100+100+50historyhistoryn:显示最近n条命令history-c:清除当前shellhistory中的所有历史内容-ahistfiles:设置新添加的历史命令被添加到histfiles。如果有histfiles,它会默认写入~/bash_history。history-rhistfiles:将histfiles的内容读入当前shell的history内存中history-whistfiles:将history的内容写入histfiles!:执行编号为number的命令!command:执行以command开头的命令!!:执行前面的命令source读取环境配置文件sourceENV_FILE的命令例如修改~/.bashrc,不需要注销重新登录,直接使用source命令即可。最后查一下这个月有哪些用户登陆过主机。数据流重定向标准输入:code为0,<或<<标准输出:code为1,>或>>标准错误输出:code为2,2>或2>>单个符号表示重写,两个符号表示添加find/home-name.bashrc>list2>&1将两个输出写入同一个文件时,使用2>&1命令cat>catfile:创建一个文件,并用键盘输入的数据覆盖该文件,按[ctrl]+d结束输入cat>catfile<~/.bashrc写入文件内容并覆盖catfile的内容cat>catfile<<"eof"结束输入,eof不会出现在文件中pipe命令pipe命令只会处理标准输出,标准错误输出将被忽略。管道命令必须能够从前一个命令接收数据才能成为标准输入。流水线命令包括:??lessmoreheadtail等,cut以行为单位处理信息,分割获取每一行的数据。但它在多空间环境中效果不佳。cut-d'separatorcharacter'-ffields用于分隔字符cut-ccharacterrange用于整齐排列信息echo$PATH|cut-d':'-f3,5split$PATHaccordingto:得到第3个值和第5个值last|剪切-d''-f1导出|cut-c12-获取每行export后的值,以12个字符开头。取出一行grep[-acinv][--color=auto]'Findstring'filename-a:在二进制文件中以文本形式查找数据-c:计算找到的个数'Findstring'-i:忽略大小写不同-n:输出行号-v:输出没有找到关键字的行--color=auto:最后给关键字部分上色|grep'root'取出root最后出现的行|grep-v'root'去掉lastlast|中没有root的行grep'根'|cut-d''-f1取出包含根的行的第一个值sort[-fbMnrtuk][fileorstdin]-f:ignoreCase-b:忽略第一个空格字符part-M:按名称排序月份-n:使用纯数字排序-r:反向排序-u:相同的数据只出现一次-t:分隔符,默认为Tab键-k:按哪个区间排序cat/etc/passed|sort-t':'-k3-n将每行输入按照:拆分并按照第三列排序,第三列作为数字进行排序,默认为字符串排序uniq删除重复行,用于统计uniq[-ic]-i:忽略大小写-c:最后计数|剪切-d''-f1|排序|优衣库|剪切-d''-f1|排序|uniq-c获取最近登录用户的登录次数wc统计文件行数、字数和字符数wc[-lwm]-l只列出多少行-w只列出多少字-m多少字符猫/etc/man.config|wc将输出文件的行数、单词数和字符数last|grep[a-zzA-z]|grep-v'wtmp'|wc-l知道最近登录的用户数,去掉空行与wtmplinetee的双向重定向,即可以将一个标准输出转储到一个文件中,同样的数据会继续发送到屏幕上进行处理tee最后开球。清单|cut-d""-f1将last的内容转移到last.listtr删除一条消息中的文本,或者转换文本消息tr[-ds]SET1...-d删除消息SET1这个字符串-s替换重复字符最后|tr'[a-z][A-Z]'将最后的所有小写字符转换为大写字符cat/etc/passwd|tr-d':'会输出信息删除冒号col常用来代替tab键或将手册页保存为纯文本文件以便于参考col[-xb]-x将tab转换为等效的空格键,-b在文本中有一个反斜杠当使用/时,只保留反斜杠后面的字符。join在两个文件中添加一次具有相同数据的行。使用join前要特别注意对文件进行排序,否则有些比较项会被跳过,if如果两个文件相同,将两个数据连成一行,将第一个字段放在第一个-i:忽略大小写差异-1:表示第一个文件使用哪个字段进行分析-2:表示first两个文件使用哪个字段来分析join-t':'-14-23/etc/passwd/etc/group按照以下方式划分两个文件:第一个文件使用第四个作为比较字符,第一个两个文件用第三个作为比较字符粘贴直接把两行粘贴在一起,中间用tab键分开粘贴。paste[-d]file1file2-d表示分隔符,默认为tab。如果文件部分写成-,则表示数据来自标准输入cat/etc/group|粘贴/etc/passwd/etc/shadow-|head-n3expand将tab键转换成空格键expand[-t]file-t后面的空格数表示空格的个数,默认是8个空格键来代替grep'^MANPATH'/etc/man.confg|头-n3|展开-t6-|cat-A此时输出不会出现tab键unexpand会将空格转换为tabsplit,将一个大文件按照文件大小或者行数分割成小文件split[-bl]filePREFIX-b的大小分割文件的行号,可以在要分割的行号中加上b、k、m-l等单位PREFIX:作为分割价格,你的前导文本cd/tmp;split-b300k/etc/termcaptermcap将文件切割成不超过300k的子文件,子文件的前缀为termcapcattermcap*>>termcapback将子文件合并ls-al/|split-l10-lsroot每十行将结果记录到文件中sed可以分析标准输入,还可以替换、删除、添加、选择特定行等sed[-nefr][action]-n使用安静模式,在一般的sed中,所有来自stdin的数据都会被列到屏幕上,这种模式只会列出sed特殊处理过的行-e直接在命令行模式sedactioneditor-fwritessedactiontoafile-r正则表达式语法-i直接修改读取文件的内容,而不是从屏幕输出[n1][,n2]functionnl/etc/passwd|sed'2,5d'list/etc/passwd并删除2到5行nl/etc/passwd|sed'2,$d'list/etc/passwd并删除倒数第二行nl/etc/passwd|sed'2ahelloworld'在第二行后的行中添加helloworld,可以通过反斜杠添加多行nl/etc/passwd|sed'2,5cNo2-5linereplacelines2to5withNo2-5lined's/stringtobereplaced/newstring/g'一步一步egrep行的正则替换操作支持扩展的正则表达式检索,包括+,?,|,(),()+正则表达式,具体可以参考这篇文章printfformatprintprintf'printformat'awk的实际内容分成几个字段进行处理,默认的字段分隔符是空格或者tab键,适合处理小数据awk'条件类型1'{action1}'条件类型2'{action2}...filenameNF:per一行中的字段数NR:awk当前正在处理哪一行数据FS:当前分隔符,默认为空格键awk之后序列中的所有动作都用单引号括起来,非可变文本部分需要用双引号定义last-n5|awk'{print$1"\tlines:"NR"\tcolumns:"NF}'将一行按默认空格分成多个字段,打印第一个字段,当前行和每一行都有几个字段cat/等/密码|awk'{FS=":"}$3<10{print$1"\t"$3}'根据:split,取出第三个字段小于10的内容以diff为单位比较两个文件的差异,通常同一文件的新旧版本之间的区别。diff[-bBi]from-fileto-file-b:忽略一行中只有多个空格的区别,比如aboutme和aboutme是一样的-B:忽略空行的区别-i:忽略大小写引用书籍鸟哥的linux私房菜想了解更多开发技术,面试教程,互联网公司内部推广,请关注我的微信公众号!不定期发放福利~