《Linux编程》上机作业 ·001【Linux命令】

注:前言、目录见 https://blog.csdn.net/qq_44220418/article/details/108428971

友情提醒:仅供参考理解,请勿直接复制粘贴

友情提醒:仅供参考理解,请勿直接复制粘贴

友情提醒:仅供参考理解,请勿直接复制粘贴

一、第1题

1.试用Linux命令完成下面的操作:

1、第1小问

i)查看用户当前所处目录的绝对路径并列出该目录中有多少目录名(含所有子目录)

# 查看当前所处目录的绝对路径
pwd

# 查看当前目录下有多少目录名(包括自己本身 .)
find -type d

# 查看当前目录下有多少目录名(不包括自己本身 .)
# 用grep命令
# 	设置参数-v进行排除匹配
# 	设置参数-E使用正则表达式匹配(正则表达式"^.$"用于匹配整行以.开头并结尾的内容)
find -type d | grep -vE "^.$"

# 统计当前目录下有多少个目录(不包括自己本身 .)
# 对前面的命令加上 | wc -l 即可
# 使用wc命令进行统计,设置参数-l统计行数
find -type d | grep -vE "^.$" | wc -l

示例截图
在这里插入图片描述

2、第2小问

ii)在当前目录中创建子目录rootdir,并同时创建rootdir的子目录sondir

# 使用命令mkdir创建目录
# 设置参数-p 一键创建所有不存在的目录
mkdir -p rootdir/sondir

示例截图
在这里插入图片描述

3、第3小问

iii)在rootdir子目录中建立文本文件myorder(内容为:date pwd ls –l 三个命令 )
并将该文件复制到sondir目录,并同时改名为用户指定文件名(姓名拼音首字母+学号后3位)

# 跳转到目录rootdir下
cd rootdir

# 使用echo命令 配合 重定向符> 将字符串写入myorder.txt文件
# 设置参数-e允许使用换行符"\n"等
echo -e "date\npwd\nls -l" > myorder.txt

# 复制文件并重命名
cp myorder.txt sondir/zx201.txt

示例截图
在这里插入图片描述

4、第4小问

iv)查看刚才复制的文件的属性,添加文件主可执行权限

# 查看被复制文件的属性
ls -l sondir/zx201.txt

# 添加文件主可执行权限
chmod u+x sondir/zx201.txt

示例截图
在这里插入图片描述

5、第5小问

v)查看目录sondir的属性

# 使用ls命令查看文件,设置参数-l查看详细信息(包括属性),设置参数-d只查看目录
ls -ld sondir

示例截图
在这里插入图片描述

二、第2题

2. Linux命令操作:


在自己的用户目录下建立一个子目录proexam
在该子目录中建立exam.cexsort.c两个C语言源文件


exam.c是主函数文件,用数组datalist接受键盘输入的一组整数(以-999结束)并按降序输出该数组datalist中的每个数据


exsort.c用自定义函数sortdown()对数组元素降序排列


cat命令将这两个源文件合并成exall.c源文件


再用命令统计该子目录中ex打头的文件名数量

# 跳转到自己的用户目录
cd ~

# 新建目录proexam
mkdir proexam

# 跳转到目录proexam下
cd proexam

# 创建并将代码写入exam.c文件(用文本编辑器)
# (纯命令行可以使用cat > exam.c,然后在下面粘贴C程序代码,换行后按下Ctrl+C结束输入)
gedit exam.c

# 创建并将代码写入exam.c文件(用文本编辑器)
gedit exsort.c

# 使用cat命令合并文件内容,配合重定向符>写入并创建新文件
cat exsort.c exam.c > exall.c

# 使用find命令查找文件
# 	设置参数-maxdepth 1指定搜索深度为1(不查找当前目录子目录中的文件/目录)
# 	设置参数-name "ex*"指定以 ex 开头的文件
# 	设置参数-type f指定普通文件
# 使用wc命令统计,设置参数-l统计结果行数
find -maxdepth 1 -name "ex*" -type f | wc -l
exam.c代码
#include <stdio.h>

int main() {
	int datalist[] = { 1, 2, 33, 4, 5 };
	int len = sizeof(datalist)/sizeof(int);

	sortdown(datalist, len);
	
	for (int i = 0; i < len; ++i)
		printf("%d ", datalist[i]);
	printf("\n");

	return 0;
}
exsort.c代码
void sortdown(int a[], int n) {
	for (int i = 0; i < n - 1; ++i)
		for (int j = 0; j < n - 1 - i; ++j)
			if (a[j] < a[j + 1]) {
				// 交换(貌似不能像VS2017一样直接使用swap函数)
				int tmp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = tmp;
			}
}

示例截图
在这里插入图片描述
在这里插入图片描述

三、第3题

3. 若不使用文本编辑器,怎样建文本文件myorder(输入上面的三个命令)?
若要使建立的源文件(exall.c)对其它用户可执行,并用GCC工具运行该程序,应该如何操作?

# 使用echo命令 配合 重定向符> 将字符串写入myorder.txt文件
# 设置参数-e允许使用换行符"\n"等
echo -e "date\npwd\nls -l" > myorder.txt

# 设置exall.c文件可执行(对其他用户,即o)
chmod o+x exall.c

# 使用GCC直接编译出该程序
gcc -o exall exall.c

# 运行该程序
./exall

示例截图
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

God-Excious

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值