linux上课笔记


Linux期末复习

题型:选择、填空、判断、匹配、改错

1.代码改错题

1.1找出以下代码中的错误,即显示所有以字符a开头的文件的名称,并且我们对这些文件有阅读权限

for f in a*
do
    if test –d $f –a test ! –r $f
    then
        echo $f
    fi
done

改:把-d改成-f 逻辑非去掉

#! /bin/bash
for f in a*
do
     # if test –f $f –a –r $f
    if [ -f $f -a -r $f ]
    then
        echo $f
    fi
done

1.2找出以下代码中的错误,该代码运行时无限地要求用户输入一个文件名。该代码将不断询问文件名,直到有效的文件名被输入。

echo –n "Enter a file name"
read t
while test –f $f
do
    echo "$f is not a file. Try again"
    wait 60
done

改:

echo –n "Enter a file name"
#echo -n 不换行输出
#参数-n的作用是不换行,echo默认是换行
read t 
while [ ! -f $t ]
#while test –f $t
do
    echo "$t is not a file. Try again"
    wait 60
    read t
done

1.3纠正以下代码中的错误:代码用于计算当前目录中的文件和目录的数量。

x=0
y=0
for k in *
    do
        if test –f $z
        then
            ((x=x+1))
        fi
        if test –d $z
        then
            [[y=y+1]]
        fi
    done
echo "The number of files are $x and
directories are $y"

改:**$z改$k [[]] 改 (()) 或者let**

#!/bin/bash
x=0
y=0
for k in *
    do
        #if test –f $k
        if [ -f $k ]
        then
            ((x=x+1))
        fi
        #if test –d $k
        if [ -d $k ]
        then
        #(()) 或者 let
            ((y=y+1)) 
        fi
    done
echo "The number of files are $x and
directories are $y"

2.判断题

2.1作业判断题

1 shell脚本是一个由Unix命令和某些内置函数组成的集合。 对✅
2 expr命令可以对整数进行算术运算。 对✅
3 使用bc命令,我们进入计算器的模式。对✅
4 units命令用于将一个标准刻度的数值转换为另一个刻度。 对✅
5 我们不能在一条语句中执行一个以上的赋值。 错❌
6 $*代表命令行参数的数量。命令行参数的数量。 对✅ 
7 使用tr命令,我们不仅可以翻译字符,还可以删除匹配的 字符。 对✅
8 我们可以用egrep工具指定一个以上的模式进行搜索。 对✅
9 我们不能在shell脚本中使用逻辑运算符。 错❌
10 当模式匹配时,'^'表示开始,'$'表示结束。  对✅
1 默认情况下,sed的打印选项总是打开的。
2 要选择文件的最后一行,我们使用^选项。 错❌ 应该用$
3 sed的q选项是为了显示寻址行后退出。 
4 w命令用于将选定的行写入单独的文件中。
5 在sed中,我们不能打印一个文件的内容,然后再打印另一个文件的内容 错❌。
6 l选项用于打印行号和文件内容。
7 vi编辑器有两种操作模式。 错❌ 有三种
8 我们可以在vi编辑器中按字符e或E从命令模式切换到插入模式。 错❌ 
9 :w命令用于写入文件并继续编辑。 对✅
10 vi中的$命令是用于将光标移动到行的最后一个字符。对✅
13 要删除vi中的一行,可以使用dd命令。  对✅
14 :set nu命令用于在显示文件内容时删除行号。  错❌  是显示行号
3.1ls命令显示的的文件和目录列表默认是按字母顺序排列。 true    

3.2与ls命令一起使用的选项-R,可以按相反的顺序查看文件和目录的名称。    True

3.3我们使用mkdir命令一次只能创建一个目录。     True

3.4cd命令,如果不加任何参数,就会把我们带到主目录。True    

3.5使用touch命令,我们只能改变文件的时间戳,但不能创建文件。 False    

3.6用cat命令创建文件时,我们需要用Ctrl+d来指定文件的结束。    True

3.7使用rmdir命令,我们也可以删除非空目录。False

3.8如果我们用cp命令使用-i选项,如果目标文件已经存在,它会在覆盖之前提示我们。 True

3.9cp命令是用来复制文件的,我们不能用它来复制整个目录及其文件和子目录。    False

3.10我们可以用一条rm命令删除多个文件。    True

3.11使用rm命令,即使我们没有写权限,也可以强行删除一个文件。    True

3.12使用mv命令,我们可以将一个文件从一个目录移动到另一个目录,但不能重命名它。False

3.13硬链接要在当前目录结构内创建。    False

3.14我们可以通过Ctrl-d退出Unix系统。 True

3.15通过cal命令,我们无法看到上个月的日历。    False

3.16通过finger命令,可以看到用户的邮件状态。    True

3.17通过uname命令,可以了解操作系统的版本和版本号。    True

3.18通配符'?'代表一个字符。    True

3.19bc或基本计算器命令可以用来求一个数字的平方根。True    

unlink命令不能删除符号链接。    Flase

3.填空选择(知识点总结)

