The First Task关于初入实验室
轮番的面试终于让我这个菜鸟进入了这个实验室,领到了自己的第一个任务还有点小兴奋的。一个关于干预Windows10系统安装Ubuntu系统成为双系统的任务。兴冲冲地跪领了学姐的安装教程心想仔细研读一番应该不是什么难事。没想到安装过程曲折曲折还是曲折,还是求助了学长。此处省略n个艰难的过程.
什么是Linux?
- Unix:商业,不对学生开源。1973年用C语言重写,方便移植到其他硬盘上。
- CNG:CNG is not Unix。在1984年发起,旨在构建一个自由开放的操作系统。重新开发自由的工具软件并推广。开发gcc等其他基础的软件便于自由软件的发展。开放软件源码,允许复制,传播,修改。为防止自由软件被其他人作为专利软件,制定CPL授权。
- Linux:1991年,芬兰大学生Linus基于X86系统开发出的Linux内核。
Linux文件目录与管理
-
文件系统架构
-
Linux文件系统具有层级性
-
文件或者目录起始于根目录“/”成为树状结构
-
由最顶层“/”开始
-
-
文件与目录名区分大小写
-
路径通过“/”分隔开
-
“..”表示上层目录。“.”表示当前目录
-
隐藏目录以“.”开头
-
-
LS指令操作
-
ls列出当前目录内容
-
ls/显示根目录,如:ls/home
-
ls-a显示隐藏目录与文件
-
ls-l显示详细内容
-
ls-ld显示目录本身属性
-
Ubuntu中的指令
- pwd:显示当前工作目录名
- ls:列出当前工作中的内容
- cd:进入到某目录。如cd/home/san/就到了桌面的工作目录。"."表示当前路径,如果从/home/san/进入/home/san/桌面,输入cd ./桌面。./可以省略,则输入 cd 桌面
- cp:复制
- " cp -r dir1 dir2 '' 把文件夹1复制一份并且命名为dir2
- '' cp file1 file2'' 把文件1复制一份并命名为file2
- mv:
- 移动文件目录:
- " mv dir1 file1 桌面/dir2'' 把文件夹1与文件1移动到桌面的dir2中
- 重命名文件目录:
- '' mv dir1 dir2'' 把dir1重命名为dir2
- 移动文件目录:
- rm:删除文件目录
- ''rm file1'' 删除文件file1
- "rm -r dir1" 删除文件夹dir1
创建目录的方法
- mkdir dir 创建dir文件夹
- touch file 创建一个名为file的文件
- > file 创建一个名为file的文件
- vim file 打开名为file的文件,可以写入内容,如果没有file,则创建一个file
查看文件内容的方法
- "'cat file'' 查看file文件内容
- "less file" 有快捷键,可以看较长的文件
查看文件类型file
- "file dir1" 查看dir1 的文件类型
- "file file2" 查看file2的文件类型
查看文件大小
- "du -k file'' (KB)
- "du -m file"(MB)
创建隐藏文件
- "mkdir . dir2" 创建隐藏文件夹dir2
- "touch .aa" 创建隐藏文件aa
查看隐藏文件
- ''ls -a''
通配符
"*"日常命令操作就够用了
例如:
$ ls
a.text b.text ccc.txt a.html hello.html
$ echo *.text
$ echo a*
解压缩文件
unzip x.zip 解压X.zip文件
zip -r x.zip x/ 压缩文件
tar zxvf xxx.tar.gz(解压)
tar zcvf xxx.tar.gz xxx/(压缩)
tar jxvf xxx tar .bzz(解压)
tar jcvf xxx tar.bzz xxx/(压缩)
重定向(拐弯)
三个重要的文件
linux下有个重要的传统,所有的东西都是文件,系统每打开一个文件会给这个文件分配文件描述符。
有三个文件是一直打开的,所以系统分配了三个固定的文件描述符:
- "0"是标准输入文件(stdin)[直接在键盘上输入数据]
- "1"是标准输出文件(stdout)[数据不会保留在硬盘上,而是直接被显示到屏幕之上]
- "2"是标准错误输出文件(stderr)[同"1"]
一个程序执行时,流程如下:从"0"进入,正确则从"1"输出,错误从"2"输出,输出也通过屏幕来显示。但我们也可以动手改变这三股数据流向,此称为重定向。
拐弯的各种方式
- 输出重定向">"(redirect stdout)
特点:每次重定向之前都把文件夹清空
两个文件的和有两种方式:$ cat file1 >> file2
$ cat file1 file2 - 重定向标准错误输出 " 2 >"(redirect stdout)
3.重定向标准的输入"<"(redirect stdin)
例如:
- touch file1,给file1写入“Hello World ”
touch file2,给file2写入“你好”
执行 cat file1 > file,这样就把cat命令的数据流向,从stdout改为了流向文件file。如果 cat file2 > file,则我们又把file2的内容 从cat该流向的stdout改为了流向file。但file的内容会被覆盖。但若执行 cat file2 >> file 则不会。 - cat file1 file2 > file 我们也可以把文件弄成一个文件(这里我认为的是文件的和)
- ls shit > output. txt shit 是个根本不存在的目录,这样错误的信息会被打印到屏幕
ls shit 2> output.txt 那么错误信息就会被存到output.txt
此时还能用到 cowsay程序输出信息: cowsay < output.txt
管道线
更多时候我们希望把前一个程序的输出,直接作为后一个程序的输入来使用,这个时候就需要管道线“|”
-
例如:
有一堆文件:cat file.txt d.txt a.txt c.html b.txt b.txt
现在我们要把这个文件处理一下,去除重复内容(uniq命令),只保留txt文件(grep),按字母顺序来排序(sort)
cat file.txt | uniq | grep txt | sort > output.txt
权限
粗略地,用户在自己主目录下会拥有写权限,主目录之外一般只有读权限
三种权限
- reading -r
- writing-w
- executing-x
LInux为多用户操作系统,用户可分为:owner, group, world
1.文件模式
例如:
$ ls -l a.txt
-rw-rw-r--1sansan 0 Aug 30 11:50 a.txt
(我将从从左到右依次编号解释意思)
1.“—”表示文件类型,文件类型的表示有三种:
"-"代表 file "l"代表 symlink "d"代表directory
2."rw-rw-r--" 代表了文件模式:
"rw-"描述owner对该文件的权限情况
"rw-"描述group对该文件的权限情况
"r--"描述world对该文件的权限情况。(r,w,x 则分别对应三种权限,-则意思为"no perm"也就是无权限操作)
- 对于目录来说,写权限可以是 creat/delete/rename file in it.执行权限则是我们可以进入这个目录
- 对于文件来说,有执行权限则可以把它当作一个程序来执行,没有权限则进行不了
Chmod(修改文件权限)
例如:
$ ls -l a.txt
-rw-rw-r-- 1 san san 0 Aug30 11:50 a.txt
- 修改world的操作权限:
- $ chmod rw-rw-rw- a.txt (错误)
- $ chmod 110 110 110 a.txt (错误)[二进制表示,1表示可以执行,0表示无权限执行]
这时我们可以通过八进制来表示,八进制为chmod的合法参数 - $chmod 666 a.txt(正确)
举个例子:
$ vim san .sh
$ ./san,sh
Permission denied
$ chmod +x san.sh
$ ./san.sh
hello san
要去除刚刚加上的的执行权限,可以:$ chmod -x san.sh
其他形式还有许多: $ chmod +w file $chmod -w file
进程
用户每次在系统上执行一个新的程序,系统都会在底层开启一个新的进程。
如何获取进程号?
PID(process ID)进程号。Linux系统上有一个命令叫PS
$ man ps
它的作用是:报告当前的进程状态
$ ps aux
它的作用是:查看系统当前的所有进程
内容较多时可以用less来做分页器,从开头查看
$ ps aux| less
敲/vim 可以查找到我们想要的vim这个进程。当我们那一部分代表进程号之后,后面一般用管道线加grep来进行查找
$ps aux |grep vim
拿到进程号后,复制粘贴就可以对这个进程进行操作,比如可以结束这个进程:
kill 7896(随意写的)
查找
Locate
例如:
locate pattern
这样会找到系统上的任何路径中包含 pattern的文件和目录,用通配符表示就是*pattern*。但是locate不可能找到系统上新创建的文件,因为locate不是搜索整个系统文件,而是从数据库中读取数据,updated可以把文件系统中的命令存放在数据库中,但每天只会进行一次。
若非得采用locate来定位,则可加入:
$ sudo updated
此时运用了超级用户,此时可定位成功。
Find
find命令就是你给它指定一个目录,它帮你翻个底朝天
只想看见文件: $ find. -type f
只想看见目录: $ find. -type d
找到文件后,对其进行操作,find支持exec
例如:
peter @dog:~/mydir$ find. -type f - exec(可输入命令)'{}' ';'
(其中'{}'代表已找到的文件名)
- 若要找到字符串 则在-exec后+ grep Hello
- 若要打印出匹配项所在的文件在';'+** -print**
- 若要打印出匹配项所在的行数在 grep + -n
- 若让grep在查找时忽略大小写,在-n的基础上加-ni
使用apt-get来安装软件
大部分常用软件都可以直接去Ubuntu官方的apt仓库里直接下载。Ubuntu公司专门有人把源码下载下来打造成一个deb包,然后上传到工作的软件仓库中,我们要做的就是敲出命令
$ sudo apt-get install git
那git这个软件的deb包就被apt-get下载到本地,同时apt-get也包裹了dpkg命令,直接把安装配置也完成。一个命令,git就可以直接用了
- 查找需要安装的软件包包名:
$ apt-cache search ncurse
$sudo apt-get install libncurse<tab>
- 卸载软件包:
$ sudo apt-get remove git #保留配置文件
$ sudo apt-get purge git #连配置文件一起清除
学习总结
学习Ubuntu时,不可避免存在许多问题,但是还是要感谢Peter提供的教程,视频与文本的相结合让我理解一些难点。