Linux相关的面试题

1、说一下你比较常用的命令

答:目录以及文件相关的有:

cd   切换目录

ls   显示目录下的文件   -a 显示包括隐藏文件的所有文件   -l 显示文件详细信息   -ltr 以最后修改时间升序列出文件

pwd   显示当前目录

find   查找命令   find 路径 -name ‘文件名’   查找指定目录下的该文件

mv   文件重命名或移动文件   mv 文件名1 文件名2--重命名      mv 文件名 目录--移动文件

cp   复制文件   cp 文件 目录

mkdir   创建子目录   mkdir 目录名

rm   删除命令   -i 删除前确认   -rf递归删除目录下所有文件且不用确认

head   查看文件前10行   -n 查看前n行

tail   查看文件后10行   -n 查看后n行   -f 实时查看

cat   查看文件   cat 文件1 文件2   查看文件1和文件2

less   查看大文件时使用,CTRL+f  向前翻页   CTRL+b  向后

vim   编辑命令   有三种工作模式:命令模式、输入模式、编辑模式(进去后默认处于命令模式,按i进入输入模式,然后esc可退出。然后按:进入编辑模式,输入wq保存并退出)

其他通用的有:

Ps -ef | grep 程序   ---查看进程信息

Kill -9 进程号   ---彻底杀掉进程

Scp 文件 远程用户名@远程ip:/etc   ---复制文件到远程地址

Tar -zcvf   ---压缩

Tar -zxvf   ---解压

Su   ---切换登录用户

df   查看磁盘空间

 

二、shell相关的

1、几个常用命令
head
-head 文件名 默认查看文件前10行
-head -3 文件名 查看前3行
-head -c3 文件名 查看文件前3个字节

tail
-tail 文件名 默认查看文件后10行
-tail -3 文件名 查看文件后3行
-tail -f 文件名 动态查看文件内容
-head -14 文件名 | tail -7 查看第8-14行内容

cut
-cut -f1 文件名 查看第一列(默认使用tab键进行分割)
-cut -f1-2 文件名 查看第一、二、三列
-cut -d":" -f1 查看第一列,使用:进行分割

sort
-sort -n 文件名 以字符串的数字进行排序

uniq
-sort -n 文件名 |uniq 去重

wc
-wc -l 打印行数
-wc -w 打印单词数
-wc -c 打印字节数
-wc -L 打印最长行的字节数

二、变量
1、本地变量 ---只能在当前终端用,不能在文件脚本里用,有以下4种定义方式:
-username=小人物 变量值不能有空格
-username='小人物 01' 可以有空格
-username="$name 01" 可以有空格、其他变量
-date_now=$(date) 可以有linux命令
2、全局变量 ---可以在文件脚本里用,但是不能在另一个控制台调用
-export user01
3、永久全局变量 ---可以在任何情况下调用
-在~/.bash/.bashrc 里定义的全局变量
-在~/.bash/profile 里定义的全局变量
-在/etc/profile 里定义的全局变量

4、查看变量值
-echo $username 不能在有test命令、[]表达式时不能用
-echo "$username" 常用
-echo "${username}" 常用
5、echo的其他几个参数
-echo -n "$username";echo "age" 两个echo之前不换行
-echo -e "$username \n" 转义字符,会换行

6、几个常用的内置变量
-echo $? 查看上一个命令是否执行成功,0为成功,非0为失败
-echo $0 查看当前执行shell脚本文件名
-echo $n 查看当前执行shell脚本的第n个参数
-echo $# 查看当前执行shell脚本的参数个数

三、运算
-支持常用的加减乘除等运算,除法默认取整
-$((a + b)) 得到变量a+b的值
-也可以expr $a + $b
-bc 提供交互式的输入,输入scale=3表示3位小数
-echo a + b | bc 也可以

四、条件表达式
-表达式成立,返回0;不成立,返回1
-可以用test 表达式
-也可以[ 表达式 ],括号和表达式之间必须有空格

-1、文件表达式
-test -f 路径/文件名 判断是否存在、是否是一个常规文件
-test -e 路径/文件名 判断是否是一个文件
-test -d 路径 判断是否是目录
-test -w 路径/文件名 判断书否可写
-test -x 路径/文件名 判断是否可执行

-2、数值操作表达式
-test $a -eq $b 判断a和b是否相等
-test $a -gt $b 判断a是否大于b
-test $a -lt $b 判断a是否小于b
-test $a -ne $b 判断a和b是否不相等

-3、字符串操作表达式
-test $str1 == $str2 判断两个字符串是否相等
-test $str1 !== $str2 判断两个字符串是否不相等
-test -z str1 判断字符长度是否为0
-test -n str1 判断字符长度是否不为0

test "$username" == "小人物" && echo "成功" || echo "失败" 判断如果username等于"小人物",则打印成功,否则打印失败
test "$username" == "小人物" -a "$password" == "123456" && echo "登录成功"

五、shell脚本格式
-1、第一行:#!/bin/bash
-2、文件后缀建议为.sh文件,当然也可以不加后缀
-3、脚本执行失败时,使用exit来退出
-4、默认缩进是4个空格
-5、#为单行注释,多行注释 :<<! ... !

六、shell脚本执行
-1、bash 文件名 不管有没有给脚本赋予执行权限
-2、赋予了可执行权限后,可以之间./文件名
-3、bash -x 文件名 调试模式运行,会显示运行详情

七、函数
-1、定义函数方式一 函数名(){
命令1
命令2
}
-2、定义函数方式二 function 函数名{
命令1
命令2
}
-3、调用:函数名

例如:
#!/bin/bash

function check_login
{
username="$1"
password="$2"
test "$username" == "zengchaojian" && test "$password" == "123456" && echo "登录成功" || echo "登陆失败"
}
check_login zengchaojian 123456
#check_login $1 $2 调用时再传入参数

例如:这样可以接收用户输入
#!/bin/bash

read -p "请输入用户名" username
read -p "请输入密码" password #加-s参数,屏幕可以不显示密码
function check_login
{
test "$username" == "zengchaojian" && test "$password" == "123456" && echo "登录成功" || echo "登陆失败"
}
check_login

八、流程控制
-if语句:
if 条件表达式1
then
命令1
elif 条件表达式2
then
命令2
else
命令3
fi

-for语句
格式一:
for 值 in 列表
do
执行语句
done

格式二:
max=10
for(i=1,i<10,i++)
do
执行语句
done

-while语句
while 条件表达式
do
执行语句
done

九、文本处理三剑客
1、grep 过滤
-grep [参数] pattern [file1,file2]
-some command grep [参数] pattern
例如:
grep root /etc/passwd 过滤文件里的root
echo "abcdroot" grep root 过滤字符里的root

参数:
grep -i 忽略大小写
grep -c 计数,有多少个匹配的
grep -r 目录 在目录里过滤
grep "^m" 支持正则表达式,默认只支持基础正则。过滤以m开头的
grep -E 支持拓展正则
grep -A2 展示过滤结果及后面的两行
grep -B2 展示过滤结果及前面的两行
grep -C2 展示过滤结果及其前后的两行
grep "a-b" 过滤有a或b
posted @ 2023-02-22 21:45  隗洋yy  阅读(149)  评论(0)    收藏  举报