3.1.通过3个方法进入home目录

cd ~
cd
cd $HOME

3.1.2空行怎么表示

^$

3.1.3 vi编辑器

在普通模式下使用下面的键将进入插入模式,并可以从相应的位置开始输入

命令 说明
i 在当前光标处进行编辑
I 在行首插入
A 在行末插入
a 在光标后插入编辑
o 在当前行后插入一个新行
O 在当前行前插入一个新行
cw 替换从光标所在位置后到一个单词结尾的字符

3.1.4 sed

3.1.5 grep

3.1.6 重定向

重定向

命令 >> 文件 2>&1 和 命令 &>>文件 两个命令作用相同
系统有个常见用法 ls &>/dev/null 正确输出或错误输出结果都不要。(null可以理解为黑洞或垃圾站)
命令>>文件1 2>>文件2 正确日志和错误日志分开保存

例:nohup java -jar /usr/sbin/lb-agent.jar >>/var/log/lb-agent.log 2>&1 &
将jar执行的结果写入到lb-agent.log中
在命令最后加上&符号,表示让这个进程到后台去执行,这样立刻返回到提示符状态,我们可以接着做下面的事。如:command &。
这种“后台”进程在shell一直打开的情况下是没有问题的,如果我们关了shell窗口甚至退出ssh登录或vnc登录,那么进程自动就结束了。所以如果想退出窗口乃至退出登录仍然保持程序运行,再加上nohup,形如:nohup command 1>output 2>&1 &

3.1.7 Linux的基本命令

看黄大春给的LinuxCommandLineCheatSheet.pdf 或者网上百度

pwd 当前目录绝对路径
cd 
ls -l -a 
touch 创建文件
mkdir 创建目录
rmdir 删除空目录
cp 复制文件 
mv  移动文件 重命名文件
rm 删除 -rf 强制删除
wc -l 统计行数  可能会考 
du 目录 文件占用数量
df  磁盘使用情况
file 查询文件类型
cat
less 回卷显示。按下回车键Enter读区下一行内容 q退出
more 分页显示 
head 文件头部
tail 文件尾巴
date  当前时间
cal  日历
echo 输出
uname 系统相关信息
hostname 计算机主机名
tar -xvf -x解压 -v显示过程 -f使用归档文件,位置在最后 -z通过gzip过滤文档
tar -cvf -归档
变量赋值的时候不能有空格 x=1 y="Hello Linux" 有空格的变量要用“”
取x变量值 echo $x  echo $y

3.1.8正则表达式

image-20210629103332123 image-20210629103359149

3.1.9 预定义变量

$? 命令执行后的返回状态 0表示结果正确 非0表示有错误

$0 当前执行的进程名 ⚠️ 是一个特殊变量 不是位置参数

3.1.10 数字比较

-eq  =
-ge  >=
-le  <=
-ne  !=
-gt  >
-lt  <

3.1.11 逻辑测试

! 逻辑非
-a 逻辑与
-o 逻辑或

3.1.12文件操作测试

-d  目录
-f  文件
-r  可读
-w  可写
-s  长度非0

3.1.13 权限

drwxr-xr-x 目录
-rwxrwxrwx 文件 777 
chmod 777 fileName
chmod +x fileName

3.2作业填空题

1 shell脚本中的变量必须在前面加上($)。
2 在shell脚本中,注释的前面是符号(#)。
3 let命令可以用( (()) )代替。
4 要从计算器模式中出来,我们使用(quit)命令。
5 用于对一个数字进行因式分解的命令是(expr)。
6 在shell脚本中的乘法符号前面必须有一个(\),否则它将被当作一个通配符来处理。
7 在echo命令中用来避免输出换行符的选项是(-n)。
8 预定义的变量有两类。() 和()。
9 用来计算文件中的行数、字数和字符数的命令是(wc)。
10 用于在文件中搜索指定模式的字符串的实用程序是(grep)。
3.1使用ls命令查看隐藏文件的选项是  ls -a    。
3.2用mkdir命令创建指定权限的目录时,使用的选项是_ mkdir -m    。
3.3使用cd命令,我们可以给出绝对以及_ 相对    路径名。
3.4用于知道我们当前工作目录的命令是_ pwd    。
3.5touch命令中用于改变修改或访问时间的时间表达式格式是_ 
touch -m    。
3.6rmdir命令用于删除空父目录的选项是_ -p    。
3.7rm命令使用的 -r    选项用于递归删除指定目录的所有文件和子目录。
3.8用于为文件建立链接的命令是_ ln    。
3.9有两种类型的文件链接_ 软链接    和_ 硬链接    。
3.10与date命令一起使用的只显示时间的选项是_ +%r    。
3.11bc命令中用于查找自然对数的函数是 l()    。
3.12用于显示当年日历的命令是_ cal    。
3.13用于显示登录用户信息的命令,包括主页目录、登录shell、邮件状态、电话号码等是 finger。
3.14用ls命令显示文件的inode数的选项是  -n         。

文章作者: fejxc
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fejxc !
评论
  目录