作业一
1.你对专业的认识和期望是什么:
我们的专业名字是叫做信息管理与信息系统的,而我们的专业导论课也是叫做“电子政务导论”,所以我们所应该学习与掌握的知识也与之相对应的。以系统化的信息管理手段对信息进行管理,以达到简化、自动化政务工作平台的目的。
对此,我的期望是可以学习和掌握相关的知识,不止步于纸上谈兵,能够较为熟练地运用相关知识解决面对的困难或任务。
2.上学期代码总量,以及对于这学期10000代码的看法:
上个学期中总代码量大概7000行,全部为c语言,在暑假中大概有20000行,大部分为c++,但由于暑假时间相对集中,而本学期还需兼顾其它学科,所以对于本学期实践10000行代码,可能有点难度,但应该能够实现。
3.对于学习c语言的经验与教训:
我觉得我c语言学得还行,我认为学习中比较好的经验是能够做到不会就想,不懂就问,对于碰到的问题总是会付出足够的思考,并积极尝试,而对于实在没有办法的题目,也会去寻求帮助,使得问题能够在一定时间内得到解决,不积贫积弱。但其实也还是存在着不足,比如我面对问题总是过于个人化,没有与他人一同讨论的习惯,导致我的思路一直都比较封闭,没有办法与他人产生交流。
作业二
1.VMWare上安装linux系统过程和所遇到的问题及解决方法:
- 过程:
通过一些网上的资料发现网上一边倒地认为VMWare在性能和功能上是要强过VirtualBox的,于是先在网上找到了VMWare的破解软件,下载好并用网上的密钥成功打开程序。一开始直接在csdn上搜索安装方法,根据一部分网上的教程,然后发现开始没有安装操作系统这个过程,导致一直都没有办法成功打开。后来通过向同学求助才用时发现问题并得以成功解决。
- 问题:在开始安装系统时,按照一些网上的教程并不能成功打开系统
之前对于系统的基础基本是零,所以在安装系统时也只能照葫芦画瓢,一步一步按照网上的方法来做,因为开始我对于系统的知识不够了解,而找的教程也不够详细,导致我在开始安装时未能意识到还有安装操作系统这一步骤。于是在运行程序时也总是无法打开,后来请教同学才弄明白其中的原因。然后安装了ubunto后问题也迎刃而解了。
2.对于linux系统的学习:
命令查找大全有关内容请点击查看
对于学习过程的记录及总结(为了方便补充知识,问题采用了边写边问边写解答的形式 内含部分吐槽 ):
- 一些快捷键的应用:
CTRL+ALT+T
:打开终端
CTRL+SHIFT+T
:新建一个标签页,一般会乃至三个标签页
ALT+n
:切换到第几个标签页
Tab
这个可以用来补全一些命令
上下键盘
可以用来切换命令历史,可以让你省很多事
CTRL+C
中断程序的进行,虽然和windows的有很大出入,但其实和cb中还是有一样的效果(用于及时止损)
- man
是一个在我们忘了某些命令的用途时可以用来查寻用法的工具。可以直接接命令的名字也可以以
main 2 cd
类似的形式。附:
1是普通的Linux命令
2是系统调用,操作系统的提供的服务接口
3是库函数, C语言中的函数
5是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义
6是给游戏留的,由各个游戏自己定义
7是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8是系统管理用的命令,这些命令只能由root使用,如ifconfig
当然,也可以做到访问关键字,如:
man -k key1 | grep key2 | grep key3 | ...
- cheat
这不是一个系统自带的命令,得自己下,用途(
不是用法)和man相近,用法示例:cheat find
Linux 基础入门(新版)课程:
一些快捷键
按键 | 作用 |
---|---|
ctrl+d | 键盘输入结束或退出终端 |
Ctrl+s | 暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl+z | 将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl+a | 将光标移至输入行头,相当于Home键 |
Ctrl+e | 将光标移至输入行末,相当于End键 |
Ctrl+k | 删除从光标所在位置到行末 |
Alt+Backspace | 向前删除一个单词 |
Shift+PgUp | 将终端显示向上滚动 |
用户及文件权限管理(链接内容点击查看)
-a
打印能打印的全部
-d
打印死掉的进程
-m
同am i,mom likes
-q
打印当前登录用户数及用户名
-u
打印当前登录用户登录信息
-r
打印运行等级
su <user>
可以直接切换到用户user
su -l <user>
切换用户,同时环境变量也会跟着改变成目标用户的环境变量
adduser
新建用户
passwd
设置密码
sudo <cmd>
以特权级别行使cmd命令
- group
groups
创建一个用户组
etc group |sort
| sort 表示将读取的文本进行一个字典排序再输出
/etc/group
的内容包括用户组(Group)、用户组口令、GID及该用含的用户(User),每个用户组一条记录。
cat /etc/group | grep -E "shiyanlou"
查找这个内容的文件
sudo usermod -G sudo [用户名]
赋予用户得root权限,需root权限用户操作
sudo useradd -G [用户组][用户名]
将用户加入用户组
sudo deluser lilei --remove-home
删除用户
- 文档
touch
新建文件
$ cd /home/lilei
$ ls iphone6
$ sudo chown shiyanlou iphone6
转移文件所有者
- 修改权限
chmod
控制文件如何被别人所利用
‘.’表示当前目录,‘..’表示上一级目录,‘.’开头的文件为隐藏文件
-a
显示目前所有文件,包括隐藏文件
-l
显示文件及其详细信息
-d
把目录像文件一样显示,而不是显示其下的文件
-lh
以易读形式来显示大小
s和S
s是显示文件大小,S为按文件大小排序
- cd
cd [dirName]
切换当前目录到目标目录
目录结构及文件基本操作
- 采用FHS标准
-
绝对路径:从根目录出发
相对路径:从当前目录出发
.
当前目录
..
上一级目录
../../
上一级的上一级目录
ls: 列出目录
cd:切换目录
pwd:显示目前的目录
mkdir:创建一个新的目录(可以创建多级目录-p
)
rmdir:删除一个空的目录
cp: 复制文件或目录(自制目录要有-r
或-R
)
rm: 移除文件或目录(强制删除-f
,对目录操作也要有-r
或-R
)
mv: 移动文件与目录,或修改文件与目录的名称
文件内容查看:
cat: 由第一行开始显示文件内容
tac: 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
nl: 显示的时候,顺道输出行号!
more: 一页一页的显示文件内容
less: 与 more 类似,但是比 more更好的是,他可以往前翻页!
head: 只看头几行
tail: 只看尾巴几行
file:查看文件类型
关于vim(点击有惊喜哦)
- 命令模式
vim
打开文件
按键 | 说明 |
---|---|
h | 左 |
l | 右(小写L) |
j | 下 |
k | 上 |
w | 移动到下一个单词 |
b | 移动到上一个单词 |
- 插入模式(按i或a进入)
命令 | 说明 |
---|---|
i | 在当前光标处进行编辑 |
I | 在行首插入 |
A | 在行末插入 |
a | 在光标后插入编辑 |
o | 在当前行后插入一个新行 |
O | 在当前行前插入一个新行 |
cw | 替换从光标所在位置后到一个单词结尾的字符 |
:w
文件名可以将文档另存为其他文件名或存到其它路径下
退出
命令 | 说明 |
---|---|
:q! | 强制退出,不保存: |
:q | 退出: |
:wq! | 强制保存并退出: |
:w <文件路径> | 另存为: |
:saveas 文件路径 | 另存为: |
:x | 保存并退出: |
:wq | 保存并退出: |
普通模式下输入Shift+zz即可保存退出vim
删除
命令 | 说明 |
---|---|
x | 删除游标所在的字符 |
X | 删除游标所在前一个字符 |
Delete | 同x |
dd | 删除整行 |
dw | 删除一个单词(不适用中文) |
d$或D | 删除至行尾 |
d^ | 删除至行首 |
dG | 删除到文档结尾处 |
d1G | 删至文档首部 |
shell变量
变量名与
=
之间不能有空格(可以用来赋值)。
declare
定义一个变量
'$' 引用一个定义过的变量,只要在变量名前面加美元符号即可
echo
是一个非常便捷的输出命令,它有点类似于c++中的cout甚至比cout还要简洁。
这个命令在这个链接中有比较详细的说明。
echo "hello world!"
- 环境变量
命 令 | 说 明 |
---|---|
set | 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。 |
env | 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。 |
export | 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。 |
按生存周期分类:
永久:需要修改配置文件,变量永久生效
临时:使用export
命令行声明,关闭 shell 后也失效。
两个重要文件
/etc/bashrc
(有的 Linux 没有这个文件)和/etc/profile
它们分别存放的是 shell 变量和环境变量。
Shell 是怎么知道去哪找到这个命令然后执行的:
环境变量 PATH 来进行搜索的
创建一个 Shell 脚本文件:
$ cd /home/shiyanlou
$ touch hello_shell.sh
$ gedit hello_shell.sh
!!!打脚本时一定要有#!/bin/bash
执行脚本:
$ cd /home/shiyanlou
$ ./hello_shell.sh
创建一个 C 语言“ hello world ”程序:
$ cd /home/shiyanlou
$ gedit hello_world.c
使用 gcc 生成可执行文件:(gcc 生成二进制文件默认具有可执行权限,不需要修改)
$ gcc -o hello_world hello_world.c
PATH 里面的路径是以 : 作为分割符的,所以我们可以这样添加自定义路径:
$ PATH=$PATH:/home/shiyanlou/mybin
>>
表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的
>
是以覆盖的方式重定向到一个文件中,使用的时候一定要注意分辨。
在指定文件不存在的情况下都会创建新的文件。
- 修改和删除已有变量
变量设置方式 | 说明 |
---|---|
$ | 从头向后开始匹配,删除符合匹配字串的最短数据 |
$ | 从头向后开始匹配,删除符合匹配字串的最长数据 |
$ | 从尾向前开始匹配,删除符合匹配字串的最短数据 |
$ | 从尾向前开始匹配,删除符合匹配字串的最长数据 |
$ | 将符合旧字串的第一个字串替换为新的字串 |
$ | 将符合旧字串的全部字串替换为新的字串 |
变量删除
可以使用 unset 命令删除一个环境变量:
$ unset temp
可以使用 source 命令来让其立即生效,如:
$ cd /home/shiyanlou
$ source .zshrc
source 命令还有一个别名就是 .,上面的命令如果替换成 . 的方式就该是:
$ . ./.zshrc
在使用.的时候,需要注意与表示当前路径的那个点区分开。
注意第一个点后面有一个空格,而且后面的文件必须指定完整的绝对或相对路径名,source 则不需要。
搜索文件
与搜索相关的命令常用的有 whereis
,which
,find
和 locate
- whereis 简单快速
whereis 只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)
-
locate 快而全
-
which 小而精
which 本身是 Shell 内建的一个命令,我们通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令
- find 精而细
find 应该是这几个命令中最强大的了,它不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。
参数 | 说明 |
---|---|
-atime | 最后访问时间 |
-ctime | 最后修改文件内容的时间 |
-mtime | 最后修改文件属性的时间 |
以 -mtime 参数举例:
-mtime n:n 为数字,表示为在 n 天之前的“一天之内”修改过的文件
-mtime +n:列出在 n 天之前(不包含 n 天本身)被修改过的文件
-mtime -n:列出在 n 天之内(包含 n 天本身)被修改过的文件
-newer file:file 为一个已存在的文件,列出比 file 还要新的文件名
黑客帝国中的数字雨:cmatrix(要先下)
$ sudo apt-get update; sudo apt-get install cmatrix
按下 F11 可以全屏显示。
还可以改变代码的颜色:
cmatrix -C red
文件打包和解压缩
- linux觉压缩文件形式
文件后缀名 | 说明 |
---|---|
*.zip | zip 程序打包压缩的文件 |
*.rar | rar 程序压缩的文件 |
*.7z | 7zip 程序压缩的文件 |
*.tar | tar 程序打包,未压缩的文件 |
*.gz | gzip 程序(GNU zip)压缩的文件 |
*.xz | xz 程序压缩的文件 |
*.bz2 | bzip2 程序压缩的文件 |
*.tar.gz | tar 打包,gzip 程序压缩的文件 |
*.tar.xz | tar 打包,xz 程序压缩的文件 |
*tar.bz2 | tar 打包,bzip2 程序压缩的文件 |
*.tar.7z | tar 打包,7z 程序压缩的文件 |
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
-A 调整可执行的自动解压缩文件。
-b<工作目录> 指定暂时存放文件的目录。
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-e可以创建加密压缩包
-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间> 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 更换较新的文件到压缩文件内。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率> 压缩效率是一个介于1-9的数值。
但是,其实这些也不是特别常用,真正有用的是加粗的几个
补充说明在 Windows 为 CR+LF(Carriage-Return+Line-Feed:回车加换行),而在 Linux/Unix 上为 LF(换行),所以如果在不加处理的情况下,在 Linux 上编辑的文本,在 Windows 系统上打开可能看起来是没有换行的。要用-l来解决。
unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
-P<密码> 使用zip的密码选项。
[文件] 指定要处理.zip压缩文件中的哪些文件。
- tar打包
tar好强大,它的功能好多,就不一一列举了,想知道的话就点击链接
-c 表示创建一个 tar 包文件,
-f 用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后
解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数)
压缩文件格式 | 参数 |
---|---|
*.tar.gz | -z |
*.tar.xz | -J |
*tar.bz2 | -j |
火炉
$ sudo apt-get install libaa-bin
# 提示 command not found ,请自行解决
$ aafire
解决方法:
这个是在考我们活学活用,它这个就是想把一个环境变量换一个位置,所以也就比较好解决了。
文件系统操作和硬盘管理
- 使用 df 命令查看磁盘的容量
$ df
-h
以更易懂方式查看
- 使用 du 命令查看目录的容量
# 默认同样以 块 的大小展示
$ du
# 加上`-h`参数,以更易读的方式展示
$ du -h
-d参数指定查看目录的深度
# 只查看1级目录的信息
$ du -h -d 0 ~
# 查看2级
$ du -h -d 1 ~
常用参数
du -h #同--human-readable 以K,M,G为单位,提高信息的可读性。
du -a #同--all 显示目录中所有文件的大小。
du -s #同--summarize 仅显示总计,只列出最后加总的值。
- dd
dd的命令行语句与其他的 Linux 程序不同,因为它的命令行选项格式为选项=值,而不是更标准的--选项 值或-选项=值。dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(outputfile,输出文件)改变。bs(blocksize)用于指定块大小(缺省单位为Byte,也可为其指定如'K','M','G'等单位),count用于指定块数量
- 使用 mkfs 命令格式化磁盘
使用方法
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
device : 预备检查的硬盘分区,例如:/dev/sda1
-V : 详细显示模式
-t : 给定档案系统的型式,Linux 的预设值为 ext2
-c : 在制做档案系统前,检查该partition 是否有坏轨
-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
block : 给定 block 的大小
- 使用 mount 命令挂载磁盘到目录树
使用mount来查看下主机已经挂载的文件系统:
$ sudo mount
mount命令的一般格式如下:
mount [options] [source] [directory]
一些常用操作:
mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]
使用 umount 命令卸载已挂载磁盘
- 使用 fdisk 为磁盘分区
fdisk [必要参数][选择参数]
必要参数:
-l 列出素所有分区表
-u 与"-l"搭配使用,显示分区数目
选择参数:
-s<分区编号> 指定分区
-v 版本信息
菜单操作说明
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能
- fdisk [必要参数][选择参数]
必要参数:
-l 列出素所有分区表
-u 与"-l"搭配使用,显示分区数目
选择参数:
-s<分区编号> 指定分区
-v 版本信息
菜单操作说明
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能
- 使用 losetup 命令建立镜像与回环设备的关联
losetup [-d][-e <加密方式>][-o <平移数目>][循环设备代号][文件]
参数:
-d 卸除设备。
-e<加密方式> 启动加密编码。
-o<平移数目> 设置数据平移的数目。
linux下的命令帮助
- 内建命令:shell的先天技
- 外部命令:后天加成,可以人为添加
如果你确实想知道的话可以用
type
type exit
像这样一下子就会输出是哪的,也不止有上面两种。
- 先介绍两双胞胎:
这两人家伙有点死脑筋,help只可以打内建命令,--help与它互补。
help
命令在help后
--help
命令在--help前
- man
这个家伙我们已经在上面说过了,我就不再说了
- 再讲一个比较大牌的,因为它不是一个自带的,得下载
$ sudo apt-get update
$ sudo apt-get install info
关于下载也是用得多了,就这样吧
关于它的用法
就是$ info ls
这种样子的啦。