linux做试题汇总
来源
试题取自牛客网在线编程–shell篇
附加在线linux网址,选择其他linux系统
linux常用命令
试题
统计文件的行数
wc -l
取自查看文件内容wc命令:wc [选项] [文件名]
-c 字节数
-l 行数
-L 最长行长度
-m 字符数
-w 文件字数
打印文件的最后5行
tail -5 nowcoder.txt
取自查看文件内容head与tail命令,head代表开头、tail代表结尾:head/tail [选项] [文件名]
-n n行内容,默认10
-c 输出文件大小(head选项)
-f 最尾部内容显示屏幕不断刷新(tail选项)
输出7的倍数
#!/bin/bash
for var in {0..500}
do
if ((var%7==0))
then
echo $var
else
continue
fi
done
取自文件操作echo显示提示
{0…500} #生成列表0,1,2…499,500
echo $变量 #输出变量值
变量=$变量 #变量赋值变量
unset 变量 #删除变量
输出第5行的内容
sed -n 5p
取自文件操作sed替换:sed [选项] ‘[命令]’ [文件名]
‘s/原字符串/替换字符串/’ 无选项,替换字符串
-n ‘5,7p’ 输出5-7行
打印空行的行号
awk '/^$/ {print NR}'
取自文件操作awk:awk ‘[命令]’ [文件名]
匹配含义
^ 开头
$ 结尾
命令含义
NF 字段数,行数
$NF 字段值
去掉空行
awk '!/^$/ {print $NF}'
取自文件操作awk:awk ‘[命令]’ [文件名],这里用了!非
打印字母数小于8的单词
awk '{for (i=1;i<=NF;i++){if (length($i) < 8) print $i}}'
取自文件操作awk:awk ‘[命令]’ [文件名]。
这里使用bash编程命令,$i代表第i个字段值
统计所有进程占用内存大小的和
awk '{a+=$6}END{print a}'
取自文件操作awk:awk ‘[命令]’ [文件名]。该命令是每读取文件一行就执行一次。
END 前部分执行玩再执行后面
示例文件每个值的划分
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
root | 2 | 0.0 | 0.0 | 0 | 0 | ? | S | 9月25 0:00 [kthreadd] |
root | 4 | 0.0 | 0.0 | 0 | 0 | ? | I< | 9月25 0:00 [kworker/0:0H] |
web | 1638 | 1.8 | 1.8 | 6311352 | 1 | ? | Sl | 10月16 21:52 test |
web | 1639 | 2.0 | 1.8 | 6311352 | 2 | ? | Sl | 10月16 21:52 test |
tangmiao-pc | 5336 | 0.0 | 1.4 | 9100240 | 3 | ?? | S | 3:09下午 0:31.70 /Applications |
tangmiao-pc | 5337 | 0.0 | 1.9 | 9477784 | 4 | ?? | S | 3:09下午 2:14.60 /Applications/Google Chrome.app |
确定第6个是内存大小的值$6。
统计每个单词出现的个数
awk '{for(i=1;i<=NF;i++){print $i}}'|sort|uniq -c|sort -n| awk '{print $2,$1}'
取自文件操作awk:awk ‘[命令]’ [文件名]。当以|划开命令时,awk的print执行为下一个命令的处理文件。
拆解命令
awk '{for(i=1;i<=NF;i++){print $i}}'
结果为
welcome
nowcoder
welcome
to
nowcoder
nowcoder
to
welcome
nowcoder
the
排序命令:sort [选项] [文件名]。默认以ASCII码升序排列
-n 依照数值升序排列
sort
结果为
nowcoder
nowcoder
nowcoder
nowcoder
the
to
to
welcome
welcome
welcome
统计命令:uniq [选项] [文件名]。将相邻重复行合并并统计。
-c 统计每一列显示该行重复数量
uniq -c
结果为
4 nowcoder
1 the
2 to
3 welcome
再使用sort -n结果如下:
1 the
2 to
3 welcome
4 nowcoder
最后将第二个值$2和第一个值$1互换位置输出即可。
第二列是否有重复
awk '{print $2}' |sort|uniq -c|sort -n|grep -v 1
在上一题的基础上又涉及
grep查找符合条件字符串的命令:sed [选项] [查找模式] [文件名]
选项
-n 显示查找匹配行及行号
-v 查找不包含匹配的行
查找模式:正则表达式
转置文件的内容
awk '{
for(i=1;i<=NF;i++){
if(NR==1)
{a[i]=$i;}
else
{a[i]=a[i]" "$i;}
}}END{
for(i=1;i<=NF;i++){
print a[i]
}}'
这里awk的命令,虽然类似c语言,但对于字段拼接直接使用" "连接,如果使用+就是计算数据的和变成一个字段。
命令含义
NF 字段数,行数
NR awk读取的次数,读取文件内容的行数
打印每一行出现的数字个数
awk '{gsub(/[^1-5]/,"",$0);print "line"NR "number: "length($0);sum+=length($0)}END{print "sum is "sum}'
这里的gsub处理字符串$0,length()计算字符串长度。
命令
关机重启
shutdown -h:关机
poweroff:关机
shutdown -r:重启
reboot:重启
help:帮助
目录文件
cd /:跳转目录
cd …/:返回上一个目录
cd ~:跳转home/用户目录
ls -a:显示该目录下所有目录和文件
ls -l:列表显示该目录下所有目录和文件
mkdir :增目录
touch:增文件
rm:删文件
rm -r:删目录
vi:修改文件
mv a b:a改目录为b
mv a /:剪切a目录到新目录
cp:复制成ios镜像文件
cat:>重定向,把>左边文件合并复制到右边文件
copy:文件目录的复制
find:找特定目录文件
文件权限
chmod:+赋予权限,r读取,w写入,x执行
chown:改变文件或目录的使用者或群组
用户
进程
网络