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

浙公网安备 33010602011771号