预备作业

作业一

你对专业的认识和期望是什么?

  • 我的专业是信息管理与信息系统。在我的认知中,本专业涉及管理学、经济学、C语言、Java等课程,注重于培养的是综合性人才。对于我们学院的学生来讲,本专业的发展方向是电子政务,是致力于发展用现代电子信息技术打造全新的电子政务服务模式的重要专业。我希望能在今后的学习中,努力增强我的专业知识,未来在这个领域也能作出自己的贡献。

上学期C语言总代码量大概多少行,本学期实践10000行代码,你觉得这个负担大吗?

  • 我在上学期编写的C语言代码量大约在8000~9000行,接近10000行的代码量。
  • 本学期实践10000行代码, 是有难度的,我会投入更多的精力和时间来努力达成。

你的C语言学习怎么样?如果学的还行,你认为从C语言学习中比较好的经验是什么?如果学的不好,那么你学的不好的原因是什么?

  • 我的C语言水平应该只能算中等,基本知识掌握较好,但有难度的知识或题目我可能在思维逻辑方面有所欠缺。
  • 对于学习C语言的经验我认为是多思考、多练习。只有在实践的过程中才能更直接的发现自己的问题,锻炼自己的能力。

Linux学习心得

一、安装虚拟机

安装过程中遇到的问题及解决

  • 版本更新:教程中演示的是版本号为5.1.8的VirtualBox,而现在它的最新版本已经更新到了6.0.10,包括ubuntu的版本也从16.04LTS更新到了18.04LTS,所以安装过程与教程的某些地方有些出入。比如在安装ubuntu选择虚拟盘时,镜像文件不会自动匹配,需要自己找到文件下载路径。
  • 根据实际情况做改变:在安装VirtualBox虚拟机增强功能时,需要根据自身虚拟机、ubuntu的版本将命令调整。

二、Linux学习笔记

1.Linux系统简介

  • 定义:Linux与为人熟知的Windows、Mac OS一样,是一个操作系统。
  • Linux的特色
    • Linux免费或产生少许费用
    • 大都为开源自由软件,用户可以修改定制和再发布
    • 相比 Windows 平台要更加安全
    • 兼具图形界面操作(需要使用带有桌面环境的发行版)和完全的命令行操作,可以只用键盘完成一切操作
    • 可定制性
    • 应用范畴极广,世界上大部分软件和服务都是运行在 Linux 之上的

2.Linux基本概念及操作

  • 重要快捷键

快捷键|作用
:--😐:--|--:
Ctrl+c|强行终止当前程序
Ctrl+d|键盘输入结束或退出终端
键盘上的方向上键↑|恢复之前输入过的命令

  • Shell常用通配符

字符|含义
:--😐:--|--:
*|匹配 0 或多个字符
?|匹配任意一个字符
[list]|匹配 list 中的任意单一字符
[^list]|匹配 除list 中的任意单一字符以外的字符
[c1-c2]|匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]
{string1,string2,...}|匹配 string1 或 string2 (或更多)其一字符串

3.用户及文件权限管理

Linux用户管理

  • 查看用户
    who am i 或者 who mom likes
  • 创建用户
    • root权限:系统权限的一种。 root 账户拥有整个系统至高无上的权利,比如 新建/添加用户
    • 创建步骤
      • 1.sudo adduser <用户名>sudo useradd <用户名>
        区别:后者只创建用户,需要用sudo passwd <用户名>来设置密码。
        adduser 会创建用户,创建目录,提示创建密码,像程序一样运行所有操作
      • 2.切换登录用户
        su <用户名>su -l <用户名>
  • 用户组
    • 定义:一组用户的集合,它们共享一些资源和权限,同时拥有私有资源
    • 如何确定自己所属的用户组:
      groups <用户名>cat /etc/group | grep -E <用户名>
    • 将其他用户加入sudo用户组
      用root用户添加:sudo usermod -G sudo <用户名>
    • 删除用户:
      sudo deluser <用户名> --remove-home

Linux文件权限

  • 查看文件权限
    ls -l
  • ls命令

