预备作业:课程基础
作业一
你对专业的认识和期望是什么?
信息管理与信息系统是一门综合管理学和计算机科学的交叉学科,主要学习利用计算机技术进行信息的管理,我个人理解本专业更偏向工科,侧重于计算机技术的学习。在专业课程的学习中,我希望积累扎实的管理学理论基础和计算机应用技术,学习更多的计算机知识,如网络空间安全和软件工程方面等。希望学完这门课程可以做出一些有趣的小程序、小游戏。
上学期C语言总代码量大概多少行,本学期实践10000行代码,你觉得这个负担大吗?
学习c语言大概打了9000行代码。10000代码应该能完成。
你的C语言学习怎么样?如果学的还行,你认为从C语言学习中比较好的经验是什么?如果学的不好,那么你学的不好的原因是什么?
学的还行。经验有两点,一是多练,积累一定的练习量可以使解题思路更加清晰,二是归纳总结,总结算法思路有助于解决复杂的题目。上学期没看课外参考书,仅学了些基础知识,要改进。
作业二
安装Vmware Ubuntu 的问题解决
1.ubuntu窗口显示过小
解决过程:在安装Vmware工具里选择安装Vmware Tools,下载完成后,把VMwareTools…tar.gz提取到虚拟机桌面,桌面出现vmware-tools-distrib目录。在终端输入sudo su命令,输入用户密码进入root用户。 执行vmware-install.pl命令,根据提示输入yes/no直到出现enjoy字样,重启虚拟机即安装完成。在虚拟机上放工具栏“查看”中可以自己调节窗口大小。
2.Ubuntu系统磁盘空间不足
解决过程:在安装vmware tools过程中发现初始分配的磁盘空间不足,根据博客,先在虚拟机上进行磁盘的扩展,增加最大虚拟磁盘大小。打开虚拟机在终端输入sudo apt-get install gparted命令安装gparted,运行sudo gparted,重新进行磁盘分区。重启以后用df命令检查分区是否成功。
Linux命令学习笔记及问题解决
一、命令与选项
指令主体 (空)[选项]
(空) [操作对象]
1.banner:输出图形字符
$ sudo apt-get update
sudo apt-get install sysvbanner
(安装)
$ banner lengchong
或
$ printerbanner -w
(制定打印宽度参数) 50A
另外还有toilet
figlet
等
2. ls:查看文件夹下内容(list)
.
开头文件为隐藏文件.
表示当前目录..
表示上一级目录- 选项:
-a
显示隐藏文件,-l
列表显示文件详细情况,-h
配合-l使用,人性化显示文件大小 - 选项可叠加使用,无顺序要求,例如:
-lh
,-lha
等
3.pwd:查看当前文件夹(print work directory)
4. cd[目录名]:切换文件夹(change directory)
cd
或cd~
:返回/home/lengchongcd .
:不变cd ..
: 返回上一级cd -
:在最近两次文件夹来回切换- 绝对路径与相对路径:相对路径指当前工作路径(./),相对路径下的文件夹可以直接通过文件夹名切换;绝对路径是从根目录开始的路径(/),按照绝对路径使用cd指令可以准确切换任何位置的文件夹。
5.touch[文件名]:创建还未存在的文件
6.mkdir[目录名]:创建目录(make directory)
- p选项:递归创建目录。例:
mkdir -p father/son/grandson
7.rm[文件名]:删除文件(remove)
- 说明:
rm
删除文件不可恢复,不要用于系统文件 - 选项:
-f
(force)强制删除文件,不论文件是否存在;-r
一次性删除多个目录,用于删文件夹,例如:rm -r *
可删除所有文件。
8.cp:拷贝文件(copy)
cp [源文件名] [目标文件]
- 选项:
-i
显示覆盖前提示;-r
复制文件夹。
9. mv:移动/重命名(move)
mv [源目录文件] [目的目录]
-i
覆盖前提示
* 指令 --help
或man
指令 查看帮助信息
* 通配符:
*
代替任意多个字符?
代替任意一个字符[-]
:匹配一组单字符或连字符分隔范围内的字符{..}
:匹配字符串和范围
* 终端实用技巧:
Tab
自动补全;上下键切换历史命令;clear
清空终端界面;ctrl + shift + =
放大终端。
二、用户及权限管理
用户管理
- 查看用户:
who am i
或who mom likes
- 出现
lengchong pts/0
:lengchong是用户名,pts表示伪终端,是打开多个终端产生的,数字表示伪终端序号。 - who 命令其他参数:
-a
打印全部;-d
打印已死进程;-q
打印当前登陆用户数及用户名;-r 打印运行等级。
- 出现
- 创建用户
- root权限能添加/删除用户
su
、su-
与sudo
:su <user>
:切换用户sudo adduser user
:新建用户sudo passwd user
:设置用户密码exit
:退出当前用户
- 用户组(一组用户的集合)
groups
命令:查看用户归属- root权限用户在
etc/sudoers.d
目录下创建user文件 cat /etc/group | sort
:查看etc文件cat
读取指定文件内容并打印
- 将其他用户加入sudo组
- 不要对
sudoers
文件进行操作 sudo usermod -G sudo [用户名]
:赋予用户得root权限,需root权限用户操作。- 新建用户并加入用户组:
sudo useradd -G [用户组][用户名]
- 不要对
- 删除用户:
sudo deluser user
文件权限
- 查看文件权限(ls)
r
可读w
可写x
可执行- d目录 l软连接(相当于windows快捷方式) b块设备 c字符设备 s网络套接字 p管道 -普通文件
- 变更文件所有者:
sudo chown [用户名] [目标文件]
(change owner) - 修改文件权限:
1.二进制表示:
三组权限顺序一定(拥有者、所属用户组、其他用户 )
例:r w x →1 * 2的平方+1 * 2+1
chmod 600 [文件名]
表示其他用户不可读该文件
2.加减操作:
g、o 还有 u 表示 group、others 、 user,+、-表示增加或去掉权限。
例:chmod go-rw [文件名]
(change mode)
三、目录结构及文件操作
目录结构
- Linux系统的特点 :开放性(开源)、多用户、多任务、良好的用户界面、优异的性能和稳定性。
- Linux与Windows的区别:
- 目录与存储介质:Windows以盘符及分区进行文件管理,除系统文件外其他文件可以随意方置;Linux是树形目录结构,磁盘挂载在目录下,每个目录可使用本地或网上的文件系统。
- FHS标准(filesystem hierarchy standard):
/
下的各个目录应该放置什么文件数据:
例:/etc
放置设置文件;bin
和/sbin
放可执行文件。- 定义
/usr
和/var
的子目录:
例:/var/log
放置系统日志文件;/etc/share
放置共享数据。
- 路径:
- 绝对路径:以根/目录为起点的完整路径,以目的目录为终点。
- 相对路径:以当前目录为起点,以目的目录为终点。
文件操作
- 新建
- 新建空白文件:
touch [文件名]
- 新建目录:
mkdir [目录名]
(-p递归创建目录)
- 新建空白文件:
- 复制
- 复制文件:
cp [源文件] [指定目录]
- 复制目录:
-r [源目录] [指定目录]
- 复制文件:
- 删除
- 删除文件:
rm [源文件]
(-f 强制删除) - 删除目录:
rm -r [源目录]
- 删除文件:
- 移动/重命名
- 移动文件:
mv [源文件] [目的目录]
- 重命名:
- 重命名文件:
mv [旧文件名] [新文件名]
- 批量重命名:
rename + 正则表达式
- 例:
rename 's/\.txt/\.c/' *.txt
表示把 .txt 结尾文件改成 .c 结尾文件。
- 重命名文件:
- 移动文件:
- 查看文件
- 打印文件内容并输出:
cat
(正序)、tac
(倒序)- 加上
-n
显示行号
- 加上
- 分页查看文件:
more
和less
- 只查看文件开头:
head
和tail
(加上-n 1
只显示第一行;tail -f [文件名]
可以不停读取文件内容,动态查看,实时监控)
- 打印文件内容并输出:
- 查看文件类型:
file [文件名]
- 编辑文件:使用vim编辑器
vim编辑器的使用
- 移动h光标:h(左移)、j(下行)、k(上行)、l(右移)。
- vim的进入与退出 :
- 进入:vim 文件名 <回车>
- 退出:
<esc> :wq!<回车>
保存改动(q!丢弃改动)
- 文本编辑
- 删除:
x
键删除光标所在字符;dw
从光标删下一单词起始;d&
从光标删至行末;dd
删除整行。- 简短动作列表:
w -从当前光标到下一单词起始处
e -从当前光标到一个单词末尾
& -从当前光标到行末
- 简短动作列表:
- 插入:正常模式下(<esc键恢复),
i
键插入文本 - 添加:
A
键添加文本
- 删除:
- 计数制定动作(在动作前输入重复次数):
例:2w
-向前两个单词;3e
-向前至第三个单词末尾;0
-移至行首;d2w
- 删除两个单词。 - 撤销:
u
键撤销上一次操作;ctrl+R
取消撤销的命令。 - 置入:
p
键将最近一次删除的内容置入光标后。 - 替换:
r
键用字符替换光标所在位置字符。(单字符操作) - 更改:
ce
键更改至一个单词末尾;cw
、c&
参考动作列表。 - 定位及文件状态:
G
键跳转至文件最后一行;gg
跳转至文件第一行;行号+G
跳转至制定行;ctrl +g
显示当前光标所在位置。 - 搜索
/字符串 <回车>
- 复制粘贴:使用
v
进入可视模式把待复制片段标亮,再用y
提取高亮部分,到目标地点使用p
粘贴置入。
四、环境变量与文件查找
环境变量
- 变量
- 定义:计算机中用于记录一个数值(数值、字符、字符串)的符号。
- 创建及赋值:
declare
预声明或即用即创建。使用=
号赋值运算符。(变量与=间不能有空格) - 读取变量的值:
echo $temp
($用于引用变量)。 - 删除变量:
unset [变量名]
- 环境变量
- 变量可分成两种:Shell变量和环境变量。
- 环境变量可视为全局变量,与当前shell无关,是系统中固定存在的变量。
- shell变量视为局部变量,只对当前shell有效。
- 本地变量,当前shell变量与环境变量的总和。
- 相关命令:
set
打印当前所有本地变量env
显示当前所有环境变量export
可修改已存在的环境变量的值或将shell变量转化为环境变量
- 按生存周期分类:
- 永久:需要修改配置文件,变量永久生效
- 临时:使用
export
命令行声明,关闭 shell 失效。
- 两个重要文件:
/etc/bashrc
:存放shell变量。/etc/profile
:存放环境变量。在该文件下添加环境变量可永久生效。
- 变量可分成两种:Shell变量和环境变量。
- 命令的查找途径及顺序
- 环境变量PATH中保存了 Shell中执行的命令的搜索路径。
- 创建shell脚本文件:
touch a.sh
gedit a.sh
添加可执行权限chmod 755 a.sh
执行脚本./a.sh
- 创建c语言程序:
gedit hello.c
保存后使用gcc生成可执行文件$ gcc -o hello hello.c
- 添加自定义路径到PATH
- 使用绝对路径更改PATH,即可在任意目录执行命令,但只在当前shell有效:
$ PATH=$PATH:/home/shiyanlou/mybin
(:是分隔符) - 将命令途径添加至系统配置文件(zsh - .zshrc ; bash - .bashrc):
$ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
>>
是将标准输出定向追加,>
是覆盖。
- 使用绝对路径更改PATH,即可在任意目录执行命令,但只在当前shell有效:
- 变量修改
${变量名#匹配字串}
:从头往后删除匹配的最短字串;${变量名##匹配字串}
:删去最长字串。${变量名%匹配字串}
:从后往前删除匹配的最短字串;${变量名%%匹配字串}
:从后往前删除匹配的最长字串。${变量名/旧的字串/新的字串}
:将符合旧字串的第一个字串替换为新的字串;${变量名//旧的字串/新的字串}
:将符合的全部字串替换。
- 让环境变量立即生效
source .zshrc
source
别称.
使用. ./.zshrc
(必须是绝对路径)
文件搜索
whereis [文件名]
只搜二进制、源代码、帮助文件。locate [目录] /[文件名]
或locate [文件名]
在目录及其子目录下递归查找;-n
限定查找个数。which [文件名]
只从PATH路径搜索,用于确认软件是否安装sudo find <指定目录> <指定条件> <指定动作>
sudo find [目录]
-name/-atime
(最后访问时间)/-ctime
(最后修改内容时间)/-mtime
(最后修改属性时间)/-newer file
(比file还新的文件名)[文件名/时间等]
更多:cmatrix
数字雨(-C red
变红)libaa-bin
火炉
本章问题:
echo
命令能干啥?
打印字符串,显示转义字符、变量,显示结果定向至文件等
--《linux:echo命令示例》
zsh
是啥?
是一个Linux用户很少使用的shell,大多数Linux产品默认使用bash shell。
五、文件打包与解压缩
zip
- 打包
zip -r -q -o something.zip something
- 目录加
-r
;安静打印加-q
;输出文件名加-o
。 -n
(1-9):表示压缩级别,1最快压缩但文件最大。du -h -d 0 *.zip ~ | sort
查看压缩级别及文件大小
- 目录加
- 解包
unzip something.zip
- 指定路径加
-d [文件名]
;-l
查看压缩包内容。
- 指定路径加
tar
- 打包
tar -cf somthing.zip
- 解包
tar -xf somthing something.zip
- 指定路径:
-C
参数
六、文件系统操作与磁盘管理
基本操作
df
查看磁盘容量-h(human-readable)
以kB、GB显示容量
du
查看目录容量-h
以KB、GB显示容量-a
显示目录中全部文件大小-s
只显示容量总和-d
限定显示深度0
- 一级目录1
- 二级目录
du -am | sort -nr | head -n 10
找出当前目录下占内存最多的前10个文件
创建虚拟磁盘
dd
命令dd [选项] = 值
:用于转换和复制文件- 默认读取标准输入,写入标准输出。可用
if(input file
)和of(output file)
改变,bs
指定块大小(可自带单位),count
指定块个数。 - 数据转化示例:
conv=ucase
改为大写输出 - 创建空白文件:
dd if=/dev/zero of=/dev/virtual.img bs=1M count=256
mkfs(make a linux filesystem)
- 格式化文件:
sudo mkfs.[文件格式] [文件名]
- 格式化文件:
mount
mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [源文件] [挂载点]
- 挂载磁盘:
mount -o loop -t ext4 vitual.img /mnt
umount
或直接删除磁盘文件卸载磁盘- 磁盘分区:
fdisk
fdisk
命令参数介绍p
、打印分区表。n
、新建一个新分区。d
、删除一个分区。q
、退出不保存。w
、把分区写进分区表,保存并退出。
lostup
建立镜像和回环设备的关联
本章问题
loop
设备?
Loop设备是一种块设备,指向一个文件块或者另一种块设备。可以将另外一种文件系统的镜像文件保存到一个文件中,再将一个Loop设备指向该文件,紧接着通过mount挂载该loop设备到主文件系统的一个目录下,就可以正常访问该镜像中的内容,就像访问一个文件系统一样。
loop设备是一种伪设备,和一个文件进行连接后给用户提供了一个替代块特殊文件的接口。
--《linux的dev目录系列之设备详解--loop详解》
- 理解:Linux系统下一个硬件对应一个文件,光盘映像之类的文件可以不通过刻录光驱读取,而是将文件链接至loop这个伪设备上,就可以使用
mount
读取。
七、Linux下的帮助命令
内建命令与外部命令
- 内部命令:系统运行时就加载在内存中,执行快。
- 外部命令:功能强大,存放在/bin等文件中。
type
命令区分:- 内部:
xxx is a shell builtin
- 外部:
xxx is /usr/bin/xxx
- 内部:
帮助命令
help
help [命令]
显示内建命令帮助[命令] --help
可显示外部命令帮助
man
man [命令]
比help
更详细
info
info [命令]
比man更详细
cheat [命令]
补充了使用实例
学习感想
- 命令太多不能死记硬背,还是要理解记忆,并在实际应用中加深印象,掌握更多用法。比较偏门的命令可以临时查找,背常用的就好。
- Tab 挺好用的,命令和文件名忘了都可以用它。
- 目前还不知道学linux来干啥,有一点茫然....