zoukankan      html  css  js  c++  java
  • linux面试常问命令

    1.查找文件

    find / -name filename.txt

    根据名称查找/目录下的filename.txt文件。

    2.查看一个程序是否运行

    ps –ef|grep tomcat

    查看所有有关tomcat的进程

    3.终止线程

    kill -9 19979

    终止线程号位19979的线程

    4.查看文件,包含隐藏文件

    ls -al

    5.当前工作目录

    pwd

    6.复制文件包括其子文件到自定目录

    cp -r sourceFolder targetFolder

    7.创建目录

    mkdir newfolder

    8.删除目录(此目录是空目录)

    rmdir deleteEmptyFolder

    9.删除文件包括其子文件

    rm -rf deleteFile

    10.移动文件

    mv /temp/movefile /targetFolder

    扩展重命名 mv oldNameFile newNameFile

    11.切换用户

    su -username

    12.修改文件权限

    chmod 777 file.java
    //file.java的权限-rwxrwxrwx,r表示读、w表示写、x表示可执行

    13.压缩文件

    tar -czf test.tar.gz /test1 /test2

    14.列出压缩文件列表

    tar -tzf test.tar.gz

    15.解压文件

    tar -xvzf test.tar.gz

    16.查看文件头10行

    head -n 10 example.txt

    17.查看文件尾10行

    tail -n 10 example.txt

    18.查看日志文件

    tail -f exmaple.log
    //这个命令会自动显示新增内容,屏幕只显示10行内容的(可设置)。

    19.启动Vi编辑器

    vi

    20.查看系统当前时间

    date

    命令会输出 周几 几月 几日 时间 和 时间显示格式 和年份

    Sat Jan 20 04:39:49 CST 2018

    date +"%Y-%m-%d"

    显示如下:

    [root@ming xxx]# date +"%Y-%m-%d" 2018-01-20

    注:这个我们如果不确定 就help 即可;

    21.解压zip 文件

    unzip -oq

    22.查看线程个数(方便查看程序是否有误)

    ps -Lf 端口号|wc -l

    23、查看进程(例:如何查看所有xx进程)

    ps -ef | grep xxx
    ps -aux | grep xxx(-aux显示所有状态)

    24、杀掉进程

    kill  -9[PID]    ---(PID用查看进程的方式查找)

    25、启动/停止服务

    cd到bin目录cd/
    
    ./startup.sh   --打开(先确保有足够的权限)
    
    ./shutdown.sh  ---关闭

    26、查看日志

    1.cd到服务器的logs目录(里面有xx.out文件)
    
    2.tail -f xx.out  --此时屏幕上实时更新日志。ctr+c停止
    
    3.查看最后100行日志 tail -100 xx.out 
    
    4.查看关键字附件的日志。如:cat filename | grep -C 5 '关键字'(关键字前后五行。B表示前,A表示后,C表示前后) ----使用不多
    
    5.还有vi查询啥的。用的也不多。

    27、查看端口:(如查看某个端口是否被占用)

    netstat -anp | grep 端口号(状态为LISTEN表示被占用)

    28、查找文件

    查找大小超过xx的文件: find . -type f -size +xxk  -----(find . -type f -mtime -1 -size +100k -size-400k)--查区间大小的文件
    
    通过文件名:find / -name xxxx    ---整个硬盘查找

    29、vim(vi)编辑器  

      有命令模式、输入模式、末行模式三种模式。
      命令模式:查找内容(/abc、跳转到指定行(20gg)、跳转到尾行(G)、跳转到首行(gg)、删除行(dd)、插入行(o)、复制粘贴(yy,p)
      输入模式:编辑文件内容
      末行模式:保存退出(wq)、强制退出(q!)、显示文件行号(set number)
      在命令模式下,输入a或i即可切换到输入模式,输入冒号(:)即可切换到末行模式;在输入模式和末行模式下,按esc键切换到命令模式

    30. awk命令

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。awk是一个报告生成器,它拥有强大的文本格式化的能力。awk其实是一门编程语言,它支持条件判断、数组、循环等功能。所以,我们也可以把awk理解成一个脚本语言解释器。grep 、sed、awk被称为linux中的"三剑客"。

    grep 更适合单纯的查找或匹配文本;

    sed  更适合编辑匹配到的文本;

    awk  更适合格式化文本,对文本进行较复杂格式处理;

    从字面上理解 ,action指的就是动作,awk擅长文本格式化,并且将格式化以后的文本输出,所以awk最常用的动作就是print和printf,因为awk要把格式化完成后的文本输出啊,所以,这两个动作最常用。

    我们先从最简单用法开始了解awk,我们先不使用[options] ,也不指定pattern,直接使用最简单的action,从而开始认识awk,示例如下

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    上图中,我们只是使用awk执行了一个打印的动作,将testd文件中的内容打印了出来。

    好了,现在,我们来操作一下另一个类似的场景。

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    上图中的示例没有使用到options和pattern,上图中的awk '{print $5}',表示输出df的信息的第5列,$5表示将当前行按照分隔符分割后的第5列,不指定分隔符时,默认使用空格作为分隔符,细心的你一定发现了,上述信息用的空格不止有一个,而是有连续多个空格,awk自动将连续的空格理解为一个分割符了,是不是比cut命令要简单很多,这样比较简单的例子,有利于我们开始了解awk。

    awk是逐行处理的,逐行处理的意思就是说,当awk处理一个文本时,会一行一行进行处理,处理完当前行,再处理下一行,awk默认以"换行符"为标记,识别每一行,也就是说,awk跟我们人类一样,每次遇到"回车换行",就认为是当前行的结束,新的一行的开始,awk会按照用户指定的分割符去分割当前行,如果没有指定分割符,默认使用空格作为分隔符。

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    $0 表示显示整行 ,$NF表示当前行分割后的最后一列($0和$NF均为内置变量)

    注意,$NF 和 NF 要表达的意思是不一样的,对于awk来说,$NF表示最后一个字段,NF表示当前行被分隔符切开以后,一共有几个字段。

    也就是说,假如一行文本被空格分成了7段,那么NF的值就是7,$NF的值就是$7,  而$7表示当前行的第7个字段,也就是最后一列,那么每行的倒数第二列可以写为$(NF-1)。

    我们也可以一次输出多列,使用逗号隔开要输出的多个列,如下,一次性输出第一列和第二列

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    同理,也可以一次性输出多个指定的列,如下图

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    我们发现,第一行并没有第5列,所以并没有输出任何文本,而第二行有第五列,所以输出了。

    除了输出文本中的列,我们还能够添加自己的字段,将自己的字段与文件中的列结合起来,如下做法,都是可以的。

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    从上述实验中可以看出,awk可以灵活的将我们指定的字符与每一列进行拼接,或者把指定的字符当做一个新列插入到原来的列中,也就是awk格式化文本能力的体现。

    但是要注意,$1这种内置变量的外侧不能加入双引号,否则$1会被当做文本输出,示例如下

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    我们也可以输出整行,比如,如下两种写法都表示输出整行。

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    我们说过,awk的语法如下:

    awk [options] 'Pattern{Action}' file

    而且我们说过awk是逐行处理的, 刚才已经说过了最常用的Action:print

    现在,我们来认识下一Pattern,也就是我们所说的模式

    不过,我们准备先把awk中最特殊的模式展示给大家,以后再介绍普通的模式,因为普通模式需要的篇幅比较长,所以我们先来总结特殊模式。

    AWK 包含两种特殊的模式:BEGIN 和 END。

    BEGIN 模式指定了处理文本之前需要执行的操作:

    END 模式指定了处理完所有行之后所需要执行的操作:

    什么意思呢?光说不练不容易理解,我们来看一些小例子,先从BEGIN模式开始,示例如下

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    上述写法表示,在开始处理test文件中的文本之前,先执行打印动作,输出的内容为"aaa","bbb".

    也就是说,上述示例中,虽然指定了test文件作为输入源,但是在开始处理test文本之前,需要先执行BEGIN模式指定的"打印"操作

    既然还没有开始逐行处理test文件中的文本,那么是不是根本就不需要指定test文件呢,我们来试试。

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    经过实验发现,还真是,我们并没有给定任何输入来源,awk就直接输出信息了,因为,BEGIN模式表示,在处理指定的文本之前,需要先执行BEGIN模式中指定的动作,而上述示例没有给定任何输入源,但是awk还是会先执行BEGIN模式指定的"打印"动作,打印完成后,发现并没有文本可以处理,于是就只完成了"打印 aaa bbb"的操作。

    这个时候,如果我们想要awk先执行BEGIN模式指定的动作,再根据执我们自定义的动作去操作文本,该怎么办呢?示例如下

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    上图中,蓝色标注的部分表示BEGIN模式指定的动作,这部分动作需要在处理指定的文本之前执行,所以,上图中先打印出了"aaa bbb",当BEGIN模式对应的动作完成后,在使用后面的动作处理对应的文本,即打印test文件中的第一列与第二列,这样解释应该比较清楚了吧。

    看完上述示例,似乎更加容易理解BEGIN模式是什么意思了,BEGIN模式的作用就是,在开始逐行处理文本之前,先执行BEGIN模式所指定的动作。以此类推,END模式的作用就一目了然了,举例如下。

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    聪明如你一定明白了,END模式就是在处理完所有的指定的文本之后,需要指定的动作。那么,我们可以结合BEGIN模式和END模式一起使用。示例如下

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    上述示例中返回的结果有没有很像一张"报表",有"表头"  、"表内容"、  "表尾"。

    32.grep命令

    先说说grep命令能做什么?

    我们可以使用grep命令在文本中查找指定的字符串,就像你在windows中打开txt文件,使用快捷键 "Ctrl+F" 在文本中查找某个字符串一样,说白了,可以把grep理解成字符查找工具。

    grep是Linux中最常用的"文本处理工具"之一,grep与sed、awk合称为Linux中的三剑客。

    grep的全称为: Global search Regular Expression and Print out the line

    全称中的"Global search"为全局搜索之意。

    全称中的"Regular Expression"表示正则表达式。

    所以,从grep的全称中可以了解到,grep是一个可以利用"正则表达式"进行"全局搜索"的工具,grep会在文本文件中按照指定的正则进行全局搜索,并将搜索出的行打印出来。

    当然,不使用正则表达式时也可以使用grep,但是当grep与正则表达式结合在一起时,威力更强大。

    我们先来看一个最简单的使用示例,从最简单的示例开始认识grep。

    为了实验方便,我们先准备一个测试文件,文件名为testgrep,文件内容如下。

    grep命令详解

    假设,现在我们想要从testgrep文本文件中搜索包含"test"字符串的行,则可以使用如下命令

    grep命令详解

    上图中的命令表示使用grep命令,在testgrep文件中搜索包含"test"字符串的行,并将包含test字符串的行打印出来。

    于是,testgrep文件中的第一行被打印了出来,默认情况下,grep是区分大小写的,所以,文件中包含大写"TEST"的行没有被打印出来。

    如果我们想要在搜索字符串的时候,不区分大小写,应该怎样做呢?grep很贴心,为我们准备了一个选项,使用"-i"选项,即可在搜索时不区分大小写,示例如下:

    grep命令详解

    如上图所示,在不区分大小写的情况下,由于testgrep文本中的第一行与第五行中都包含"test",所以,这两行都被打印了出来。

    由于testgrep文本中的内容不较少、行比较少,所以,我们能数过来,是第一行与第五行包含"test"字符,如果文本中有1000行,我们还想要知道哪行文本包含"test"字符串,则可以使用"-n"选项,表示显示打印出的行在文本中的行号,示例如下。

    grep命令详解

    如上图所示,grep不仅将符合条件的行输出了,同时还显示了行号,证明testgrep文本中的第1行与第5行,在不区分大小写的情况下,都包含字符串"test"。

    在centos6中,我们使用grep在文本中搜索出的行虽然会被打印了出来,但是在打印这些行时,被匹配到的关键字没有高亮显示,如果我们想要高亮显示行中的关键字,该怎么办呢?我们可以使用"--color"选项,高亮显示行中的关键字,示例如下

    注:"--color选项"是长选项

    grep命令详解

    使用"--color"与使用"--color=auto"的效果相同,都表示高亮显示关键字,我比较懒,习惯使用"--color"。

    在centos7中,系统默认为grep命令配置了别名,所以在centos7中使用grep命令时,不用显式的指定"--color"选项,默认就会高亮显示被匹配到的关键字,在centos7中使用alias命令,即可查看到grep命令的别名,如下

    grep命令详解

    可以看到,centos7中为grep命令配置的别名中,默认包含了--color选项,所以,不用显示指定,也可高亮显示。

    所以,我们也可以在centos6中借鉴这种方法。

    grep命令详解

    上图中,testgrep文本中一共有两行包含"test"字符串,如果我们只想知道有多少行包含指定的字符串,而不在乎哪些行包含这些字符串,我们可以使用如下命令,获取到符合条件的总行数。

    grep命令详解

    没错,使用"-c"选项即可只统计符合条件的总行数,而不会打印出行。

    之前的示例中,包含关键词的行都会被打印出来,整行都会被打印出来,如果我们只想看被匹配到的关键字,不想整行都被打印出来,可以吗?必须的,使用"-o"选项即可只打印出匹配到的关机字,而不打印出整行,示例如下。

    grep命令详解

    如上图所示,使用"-o"选项,可以只显示被匹配到的关键字,而不是讲整行的内容都输出。

    但是需要注意,"-o"选项会把每个匹配到的关键字都单独显示在一行中进行输出,什么意思呢?看如下示例即可明白。

    grep命令详解

    如上图所示,当没有使用"-o"选项时,包含"123"字符串的行都会被打印出来,当同一行中包含多个"123"时,所在行会被打印出来,对应的关键字也会高亮显示,当使用了"-o"选项时,每个被匹配到的关键字都会被单独打印在一行中,如上图所示,第三个"123"与第四个"123"都属于第10行的文本,但是它们仍然各自独占一行的输出了。

    其实,我们在使用grep命令搜索文本时,往往有这种需求:在找到对应的关键字时,同时需要显示关键字附近的信息,什么意思呢?

    我们来看一个场景,就能明白,我们新建了一个测试文件:testgrep1,测试文件内容如下

    grep命令详解

    假设,我们想从testgrep1文件中找出"年龄为18"的人,我们该怎么找呢?你可能会尝试使用如下命令。

    grep命令详解

    如上图所示,我们是匹配到了"年龄:18"的行,但是我们并不能从结果中得知年龄为18的人的姓名,因为姓名与年龄并不在一行中,那么我们该怎么办呢?

    我们可以使用"-B"选项,显示符合条件的行之前的行,"B"有before之意,示例如下

    grep命令详解

    如上图所示,包含字符串"年龄:18"的行被高亮输出了,同时,符合条件的行"之前的一行"也被打印了出来,这时,我们就能从结果中得知,朱双印今年18岁,王尼美今年18岁。

    没错,上例中的"-B1"选项表示显示符合条件的行的同时还显示之前的1行,举一反三,"-B5"代表同时显示之前的5行,"-B3"代表同时显示之前的3行,"-B"选项的后面必须有数字,否则会报错。

    与"-B"选项对应的选项是"-A"选项,"-B"有Before之意,"-A"有After之意,聪明如你,一定已经猜到了"-A"的含义,没错,"-A"代表显示符合条件的行的同时,还要显示之后的行,"-A3"表示同时显示符合条件的行之后的3行,我就不再赘述了。

    说了"-A",说了"-B",现在说说"-C","-C"选项可以理解为"-A与-B"的结合,"-C"选项表示在显示符合条件的行的同时,也会显示其前后的行,如"-C1","-C1"表示打印符合条件的行的同时,也打印出之前的一行与之后的一行,"-C"有Context之意(上下文之意),示例如下。

    grep命令详解

    这样我们就能看到"年龄是18岁"的人的所有信息了。

    有的时候,我们往往需要进行所谓的"精确匹配",但是使用之前的方法似乎无法满足我们,示例如下。

    grep命令详解

    上图中,当我们在文本中搜索"zsy"字符串的时候,"zsy"、"zsythink"、"123zsy123"所在的行都被匹配到了,因为"zsythink"中也包含了"zsy",所以也被匹配到了,但是当我们想要"精确匹配"zsy字符串的时候,按照上例中的方法就无法做到了,所谓的精确匹配,就是"zsy"作为一个独立的单词存在,而不是包含于某个字符串中,那么,如果有这种需求,我们怎么办呢?使用"-w"选项可以实现我们的需求,示例如下。

    grep命令详解

    如上图所示,只有"zsy"作为一个独立的单词存在的时候,才会被匹配到,"zsy"包含于某个字符串的时候,则不会被匹配到,这就是所谓的精确匹配,"-w"有word之意,表示搜索的字符串作为一个独立的单词时才会被匹配到。

    有的时候,我们需要反向查找,比如,查找"不包含某个字符串"的行,这个时候,我们需要用到"-v"选项,示例如下。

    grep命令详解

    上例表示查找出文本中不包含"zsy"字符串的行。

    某些场景下,我们可能想要同时从多个目标中匹配,什么意思呢?看了示例就秒懂,示例如下。

    grep命令详解

    上例中,我们同时在文本中搜索了"abc"字符串与"test"字符串,包含这两个字符串中任意一个的行都会被打印出来,没错,就像上图中的示例一样,使用"-e"选项可以同时匹配多个目标,多个目标之间存在"或"关系,即匹配其中的任意一个都算作匹配成功。

    在写脚本时,你可能只是想要利用grep判断文本中是否存在某个字符串,你只关心有没有匹配到,而不关心匹配到的内容,你只关心有,或者没有,这时,我们可以使用grep的静默模式,示例如下。

    grep命令详解

    当使用"-q"选项时,表示grep使用静默模式,静默模式下grep不会输入任何信息,无论是否匹配到指定的字符串,都不会输出任何信息,所以,我们需要配合"echo $?"命令,查看命令的执行状态,如果返回值为0,证明上一条grep命令匹配到了指定的字符串,如果返回值为1,则证明上一条grep命令没有匹配到指定的字符串,就像上图示例中显示的那样,静默模式下,grep没有输出任何信息,当我们在testgrep文本中查找"test"字符串时,可以匹配到结果,当在文本中查找"ttttttttttttt"字符串的时候,没有匹配到结果,所以,我们只关心有没有匹配到指定字符时,可以使用"-q"选项,但是需要配合"echo $?"命令查看执行状态。

    文章开头说了,grep可以利用正则表达式进行搜索,但是之前的举例中,grep都没有使用正则表达式,只是纯粹的去查找一些字符串,这次,我们使用grep命令,配合正则表达式,来查找我们想要的目标。

    比如,我们想要查找某个文本中的合法邮箱,示例如下

    grep命令详解

    眼尖的你肯定发现了,上图中的正则表达式为扩展正则表达式,而不是基础正则表达式,所以,在上述命令中,我使用了"-E"选项。

    在使用"-E"选项时,grep才支持"扩展正则表达式",不使用"-E"选项时,grep默认只支持"基本正则表达式"。

    不同的开发语言中,正则表达式的规则可能略有不同,我们在使用grep时,可以使用"-P"选项,指明使用perl兼容的正则表达式。

    示例如下:

    grep命令详解

    好了,grep的常用选项我们已经总结完毕,剩下需要做的就是不断的练习了。

    其实,除了grep命令,其实还有egrep命令,还有fgrep命令(fast grep),它们有各自的特点。

    grep:支持基本正则表达式

    egrep:支持扩展正则表达式,相当于grep -E

    fgrep:不支持正则表达式,只能匹配写死的字符串,但是速度奇快,效率高,fastgrep

    参考:https://zhuanlan.zhihu.com/p/73337659

              https://www.cnblogs.com/cbslock/p/10136220.html

              http://www.zsythink.net/archives/category/linuxbase/%e5%9f%ba%e7%a1%80%e5%91%bd%e4%bb%a4/page/2/

  • 相关阅读:
    检测客户端是否安装 Silverlight 插件和判断IE是否安装或支持Silverlight(限IE)
    Silverlight的组合键、快捷键(热键)调用方法
    实现自定义Silverlight版本检测和自定义升级Silverlight运行时方法
    风云的银光志Silverlight4.0系列教程汇总贴
    《银光志—Silverlight 3.0技术详解与最佳实践》创国内最畅销Silverlight技术书籍。
    模拟QQ网络棋牌游戏
    风云的银光志Silverlight4.0教程之轻松操作剪切板
    风云的银光志Silverlight4.0教程之富文本控件RichTextArea(RichTextBox)
    风云的银光志Silverlight4.0教程之使用鼠标右键事件和滚轮事件
    风云的银光志Silverlight4.0教程之WebBrowser(内置浏览器)控件
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/13686351.html
Copyright © 2011-2022 走看看