预备作业
作业1
1、你对专业的认识和期望是什么?
认知:
我们的专业是“信息管理与信息系统”,从字面意思理解,我们应能够开发出一套能够对一定数量信息进行高效管理功能的信息系统,这里的管理应包括对信息的准确识别、分析、分类、传播等功能,使用户能方便、快速、明确地掌握并利用信息来完成用户的目的。其次,当然还需具备对信息系统的运行维护和安全保障的能力。
然而,上述专业能力与要求在电科院这个特殊环境下,便会偏向对电子政务系统的开发、维护与安全保障。
期望:
学习专业知识时,能在保持“偏软”的学习方向的同时对计算机硬件系统有完整而较细致的掌握,增强自己对计算机的系统理解,为以后深入发展打下坚实基础。在保持“偏专”的学习方向的同时,借助必修知识敲开计算机世界的知识大门,为毕业后的就业的多元化发展打下坚实基础。
2、上学期C语言总代码量大概多少行,本学期实践10000行代码,你觉得这个负担大吗?
- 上学期C语言总代码量大概7000-8000行。
- 我认为用Java语言实现10000行,是有不小难度的。
3、你的C语言学习怎么样?如果学的还行,你认为从C语言学习中比较好的经验是什么?如果学的不好,那么你学的不好的原因是什么?(每个人需要根据实际情况,分析学习经验或者学习不好的原因)
- 我觉得我的C语言学习并不够深入。能够解决简单的问题,但是并不是每次都能用最简便的代码来解决。并且因为课时限制,我们还未深入学习指针,文件的章节也是快速带过。总之便是对C语言的掌握并不深入,仅大致掌握。
- 我的学习经验是:
多敲代码,多练习才是熟练掌握一门编程语言的捷径。
无论学习任何一门语言,都要形成从问题到程序的学习方法和思考方式。
上课跟着老师走,按照老师的要求学,掌握的就不会差。
作业2
我的Linux学习记录
1、Linux初了解
作为涉世未深的编程少年,目前我对Linux所作的了解较为简单,分为以下方面。
(1)Linux是什么?
- Linux是一个操作系统。
(2)和我们常用的Windows相比,Linux有什么优点?
- Linux相对更安全。
- Linux更开源。
- Linux更注重以代码来驱动系统,而Windows依靠更人性化的图形界面。
- 熟练掌握Linux后,工作效率会比使用Windows高许多。
- ……
(3)Linux的应用场景?
- 搭建服务器。
- 软件开发应用。
- ……
2、关于Linux的命令
(1)简介:
在使用Linux系统时,我们用户通过在shell(终端)上输入命令来对系统进行操作。
(2)Linux的命令结构如下:
命令 + 选项 + 参数
“命令”即你想要系统完成的指令。
“选项”可以调整系统完成指令的显示方式。
“参数”即被操作的文件的路径。
(3)经验分享:
Linux的命令数量较多,但是掌握基本的几个命令便可以操作系统完成大部分的操作。
想要快速掌握Linux的命令,最好的方法便是了解每个命令代表的英语单词及其含义。
例如,“ls”代表list,“-a”代表-all……
若想知道一个命令的用法,可以使用man(manual)命令进行查看,而想再看看使用例子,则可以用cheat命令。
想要加快输入命令的速度,可以使用tab键自动补充剩余的命令。已经使用过的命令按方向键⬆也可以快速复制。
3、关于用户与权限
(1)简介:
在Linux中的用户共有所属主(user)、群组(group)和其他人(others)三种,再加上拥有最高权限的root 。
在Linux中,权限也分为三种,读(read)、写(write)和执行(execute)。
不同类型的用户面对系统中的文件时,会有不同的操作权限。例如,所属主拥有所属文件的全部三个权限,而其他人大多数情况下只拥有读的权限。若用户处在某个群组,则该用户可以拥有该群组所拥有的权限。
(2)重要命令:
用户
查看当前用户
$ who am i
或者
$ who mom likes
新建用户
$ sudo adduser lilei
(然后跟着进行用户设置)
切换用户
$ su -l (再加用户名)
(然后输入密码即切换完成)
删除用户
$ sudo deluser (用户) --remove-home
权限
查看权限
ls -l
(使用长格式列出文件)
r代表read,即对文件可读权限。
w代表write,即对文件可写权限。
x代表execute,即对文件可执行权限。
变更所属主
(首先要确保自己是拥有超级权限的用户,
然后使用cd,即change directory
更改目录命令到达需要修改权限的文件的目录下)
随后输入
$ sudo chown (原用户) (改用户)
变更权限
(首先还是要用有修改权限的用户进入目标文件目录)
然后输入
$ chmod xxx (文件名)
xxx是一串二进制数字,它们代表着三类用户对一个文件所拥有的权限,具体如下:
(也可以如下操作)
$ chmod go (+或-)(权限) (文件名)
4、关于Linux的目录结构
(1)简介:
Linux系统中的目录结构非常有序且死板,即规定某类文件一定要储存在固定的目录下。
这个结构的标准被称为FHS标准。这个标准定义了两层规范:
第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等。
第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等。
具体标准如下:
(2)重要代码
切换路径
cd (路径)
即change directory。
获取当前路径
pwd
即print work directory。
运用相对路径和绝对路径来切换路径
# 绝对路径
$ cd /usr/local/bin
# 相对路径
$ cd ../../usr/local/bin
切换回用户主页路径
cd ~
创建空白文件
touch (文件名)
创建空白目录
mkdir (目录名)
可以使用-p来同时创建多及目录
$ mkdir -p (父目录)/(子目录)
复制文件
(首先要处在想要复制的文件的路径中)
$ cp (文件名) (目的路径)
复制目录
(首先要处在想要复制目录的路径中)
$ cp -r (目录名) (目的路径)
删除文件
$ rm (文件名)
遇到只可读的文件时,可用
$ rm -f (文件名)
强制删除
删除目录
$ rm -r (目录名)
移动文件
mv (文件名) (目标路径)
重命名文件
mv (文件名) (新文件名)
更专业的批量创建、重命名、修改文件
$ cd /home/shiyanlou/
# 使用通配符批量创建 5 个文件:
$ touch file{1..5}.txt
# 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:
$ rename 's/\.txt/\.c/' *.txt
# 批量将这 5 个文件,文件名和后缀改为大写:
$ rename 'y/a-z/A-Z/' *.c
查看文件
cat (文件名)
可输入
cat -n (文件名)
来显示行号
5、环境变量与文件查找
(1)简介
什么是变量?
变量是用于记录一个值的符号。
什么是环境变量?
Shell 中的变量也基本如此,有不同类型(但不用专门指定类型名),可以参与运算,有作用域限定。
环境变量的作用域比自定义变量的要大,如 Shell 的环境变量作用于自身和它的子进程。在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。Shell 程序也作为一个进程运行在操作系统之上,而我们在 Shell 中运行的大部分命令都将以 Shell 的子进程的方式运行。
三种变量:
- 自定义变量,只能在当前shell作用
- Shell本身自建的变量
- 从自定义变量导出的环境变量
Linux执行程序时的搜索方式:
在PATH环境变量中搜索文件,一旦搜索到和输入程序匹配的文件名便执行。
(2)重要代码:
创建一个变量并赋值
$ declare 变量名
$ 变量名=变量值
读取一个变量的值
$ echo $变量名
打印环境变量
$ temp=shiyanlou 先创建个变量并赋值
$ export temp_env=shiyanlou
$ env|sort>env.txt
$ export|sort>export.txt
$ set|sort>set.txt
创建脚本
$ touch 脚本名.sh
编辑脚本
$ gedit 脚本名.sh
执行脚本
./脚本名.sh
创建c语言程序
$ gedit 程序名.c
然后用gcc生成可执行文件
$ gcc -o 程序名 程序名.c
在PATH变量中加入自定义路径
$ PATH=$PATH:自定义程序的绝对路径
让PATH中添加的自定义变量每次启动都生效
每次Linux启动的时候,都会执行一个配置脚本来初始化环境,会把我们之前添加的自定义路径给清除,因此我们要把添加的自定义路径加入这个开机脚本中。
Bash的开机脚本叫.bashrc,zsh的开机脚本叫.zshrc。
随后输入下列命令
echo "PATH=$PATH:自定义绝对路径" >> 所使用的Shell的开机脚本名
修改变量
变量设置方式 | 说明 |
---|---|
$ | 从头向后开始匹配,删除符合匹配字串的最短数据 |
$ | 从头向后开始匹配,删除符合匹配字串的最长数据 |
$ | 从尾向前开始匹配,删除符合匹配字串的最短数据 |
$ | 从尾向前开始匹配,删除符合匹配字串的最长数据 |
$ | 将符合旧字串的第一个字串替换为新的字串 |
$ | 将符合旧字串的全部字串替换为新的字串 |
删除变量
$ unset 变量名
让环境变量立刻生效
因为之前修改了开机脚本之后一般要重启后才生效,可以用下列命令让它立即生效
$ cd 脚本所在目录
$ source 开机脚本名
或将source简化为.
$.(代表source) (这里有个空格)./.zshrc(绝对/相对路径名)
文件搜索
(1)whereis
这个命令搜索速度快,因为它并不从硬盘中逐一查找,而是在另一个创建的数据库中查找。
这个命令只能用于搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)。
whereis 文件名
(2)locate
也是通过数据库进行查找,不过数据库并不实时更新,而是每天定时更新。
在刚添加文件时,需要手动执行updatedb命令来更新数据库。
$ sudo apt-get update(更新数据库)
$ sudo apt-get install locate(安装locate)
$ locate /etc/sh(搜索以sh开头的文件)
(3)which
这个命令一般用来检测是否安装了某个软件,只从PATH指定路径中搜索。
which 文件名
(4)find
功能最强大
实例:
$ find 路径 -选项(可以是搜索文件名-name,也可以按照其他,例如时间来搜索) 文件名
6、文件打包与解压缩
常见的压缩解压缩命令
zip、tar
(1)zip
zip 参数 创建的压缩文件名 压缩包创建路径
参数类型
- -r 递归打包包含子目录的全部内容
- -q 参数表示为安静模式,即不向屏幕输出信息
- -o 表示输出文件,需在其后紧跟打包输出文件名
- -1~9 用于设置压缩级别,1 表示最快压缩但体积大,9 表示体积最小但耗时最久。
- -e 创建加密zip包
解压
unzip 压缩包名
(2)tar
$ cd 压缩路径
$ tar 参数 创建压缩包名 压缩包创建路径
参数
- -c 表示创建一个 tar 包文件
- -f 用于指定创建的文件名(文件名必须紧跟-f后)
- -x 解包一个文件到指定路径的已存在目录(-C 参数)
7、文件系统操作与磁盘管理
(1)dd命令
dd命令有什么用?
复制和转换文件
如何使用
dd 参数=值
(2)重要命令
查看磁盘容量
$ df
查看目录容量
$ du
8、Linux下的帮助命令
(1)内建命令与外部命令
简介
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。
如何查看一个命令是内建命令还是外部命令?
type 命令
(得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 builtins 的.def中)
xxx is a shell builtin
(得到这样的结果说明是外部命令,正如上文所说,外部命令在/usr/bin or /usr/sbin等等中)
xxx is /usr/bin/xxx
(若是得到alias的结果,说明该指令为命令别名所设定的名称)
xxx is an alias for xx --xxx
(2)帮助命令的使用
help
查看内建命令
$ help 命令
查看外部命令
$ 命令 --help
man
man 命令
man得到的内容比用 help 更多更详细,而且 man 没有内建与外部命令的区分
info
# 安装 info
$ sudo apt-get update
$ sudo apt-get install info
# 查看 ls 命令的 info
$ info 命令
得到的信息比man更多
9、感想
- Linux骚操作过多,学也学不完,学了的全忘完。
- 最好学习方法就是能多运用。
- 抽象内容过多,教学又讲不清楚,自学到我想去世。
- 最好能了解命令和参数的英文全称,有助于理解和记忆。(强烈建议教学加上这个部分,讲的详细点!)