zoukankan      html  css  js  c++  java
  • 脚本面试题

    脚本面试题
    1)一个linux进程经历的个阶段
    等待:linux进程等待资源;
    运行:linux进程当前正在执行中
    停止:linux进程在成功执行后或杀死进程信号后停止
    停尸:该进程已经结束,但仍然留在进程表中
    2)cut命令
    截取文件的指定部分并打印到标准输出
    cut -d 指定切割符
    cut -f 组定截取的段数
    [root@server3 extmail]# hostname
    server3.example.com
    [root@server3 extmail]# hostname| cut -d . -f 2
    example

    3)cmp和diff区别
    Diff 为了使两个文件一样的应该做的修改
    Cmp 将两个文件通字节对比,并报告一个不匹配项。

    4)可以用echo命令代替ls命令吗
    可以. Ls 命令可以用echo命令来代替
    Ls列出目录内容,从替换的角度上讲,可以使用 echo *,两个输出结果一样

    5)听说过inode吗
    Inode是一个数据结构,在linux上用于目录和文件的标识,每个文件在linux上有一个独立的inode和一个唯一的inode号
    对于系统来说,文件名只是inode号码便于识别的别称或者绰号,表面上,用户通过文件名,打开文件,。实际上,系统内部这个过程分成三步;首先,系统找到这个文件名对应的inode号码;其次通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
    Ls -i 命令列出目录的整个文件,即文件号和inode号码
    [root@server3 mnt]# ls -i 2.sh
    11907 2.sh
    [root@server3 mnt]# ls -i 3.sh
    11965 3.sh

    6)shell脚本成功执行之前,如何中断脚本的执行
    Exit命令。 Exit命令被强制输出非0值,脚本会报错并退出。0表示成功执行,因此脚本终止执行前执行一个不带引号的 exit -1 命令会使脚本终止。
    7)移除文件头
    删除文件 sed ‘1 d’ file
    了解sed awk命令

    8)检查一个文件的某行长度
    Sed -n ‘n p ’ file | wc -l

    9)可以在linux上查看所有非打印字符
    打开vi编辑器,按esc健,然后按:进入命令模式。在命令交界处输入 set list命令并执行
    10)创建一个目录,该组的人能在该目录下创建或访问文件,但除了该文件创建者其他人不能删除
    Chmod g+wx /mnt/
    Chmod +t /mnt/

    了解o+t g+s命令

    11)如何向脚本传输

    $* 获取当前脚本的所有参数
    $# 获取当前脚本的参数的总和
    $@ 这个程序的所有参数$1 $2 $3 $4 $5.., 这是激昂参数传送给其他程序的最佳方式,因为他将会保留所有內嵌在每个参数里的任何空白

    $$ 获取当前shell进程的PID
    $! 获取执行上一条指令的PID
    $? 获取执行上一条指令的返回值

    $* 将所有命令的所有参数视为单个字符串 等同于“$1 $2 $3”
    $@ 将命令每个参视为单独的字符串,等同于“$1” “$2” “$3”,这是将参数传递其他程序的最佳方式,因为他会保留所有内嵌在每个参数里面的任何空白。

    12)如何计算传进来的参数
    $#

    13)如何检查之前的命令是否成功执行?
    $?

    14)如何获取一个文件每一行的第三个元素
    Awk ‘{print $3}’

    15)假如文件中第一个元素时FIND,如何获取第二个元素
    | awk ‘{if ($$1 == ‘FIND’)} ’ print $2}’

    16)如何调试bash脚本
    将 -xv 参数加到 #!/bin/bash
    如 #! /bin/bash -xv

    17)如何写一个函数
    Funnction example {

    }

    18)如何连接两个字符串
    V1= v2= v3=${v1}${v2}

    19)写出shell脚本中所有的循环
    For 循环
    For i in $(ls)
    Do
    Echo “ ”
    Done

    While循环
    Until循环
    [root@server3 mnt]# cat 6.sh

    !/bin/bash

    count=20
    until [ $count -lt 10 ]
    do
    count=$(($count - 1))
    done
    echo "$count"

    20)每个脚本的#!/bin/bash什么意思
    脚本开头的第一行
    一个规范的shell脚本的第一行会指出由那个程序来执行脚本的内容.

    !/bin/bash

    !为幻数,在执行脚本的时候,内核会根据它来确定哪个程序来解释脚本中的内容.如果脚本开头不指定解释器,那么就要用对应的解释器来执行脚本.

    Bash test.sh
    Python test.py

    21)如何获取第十行
    了解sed 用法

    22)命令export作用
    使变量在子shell中也可以用

    23)如何在后台运行脚本
    脚本后面添加&
    了解后台的运行

    24)chmod 500 scripts 作用
    使脚本所有者拥有可执行的权限

    25)> 做什么
    重定向流到文件

    26)& 和&&区别
    & 希望脚本后台运行时使用它
    && 当前一个脚本成功完成以后执行后面的命令

    27)什么时候要在【condition】之前使用if
    当条件满足时需要运行多条命令的时候

    28)执行name=jono && echo 'my name is $name'的输出
    [root@server3 mnt]# name=jono && echo 'my name is $name'
    my name is $name

    29)命令echo ${new:-variable}的输出
    [root@server3 mnt]# echo ${new:-variable}
    variable

    了解字符串的操作

    30)‘ 和 “ 区别
    ‘ 不希望把变量转换为值时使用它
    “ 会计算所有变量的值并用值代替

    单引号;所见及所得.即将单引号里内容原样输出
    双引号:把双引号里面内容输出出来,如果内容中有命令,变量等,会先把命令,变量解释出来,然后输出最终内容.

    31)如何在脚本中重定向标准输出和标准错误
    Exec > log.txt 2>&1

    了解重定向

    32)如何只用echo 命令获取字符串变量的一部分
    Echo ${variable ;x:y}

    33)如何计算本地用户的数目
    [root@server3 mnt]# wc -l /etc/passwd | cut -d " " -f 1
    23

    34)列出UID小于100
    Awk -F: ‘$3 < 100’ /etc/passwd

    35)如何打印变量最后5个字符
    | echo ${variable : -5}

    36)${variable:-10} 和 ${variable: -10} 前者如果之前没有给赋值则输出10,如果赋值理论则输出改变,后者输出varible最后10个字符

    37)了解tr 替换命令

    38)expore $variable 或 export variable 哪个正确
    后者正确

    39)如何列出第二个字母是a 或b 文件
    ls -d ?[ab]*

    40)写出0~100中3的倍数
    [root@server3 mnt]# cat m7.sh

    !bin/bash

    for i in {0..100..3}
    do
    echo $i
    done

    41)【$a = $b】 和 【$a -eq $b】区别
    前者用于字符串的比较,后者拥有数字的比较

    51)= 和 ==区别
    前者用于变量赋值,后者用于字符串比较。
    52)如何在shell中更改标准的域分隔符为 :
    | IFS=“:”

    53)如何去除字符串的所有空格
    | echo $string | tr -d “ ”

    54)重写这个命令,将输出变量转换为复数
    55)如何输出当前shell的PID
    [root@server3 mnt]# echo $$
    1060

    56)如何在bash 中定义数组
    [root@server3 mnt]# arrary=("hi" "my" "name")

    57)如何打印数组的第一个元素
    [root@server3 mnt]# echo ${arrary[0]}
    hi
    58)如何打印数组的所欧元素
    [root@server3 mnt]# echo ${arrary[@]}
    hi my name
    59)如何输出数组的索引
    [root@server3 mnt]# echo ${!arrary[@]}
    0 1 2

    60)如何移除数组的索引为2的元素
    [root@server3 mnt]# unset arrary[2]

    61)如何在数组中添加ID为333的元素
    [root@server3 mnt]# arrary[333]="new_pp"

    了解数组的相关知识。

  • 相关阅读:
    高精度求n的累加和
    软件测试简介
    实数加法
    洛古P1542
    css制作三角形 实心的和空心的(笔试常考,特此分享)!!!!
    关于http主要的状态码
    关于http和https的概念和区别
    JavaScript关于闭包的理解和实例
    关于css编写
    关于javascript中apply()和call()方法的区别
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5708298.html
Copyright © 2011-2022 走看看