面试Linux岗位面试官常问的题目
树图思维导图提供 Linux基础题目 在线思维导图免费制作,点击“编辑”按钮,可对 Linux基础题目 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:e04b47e34c70083b3ead39a1e57b81a9
Linux基础题目思维导图模板大纲
~代表root
命令 [参数选项] [文件或路径]
创建一个目录/data
windows下的路径:c:\data\test
linux下的路径:/data/test
linux中/为所有目录的起点
创建目录:make dircectorys【mkdir】【mkdir /data】【cd /;mkdir data】,其中分号的作用是将两个命令在一行分隔开
看目录【ls -ld /data】,其中别忘了空格哦,-ld查看data目录本身
touch /data/oldboy.txt
创建10000个文件
touch stu{1..10000}
vi
vi oldboy.txt (进入vi编辑器)
i (insert ,插入状态)
i am study linux
Esc(命令状态)
:wq(write quit,保存退出);q(不保存直接退出)
echo
echo 'i am studying linux'>oldboy.txt(如果文件不存在会创建文件,如果存在会覆盖,所以危险,用>要记得备份哦)
怎么能不覆盖呢用>>,这样就追加到文件的尾部了。
cat
cat >oldboy.txt 回车输入内容,然后再会车按Ctrl+c,或者Ctrl+d都可以结束输入。关注,同Ctrl+c,或者Ctrl+d的那行的相关字母不会输入进去哦!,并且>会覆盖之前的命令
cat >>/data/oldboy.txt<<EOF(回车输入内容可以多行追加)会车输入EOF,其中两个EOF或者是任意内容成对出现
cat old boy.txt(查看内容)
rm -f oldboy.txt(删除文件)
Tab 完善未完善的文件名
把oldboy.txt 文件拷贝到/tmp 下
cp oldboy.txt /tmp/
复制目录
cp /data/oldboy /tmp
cp /etc/passwd /tmp/oldboy
把/data 目录移动到/root下
移动:move===mv,不同于cp,用mv则原来的地方没有文件了
mv /data /root(关注是mv空格/data空格/root哦~)
查找/oldboy下所有7天以前以log结尾的大于1M的文件移动/tmp下
创建环境
cat /var/log/dmesg >>123.log (重复多次,使其大小大于1M)
ll (格式,可以查看文件大小,修改时间)
date -s 20190401 (修改系统时间,此时123.log的时间还是当前时间,所以可满足题意)
操作
find /oldboy -type f -name "*.log" -size +1M -mtime +7 (其中+7表示7天以前,7表示第7天,-7表示最近7天)
find /oldboy -type f -name "*.log" -size +1M -mtime +7 -exec mv {} /tmp \. (mv移动,{}代表满足前面条件的文件,到/tmp 下,\.是与-exec 组成一对儿的命令)
rm
cd /root/data
rm oldboy.txt(rm=remove)
rm -f oldboy.txt(不提示,强制删除)
rm -fr data (强制删除文件目录)
谨慎使用删除命令
find(重要5星哦)
find /data -type f (查找data下,类型是文件的内容)
find /data -type f -name "oldboy.txt" (查找oldboy.txt)
find /data -type f -name "oldboy.txt" -exec rm {} \ .(其中-exec表示对前面的文件执行什么操作,rm操作表示删除,这里rm后不用加-f哦~最后的{} \ .表示处理),未实现
find /data -type f -name "*.txt" |xargs rm -f(其中*代表所有文件,为通配符,然后find命令一般都要搭配|xargs,此时为将find查找的文件通过管道【|】传给rm,为什么要加xargs呢?将找到的所有文件做成一行进行删除)
删除文件面试题:删除一个目录下的所有文件,但保留一个指定文件http://blog.51cto.com/oldboy/1650380 ...还要求课后整理成笔记呢~
cd..(..表示上一级目录)
rm -fr data
rmdir data (可以让你删除空目录data)
cat >>test.txt<<EOF ,生成文件内容(关注cat后面一定要加空格再加重定向符号呀~)
grep -v oldboy test.txt(grep是过滤命令(筛子),-v是排除,不加-v是显示oldboy,加-v是显示除了oldboy之外的其他内容)
head -2 test.txt (head 为头读一个文件的前两行)
请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录及/oldboy/test目录
mkdir /oldboy/test是创建不了的哦~
mkdir -p /oldboy/test (连续创建目录用参数-p)
yum install tree -y (tree是软件包,-y就是不提示了)
yum update (更新补丁)
yum install lrzsz telnet tree nmap nc -y
tree /oldboy/ (有乱码哦)
LANG=en (这样之后再tree /oldboy/就没有乱码了呀)
linux是严格区分大小写的哦
在/data/oldboy目录下建立oldboy.txt文件并输出相应内容
mkdir -p /data/oldboy
cd /data/oldboy
touch oldboy.txt
ifconfig|sed -n '2p' 输出ifconfig第二行,复制
echo 'inet addr:192.168.33.139 Bcast:192.168.33.255 Mask:255.255.255.0'>oldboy.txt
/bin/cp /mnt/test.txt /tmp/test.txt
\cp /mnt/test.txt /tmp/test.txt
说明:linux用户环境文件中会把cp命名成alias cp='cp -i'提示overwrite,这样在linux下输入cp实际上在运行cp -i ,加一个“\”或者写cp 全路径/bin/cp 就是让此次cp命令不使用别名(cp -i)运行
【head/sed/awk/grep】只查看ett.txt文件(100行)内第20行到第30行内容(企业常见面试题)【如何打印100行?并且以下代码还未实现】
解答:sequence==seq序列生成ett文件
head -30 ett.txt|tail -11 (此命令比较low,前30行的后11行就是20-30行)
sed -n '20,30p' ett.txt (最高效,其中-n是取消打印默认的内容, p 即print 打印内容)
awk '19<NR && NR<31' ett.txt(锦上添花,其中NR 行号。此方法了解一下就可以)
grep 20 -A 10 ett.txt
【awk】
输出oldboy.txt内的数字
awk -F "[ :]+" '{print $3" "$5" "$7}' oldboy.txt
使用awk去passwd的10-20行的第三列重定向到xx文件
awk 'NR>9&&NR<21' passwd|cat -n(取出来,并且查看对不对)
awk -F ":" 'NR>9&&NR<21{print $3}' passwd>test.txt(-F ":"意思是以:为分隔符,{print $3意思是输出第三列})
使用命令调换passwd里面同一行内root 和/bin/bash ,即将所有第一列和最后一列调换
awk 'NR==1{print $0}' /etc/passwd (输出root:x:0:0:root:/root:/bin/bash)
awk -F ":" 'NR==1{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd (输出/bin/bash:x:0:0:root:/root:root)
awk -F ":" '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd (因为是所有的呀,所以去掉NR==1第一行)
1.sed用法
echo 'oldboy oldgirl' >oldboy.txt
cat oldboy.txt
sed 's#oldgirl#gongli#g' oldboy.txt (s表示替换,g表示全局替换,# 是分隔符,可以用/@ 等替换把oldgirl替换成gongli,但此时文件没改,只是输出改了)
sed -i 's#oldgirl#gongli#g' oldboy.txt (改内容)
2
创建环境
mkdir -p /oldboy/test (mkdir 可以连续创建目录)
tree /oldboy (以前已经创建过)
cd /oldboy
ls
echo “oldboy” >test/del. sh
echo “oldboy” >test. sh
echo “oldboy” >.sh
echo "oldboy" >t. sh
方法1
find /oldboy -type f -name "*.sh"|xargs cat (这里为什么一定要用xargs呢?如果不用将输出的的是“*.sh”文件名,如果加上xargs,那么输出的是“*.sh”文件内的oldboy内容)
find /oldboy -type f -name "*.sh"|xargs sed -i 's#oldboy#oldgirl#g' (sed具有替换加修改功能,先sed,再sed -i 使其生效)
find /oldboy -type f -name "*.sh"|xargs cat(检验一下有没有替换好)
方法2
sed -i 's#oldgirl#oldboy#g' `find /oldboy -type f -name "*.sh"(先执行find,再执行sed)
过滤出已知当前目录下oldboy中所有一级目录(不包含oldboy目录下面目录的子目录及隐藏目录,即只能是一级目录)?
根据颜色 ls -l 蓝色为目录
ls -l 结果中以d开头为目录
ls -l|grep "^d" (^表示以..开头)
ls -l 输出结果中第2列数字大于1的就是目录(文件没有硬链接的情况下是对的)
ls -l|awk '{if ($2>1) print $0}' (如果第2列>1,则输出整行)
ls -F/ls -p 通过给目录加标识,然后通过过滤标识,就过滤出目录
ls -F|grep "/$"($表示以..结尾)
ls -F|awk '/\/$/' (//内选择以/结尾\为转义符)
ls -F|sed -n '/\/$/p'
find 查找 type 为d
find . -maxdepth 1 -type d !-name "." (第1级目录下,除去./)
一个目录中有很多文件,如何最快查看最近更新的文件。
ls -lrt /etc #==>执行这个命令后最新的文件会在最下面,但是依赖于系统时间
cat -n oldboy.txt
nl oldboy.txt (空行不记录行号)
vi oldboy.txt ,在命令行模式下:set nu则显示行号,:set nonu 则取消行号
awk '{print NR $0}' oldboy.txt
grep -n . oldboy.txt (中间的.表示任意单个字符)
cat -n oldboy.txt|tail -1
wc -l oldboy.txt (-l是行号的意思)
文件配置方法:把要启动的服务的命令放在/etc/re.local里面
chkconfig
chkconfig --list (可以查看所有运行级别对应的服务)
chkconfig --list|grep"3:on" (on表示开始自动启动)
chkconfig --list sshd (sshd是远程连接)
chkconfig sshd off (这样就可以让sshd 开机不自动启动啦~,当我们不指定级别的时候,默认是2.3.4.5级别都自动off 啦)
chkconfig sshd on (2.3.4.5开机自启动,但是是下一次开机自启动)
/etc/init.d/sshd start (在不重启的情况下本次启动)
chkconfig --level 3 sshd off(只关3级别)
问题1 :2个 。/oldboy/ett 和 /oldboy/ett/.
问题2:3个。/oldboy/ett 和 /oldboy/ett/.(.表示当前目录)和oldboy/ett/test/..(..表示上一级目录)
硬链接数就是innode 相同的个数
方法1
用ls -l可以查看文件权限,第一列就是,我们把它三个为一组,组内相加。主要使用awk命令
ls -l|cut -c1-10|tr "rwx-" "4210"|awk -F "" '{print $1+$1+$3""$4+$5+$6""$7+$8+$9}' ,其中,cut -c1-10输出前10列,tr命令将rwx-替换成数字4210,然后用awk命令输出,-F 为命令分隔符,必须有-F参数,虽然此题没有以任何分隔符分隔,所以awk -F ""引号里面没有任何东西,连空格也没有哦。然后''里面加{print要输出的内容},如果要输出的内容以逗号分隔,则输出以空格分开,我们这里将其变为“”则中间没有任何分隔符
方法2
stat 属性命令可以查看access,我们只需要提取出来就可以了
stat /|sed -nr 's#^.*\(0(.*)/dr.*$#\1#gp'
方法3
man stat查找可以直接出结果的方法
找到了呀。所以我们可以用stat -c %a /
eth0网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
客户端DNS路径
/etc/resolv.conf
被执行的命令在$PATH下,以:冒号分隔
我们如果把/oldboy放到PATH里,那么oldgirl就可以被执行了。PATH="$PATH:/oldboy"关注一定要加上:冒号哦,要不其他的目录也没有了。
grep -v "^$" oldboy.txt ,其中^$表示空行,-v表示排除
sed '/^$/d' oldboy.txt ,其中d表示删除。
which ifconfig(以ifconfig为例)
whereis ifconfig
locate ifconfig (是从数据库里查呢)
find ifconfig(从/根里头遍历,所以find查找的效率最低)
树图思维导图提供 规模产蛋鸡舍通风基础 在线思维导图免费制作,点击“编辑”按钮,可对 规模产蛋鸡舍通风基础 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:146f3fee12ba1da02023cfc1b3e7bd57
树图思维导图提供 规模产蛋鸡舍通风基础 在线思维导图免费制作,点击“编辑”按钮,可对 规模产蛋鸡舍通风基础 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:0ff87fd6ea71793d89211128a20a096f