命令|含义
:--😐:--|--:
-A|显示除了 .(当前目录)和 ..(上一级目录)之外的所有文件,包括隐藏文件
-Al|查看某一个目录的完整属性
-dl|显示所有文件大小

  • 变更文件所有者
    • 步骤:
      cd /home/<文件原所有者>
      ls <文件名>
      sudo chown <用户名> <文件名>
  • 修改文件权限
    chmod 600 <文件名>chmod go-rw <文件名>
  • *注释:
    1.chown=change owner
    2.cd=change directory
    3.su=switch user
    4.chmod=change mode
    5.g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限

4.Linux目录结构及文件基本操作

Linux目录路径

  • 定义:想进入某个具体的目录或者想获得某个目录的文件的路线
  • 绝对路径
    • 以根" / "目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录
    • cd /user/local/bin
  • 相对路径
    • 相对于当前的目录的路径:相对路径是以当前目录 . 为起点,以所要到的目录为终点,表现形式如: usr/local/bin (这里假设当前目录为根目录)
    • cd ../../user/local/bin
  • 进入上级目录
    • cd ..

Linux文件的基本操作

  • 新建

命令|含义
:--😐:--|--:
touch <文件名>|新建空白文件
mkdir <目录名>|新建目录
mkdir -p <多级目录>|新建多级目录

  • 复制

命令|含义
:--😐:--|--:
cp <文件名> <目录>|复制文件
cp -r <复制文件名> <被复制文件名>|复制目录

  • 删除

命令|含义
:--😐:--|--:
rm <文件名>|删除文件
rm -f <文件名>|强制删除
rm -r <目录名>|删除目录

  • 移动文件与文件重命名

命令|含义
:--😐:--|--:
mv <文件名> <目录名>|移动文件
mv <旧文件名> <新文件名>|重命名文件
rename|批量重命名

  • 查看文件

命令|含义
:--😐:--|--:
cat|正序显示
tac|倒序显示
nl|添加行号并打印

(还有more、less、tail等命令可用于查询文件,添加-n参数可查看、选择行数)
  • 查看文件类型
    file <路径>
  • 编辑文件
  • *注释:
    1.mkdir=make directories
    2.cp=copy
    3.rm=remove files or directories
    4.mv=move or rename files

5.环境变量与文件查找

环境变量

  • 当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效
  • Shell 本身内建的变量
  • 从自定义变量导出的环境变量

命令|含义
:--😐:--|--:
set|显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量
env|显示与当前用户相关的环境变量,还可以让命令在指定环境中运行
export|显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量

  • 命令的查找路径与顺序

    • 查找PATH环境变量的内容:echo $PATH
  • 添加自定义路径到“ PATH ”环境变量

    • PATH=$PATH:<路径>
    • 一定要用绝对路径
  • >>表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的 > 是以覆盖的方式重定向到一个文件中,使用的时候一定要注意分辨。在指定文件不存在的情况下都会创建新的文件。

搜索文件

  • whereis
  • locate
    • 它不只是在 /bin 目录下查找,还会自动递归子目录进行查找
    • 只统计数目可以加上 -c 参数,-i 参数可以忽略大小写进行查找,whereis 的 -b、-m、-s 同样可以使用
  • which
  • find
    • find 命令的路径是作为第一个参数的, 基本命令格式为 find [path] [option] [action]
    • 与时间相关的命令参数

参数|含义
:--😐:--|--:
-atime|最后访问时间
-ctime|最后修改文件内容的时间
-mtime|最后修改文件属性的时间

命令|含义
:--😐:--|--:
mtime n|n 为数字,表示为在 n 天之前的“一天之内”修改过的文件
mtime +n|列出在 n 天之前(不包含 n 天本身)被修改过的文件
mtime -n|列出在 n 天之内(包含 n 天本身)被修改过的文件
newer file|file 为一个已存在的文件,列出比 file 还要新的文件名

6.文件打包与解压缩

常用的压缩包文件格式

文件后缀名|说明
:--😐:--|--:
*.zip|zip程序打包压缩的文件
*.tar|tar程序打包,未压缩的文件

