黑暗中奔跑,看不清颜色,胜负未定,让你半子又何妨?------ ydfy的csdn

ydfy

作业一

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和Ss是显示文件大小,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 则不需要。

搜索文件

与搜索相关的命令常用的有 whereiswhichfindlocate

  • 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

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好强大,它的功能好多,就不一一列举了,想知道的话就点击链接

-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这种样子的啦。

posted on 2019-09-01 21:24  ydfy  阅读(269)  评论(1编辑  收藏  举报