练习1
1.在用户的家目录下创建 目录文件 dir1 和 普通文件file1
2.在家目录下给dir1目录嵌套创建 dir1/dir2/dir3/dir4/dir5
3.在家目录下直接一步进入到 dir4 里面
4.在dir4目录中将家目录下的file1 移动到上一级的dir3中
5.在dir4目录下创建一个目录文件 test
6.将test 复制到上一级的dir3中
7.在dir4中直接查看dir3中有哪些文件
8.在dir4中直接回到家目录 删除刚才创建的目录 dir1
1、回顾练习:
题目1~5、7、8对文件的创建(mkdir,touch)、移动(cp,mv)、列出(ls,tree)、删除(rm,rmdir)进行,以及工作目录的转换复习。
//回到家目录
ubuntu@ubuntu:/$ cd
*****************************************************************************************
//mkdir 创建目录文件
ubuntu@ubuntu:~$ mkdir dir1
//touch 创建文件
ubuntu@ubuntu:~$ touch file1
ubuntu@ubuntu:~$ ls
公共的 模板 视频 图片 文档 下载 音乐 桌面 a.out a.txt dir1 file1 snap txt.a
*****************************************************************************************
//mkdir -p连续嵌套创建目录文件
ubuntu@ubuntu:~$ mkdir -p dir1/dir2/dir3/dir4/dir5
ubuntu@ubuntu:~$ tree dir1
dir1
└── dir2
└── dir3
└── dir4
└── dir5
4 directories, 0 files
*****************************************************************************************
//cd 进入目录文件
ubuntu@ubuntu:~$ cd dir1/dir2/dir3/dir4/
*****************************************************************************************
/*mv移动指令 ../表示返回上一级*/
ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ mv ~/file1 ~/dir1/dir2/dir3/
ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ tree ../
../
├── dir4
│ └── dir5
└── file1s
*****************************************************************************************
//在dir4目录下创建一个目录文件 test
ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ mkdir test
ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ ls
dir5 text
2、cp指令
cp 复制文件1到文件2中 (具有覆盖的特性)
cp -r 用于非空目录文件的复制
注意:a、目标目录文件必须存在,cp命令不能创建新的目录文件。
b、复制的文件没有权限,则会显示出错。
例题:将test 复制到上一级的dir3中
ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ cp -r test ../
ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ tree ../
../
├── dir4
│ ├── dir5
│ └── test
├── file1
└── test
3、cat指令
cat具有三种功能:
a、查看文件全部内容(全部一起显示)
b、复制并粘贴文件,
cat 1.c>2.c 2.c具有和1.c一样的内容
c、将几个文件合为一个 文件,文件内容也按顺序合并。
cat 1.c 2.c >3.c
cat dir1 dir2 >dir3
拓展:
echo 文件1>文件2 的作用是新建一个文件2,将“文件2”这串文字写入到文件2中。
在dir4中直接回到家目录 删除刚才创建的目录 dir1
ubuntu@ubuntu:~$ rm -r dir1
ubuntu@ubuntu:~$ ls
公共的 模板 视频 图片 文档 下载 音乐 桌面 a.out snap
ubuntu@ubuntu:~$
练习2
- 创建目录24081C,在该目录下创建目录dir1 dir2 文件file1
- 使用echo在file1中打印一首古诗【执行调整格式】
- 复制file1给file2
- 将file1移动到dir1
- 将file2移动到dir2
- 在file1后面追加一行语句“我爱C语言”
- 查看file1内容
2.1创建目录24081C,在该目录下创建目录dir1 dir2 文件file1
ubuntu@ubuntu:~$ mkdir 24081C
ubuntu@ubuntu:~$ cd 24081C/
ubuntu@ubuntu:~/24081C$ mkdir dir1 dir2
ubuntu@ubuntu:~/24081C$ touch file1
ubuntu@ubuntu:~/24081C$ tree ~/24081C
/home/ubuntu/24081C
├── dir1
├── dir2
└── file1
2 directories, 1 file
2.2 echo指令
echo(英译:重复、附和)
功能:a、在屏幕上显示字符串; echo 字符
echo "字符"
echo `字符`
echo -n 显示字符不会独占一行
echo -e 可以解析特殊字符(eg:\n \t)
b、在文件中写入要写的内容;
echo -e "字符串” > file1将字符串写入file1【若执行多次只保留最后一次】
echo -e "字符串">>file1将字符串追加到file1
c、在脚本编辑时显示某一变量的值;
题目:
使用echo在file1中打印一首古诗【执行调整格式】
ubuntu@ubuntu:~/24081C$ echo -e "\t\t\t登高\n\t\t\t 唐·杜甫\n\t\t风急天高猿啸哀 ,渚清沙白鸟飞回.\n \t\t无边落木萧萧下,不尽长江滚滚来。\n \t\t万里悲秋常作客, 百年多病独登台。\n\t\t艰难苦恨繁霜鬓,潦倒新停浊酒杯。" >file1
ubuntu@ubuntu:~/24081C$ cat file1
登高
唐·杜甫
风急天高猿啸哀,渚清沙白鸟飞回.
无边落木萧萧下,不尽长江滚滚来。
万里悲秋常作客,百年多病独登台。
艰难苦恨繁霜鬓,潦倒新停浊酒杯。
复制file1给file2
方法一:cp指令
ubuntu@ubuntu:~/24081C$ cp file1 file2
ubuntu@ubuntu:~/24081C$ ls
dir1 dir2 file1 file2
方法二:cat指令
ubuntu@ubuntu:~/24081C$ cat file1>file2
ubuntu@ubuntu:~/24081C$ ls
dir1 dir2 file1 file2
2.3 mv指令
功能:进行剪切并粘贴
mv file1 file2 剪切file1,粘贴为file2【此时file2的内容是file1的内容】;
mv dir1 dir2 剪切dir1,若dir2存在粘贴到dir2;若dir2不存在将dir1重命名为dir2;
mv file1 dir1 剪切file1,粘贴到dir1里面;
题目:
将file2移动到dir1
将file1移动到dir2
ubuntu@ubuntu:~/24081C$ mv file2 dir1
ubuntu@ubuntu:~/24081C$ mv file1 dir2
ubuntu@ubuntu:~/24081C$ tree
.
├── dir1
│ └── file2
└── dir2
└── file1
在file1后面追加一行语句“我爱C语言”
查看file1内容
ubuntu@ubuntu:~/24081C$ echo "我爱C语言">>./dir2/file1
ubuntu@ubuntu:~/24081C$ cat dir2/file1
登高
唐·杜甫
风急天高猿啸哀,渚清沙白鸟飞回.
无边落木萧萧下,不尽长江滚滚来。
万里悲秋常作客,百年多病独登台。
艰难苦恨繁霜鬓,潦倒新停浊酒杯。
我爱C语言
练习3
使用gcc 程序编译生成可执行文件的步骤分为 预处理 、 编译 、 汇编 、 链接 ;
GCC编译器中 -S 选项完成的工作是 编译 ;
注释:
源文件(高级语言代码)——>通过 gcc -E ——>生成后缀为xxx.i的文件 (该过程为预处理);
xxx.i文件——>通过 gcc -S ——>生成后缀为xxx.s的文件 (该过程为编译);
xxx.s文件——>通过gcc -c ——>生成后缀为xxx.o的文件 (该过程为汇编) ;
将xxx.o文件与链接计算机函数库,让xxx.o中使用的库中函数得到解释,从而达到使用函数的功能。 (该过程为链接)。
C语言的程序的入口函数是什么,请写出全称?
入口函数是 “main”,
全称是 “int main(void)”
或 “int main(int argc, char *argv[])”。
这里的 “int`”表示 “main”函数的返回值类型是整型,
“void”表示 “main”函数没有参数,
“argc” 是命令行参数的个数,
“argv”是命令行参数的数组。
分析一下#include <stdio.h>的意思
在C语言中,`#include <stdio.h>` 的作用是将标准输入输出头文件 `stdio.h` 的内容包含到当前源文件中。
`#` 表示预处理指令的开始。在C语言中,`#` 用于引导预处理指令,这些指令在编译之前由预处理器处理。注:以#开头,并且结尾不能加分号【不是C语言语句】
`include` 表示包含(或引入)某个文件的指令。它告诉预处理器将指定的文件内容插入到当前文件中。
`stdio.h` 是标准输入输出库的头文件。它包含了用于输入输出操作的函数声明,比如 `printf`、`scanf`、`fopen` 等。注:.h后缀是头文件
`<>` 和 `""` 的区别在于文件的查找方式:
`<>` 表示标准库头文件的查找路径。预处理器首先在系统的标准库目录中查找指定的头文件。这种方式通常用于标准库的头文件,如 `stdio.h`、`stdlib.h` 等。
`""` 表示用户自定义头文件的查找路径。预处理器首先在当前目录中查找指定的头文件。如果找不到,再去标准库目录中查找。这种方式通常用于用户编写的头文件。