zip压缩打包程序

  • 使用zip打包文件夹:zip -r -q -o <文件名> <绝对路径>

    • -r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名
  • 设置压缩级别重新打包:zip -r -[1~9] -q -o <文件名> <绝对路径> -x~/*.zip

    • 1 表示最快压缩但体积大,9 表示体积最小但耗时最久。-x 是为了排除上一次创建的 zip 文件,否则又会被打包进这一次的压缩文件中
  • 查看打包后文件的大小

    • du -h <文件名>.zip
  • 创建加密zip包

    • 使用-e参数:zip -r -e -o <压缩包> <绝对路径>
  • 使用 unzip 命令解压缩 zip 文件

    • 将压缩包解压到当前目录:unzip <压缩包名>.zip
    • 将文件解压到指定目录:unzip -q <压缩包名>.zip -d <指定目录>
    • 查看压缩包的内容:unzip -l <压缩包名>.zip

tar打包工具

  • 创建tar包:tar -cf <压缩包名>.tar <绝对路径>
  • 解包:tar -xf <压缩包名>.tar
  • 指定路径:-C参数

7.文件系统操作与磁盘管理

基本操作

  • 查看磁盘容量:df
  • 查看目录容量:du
  • 常用参数:

参数|说明
:--😐:--|--:
-h|提高可读性
-a|显示目录中所有文件大小
-d|查看指定目录深度

创建虚拟磁盘

  • dd命令简介
    • 从标准输入读入用户的输入到标准输出或者一个文件中:
      • 1.dd of=test bs=10 count=1
      • 2.输入
      • 3.用cat命令显示规定大小的输出
    • 创建虚拟镜像文件
      • 创建容量为 X 兆的空文件:dd if=/dev/zero of=<文件名>.img bs=1M count=X
      • 格式化磁盘:sudo mkfs.ext4 <文件名>.img
      • 挂载磁盘到目录树:mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]
      • 建立镜像与回环设备的关联:sudo losetup /dev/loop0 <文件名>.img
      • 格式化各分区
      • 新建空目录以挂载虚拟磁盘:mkdir -p /media/<目录名>_{1..3}

8.Linux下的帮助命令

帮助命令的使用

  • help命令
    • help 命令是用于显示 shell 内建命令的简要帮助信息
    • ls --help可用于显示外部命令
  • man命令
    • 得到的内容比用 help 更多更详细,而且 man 没有内建与外部命令的区分
  • info命令
    • 与 man 相比,info 工具可显示更完整的GNU工具信息
  • *注释:man、info能显示更多的信息,但若紧急时忘记该用哪个参数时,显示更简单扼要的help命令更实用

Linux学习心得

  • 学习中遇到的问题
    • 由于Linux的操作方式是完全命令行操作,与过往我所熟悉的Windows图形界面操作方式截然不同。无法再使用鼠标来点击操作,完全凭借陌生、不熟练的键盘操作给我的学习带来了一定的困难。
    • 在学习过程中,大量的、不明意义的指令难以记忆,造成了我极大的困惑。
  • 问题的解决
    • 键盘操作在一开始固然会使人感到别扭。但是如果掌握了一些常用的快捷键,如ctrl+c,ctrl+d,还有快速切换的alt+tab等指令,会发现键盘操作的速度远远大于鼠标移动点击速度。
    • 指令的意义不明是造成难以理解记忆Linux操作的最大因素。考虑到这一点,我去搜索了常用Linux指令的英文缩写(Linux命令英文缩写的含义),如cd=change directory,即改变目录,在知道了指令的英文含义后,理解瞬间变得简单起来。另一种解决方式是Linux中的各种帮助指令,如help,man等,查询它们能很完整、全面的了解到指令的用途、含义,对于学习的帮助也是巨大的。
    • 但最重要的一点还是需要实践。如果不在实验楼的模拟环境下自己真正打一遍代码,光看流程,是无法真正学以致用的。眼、手、脑的共同配合才能加深对于知识的汲取程度。
posted @ 2019-09-01 15:06  陆彦杰  阅读(275)  评论(1编辑  收藏  举报