Linux基础

我只是一个虾纸丫 提交于 2020-02-28 07:09:43

一、学习目标

  • 能够独立安装Linux操作系统
  • 能够熟练使用Linux系统的基本命令
  • 熟练使用Linux中用户管理命令/系统相关命令/文件目录相关命令/打包压缩相关命令/比较合并相关命令/网络相关命令等
  • 熟练应用“搜索”进行举一反三的学习

二、学习资源

三、学习方法

  • 进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同学,请你不要因为困难半途而废。
  • 问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/
  • 实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。通过实验楼环境或自己安装的虚拟机在实践中进行学习
  • 实验报告很重要:详细记录你完成项目任务的思路,获得老师点评和帮助自己复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程通过博客发表
    博客标题“信息安全系统设计基础第一周学习总结”

四、学习任务

(提示:请将要求学生完成的任务、测验或思考题列在此处)

  • 重点学习 cheat/find/locate/grep/man (-k)/whereis/which/apt-get
    查找帮助文档、各种示例多多练习,这几个命令会贯穿我们整个学习的学习,掌握这几个命令就可以很好学习其他命令了。

  • 这学期需要掌握的命令有

    ac,apt—get,bzip2,cat,chgrp,chmod,chown,clear,compress,cp,dd,df,diff,du,dump,evn,find,finger,free,grep,gzip;
    head,kill,less,ln,locate,l,gout,ls,man,mkdir,more,mount,mt,mv,netstat,nslookup,od,passwd,patch,ps,pstop,pwd,
    rm,shell,sort,ssh,stty,tail,tar,telnet,touch,tree,uname,unzip,vi,vim,whereis,which,who,write等

  • 测试示例:

  • 请在虚拟机中安装DDD软件(其他软件)
  • 请演示怎么判断DDD软件能不能安装
  • 请查找系统中50M以上的文件
  • 请查找系统中两天前修改过的且小于5M的文件
  • 请问如何查找操作系统的信息
  • 请查找当前目录下所有*.c文件中哪个文件中包含main函数
  • 请建立一个目录,里面建立两个子文目录,如何一条命令删除三个目录?
  • 如何把一个目录及子目录拷贝到自己的主目录中
  • ...

五、后续学习预告(可选):

  • Linux下C语言编程基础:
  • VIM进行编辑
  • GCC进行编译
  • GDB进行调试
  • Make进行自动化

六、学习过程

Linux终端:

  • 终端本质上是对应着 Linux 上的 /dev/tty 设备,Linux 的多用户登陆就是通过不同的 /dev/tty 设备完成的,
  • 在物理机系统上你可以通过使用[Ctrl]+[Alt]+[F1]~[F6]进行切换。普通意义上的 Shell 就是可以接受用户输入
    命令的程序。它之所以被称作 Shell 是因为它隐藏了操作系统底层的细节。
  • 在 UNIX/Linux 中比较流行的常见的 Shell 有 bash,zsh,ksh,csh 等等,Ubuntu 终端默认使用的是 bash,
    默认的桌面环境是 GNOME 或者 Unity(基于 GNOME),但我们的环境中使用的分别是zsh 和 xfce。

用户及文件权限管理:

  • Linux用户管理:
    (1)查看用户:who am i or who mom likes
    (2)创建用户:root权限高于administrator权限,创建用户要有root权限,这里用到sudo命令,如下:
    shiyanlou:~/$ sudo adduser lilei
    (3)使用如下命令切换登录用户:
    shiyanlou:~/$ su -l lilei
    (4)用户组:
    查看自己属于哪些用户组:groups shiyanlou or 查看/etc/group文件(cat /etc/group | sort)
    如下是将其它用户(lilei)加入sudo用户组:

    (5)删除用户:sudo deluser lilei --remove-home

  • Linux文件权限:
    (1)查看文件权限 \(ls (2)变更文件所有者,在用户lilei下创建hh文件,变更文件所有者为实验楼如下: ![](http://images2015.cnblogs.com/blog/814346/201509/814346-20150929103216386-1600888489.png) (3)修改文件权限: 二进制数字表示`(\) chmod 777 hh)加减赋值操作($chmod go-rw hh,'g''o'还有'u',分别表示group,others,user,'+','-' 就分别表示增加和去掉相应的权限)`

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

  • linux目录结构(FHS标准)
  • 路径(\(cd ..** 进入上一级目录,**\)cd ~ 进入home目录,$pwd 获取当前路径;绝对路径,相对路径)
  • Linux文件的基本操作:

    • touch(新建空白文件)/mkdir (-p) (新建(父)目录)/cp(复制文件)/cp -r(复制目录)/rm (-f)((强制)删除)/mv(移动or重命名)/
      -cat,tac,nl,head,tail(查看文件)/file(查看文件类型)/vim编辑器
    • $cat -n 显示行号 nl命令,添加行号并打印,这是比cat -n更专业的行号打印命令

环境变量与文件查找:
1、创建(declare)变量,并读取(echo)变量值:

2、命令的查找路径与顺序:通过环境变量PATH($ echo $PATH 查看PATH环境变量内容)
3、添加自定义路径发到“PATH”环境变量:
(1)添加自定义路径($ PATH=$PATH:/home/shiyanlou/mybin)
(2)修改自动执行的zsh配置文件($ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc)
(注:在每个用户的home目录中有一个shell每次启动时都会默认执行一个配置脚本,以初始化环境,zsh的配置文件是.zshrc,相应Bash的配置文件为.bashrc。它们在etc下还都有一个或多个全局的配置文件,不过我们一般只修改用户目录下的配置文件)
4、变量删除($ unset temp )
5、让环境变量立即生效($ source .zshrc)
6、搜索文件(whereis,which,find,locate)
与时间相关的命令参数:
参数 说明 -atime 最后访问时间 -ctime 创建时间 -mtime 最后修改时间

  • 下面以-mtime参数举例:
  • -mtime n: n 为数字,表示为在n天之前的”一天之内“修改过的文件
  • -mtime +n: 列出在n天之前(不包含n天本身)被修改过的文件
  • -mtime -n: 列出在n天之前(包含n天本身)被修改过的文件
  • newer file: file为一个已存在的文件,列出比file还要新的文件名
  • man是manul的缩写,我们可以通过man man来查看man的帮助

文件打包与解压缩:
1、ZIP压缩打包程序(-r 递归打包包含子目录的全部内容,-q 安静模式,-o 输出文件)
创建zip压缩包——>查看压缩包的大小——>查看压缩包的属性

创建加密压缩包(-e) $ zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou
2、unzip命令解压缩zip文件
使用安静模式,将文件解压到指定目录$ unzip -q shiyanlou.zip -d ziptest
不想解压只想查看压缩包的内容 $ unzip -l shiyanlou.zip
3、rar打包压缩(rar 和 unrar )
从指定压缩包文件中删除某个文件:$ rar d shiyanlou.rar .zshrc
查看不解压文件:$ rar l shiyanlou.zip
注意:rar的命令参数没有-,如果加上会报错
4、tar打包工具
创建(-c)一个tar包并指定(-f)文件名:$ tar -cf shiyanlou.tar ~
解包(-x)一个文件到指定路径的已存在目录(-C):
$ mkdir tardir $ tar -xf shiyanlou.tar -C tardir

文件系统操作与磁盘管理:
1、简单文件系统操作:df (-h) (查看磁盘容量) du (查看目录容量)
-d指定查看目录的深度
只查看1级目录信息 $du -h -d0 ~
查看2级 $du -h -d1 ~
2、简单的磁盘管理

命令执行顺序控制与管道:

  • 顺序执行(;),选择执行(|| &&),管道(|),cut命令(打印每一行的某一字段),grep命令(在文本或stdin中查找匹配字符串),
    wc命令(统计并输出一个文件中行、单词和字节的数目),sort排序命令,uniq去重命令
  • 打印/etc/passwd 文件中以:为分隔符的第1字段和第6字段:$ cut /etc/passwd -d ':' -f 1,6
  • 查看环境变量中以“yanlou”结尾的字符串:$ export | grep ".*yanlou$"
    行数 $wc -l /etc/passwd 单词数$wc -w /etc/passwd 字节数$wc -c /etc/passwd 字符数$wc -m /etc/passwd
    最长行字节数$wc -L /etc/passwd
  • 排序:-t 指定字段分隔符,-k指定对哪一个字段进行排序,如果按照数字排序加上-n参数
    $cat /etc/passwd | sort -t ':' -k 3 -n
    以下表示:打印历史命令中8行之后的,无分隔符的第1字段,并进行排序和去重

简单的文本处理:

  • 主要是几个命令的使用:tr,col,join,paste。
  • tr : translate or delete 一段文本信息中的某些文字。
  • col : col命令可以将Tab换成对等数量的空格键,或反转这个操作。
  • join:将两个文件中包含相同内容的那一行合并在一起
  • paste :与join命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起。

数据流重定向:
>将标准输出导向一个文件 >> 将标准输出追加到一个文件
1、简单的重定向
将cat的连续输出(heredoc方式)重定向到一个文件

2、标准错误重定向
文件描述符:http://blog.sina.com.cn/s/blog_8e48f19a01013lrb.html

3、tee命令:除了将输出重定向到文件之外也需要将信息打印在终端

4、exect :将某一部分命令的输出全部进行重定向
$exec 1>somefile 使用exec替换当前进程的重定向,将标准输出重定向到一个文件

5、创建输出文件描述符 $exect 3>somefile
6、关闭文件描述符 $exect 3>&-

正则表达式基础

  • 实际上这一节实验只是介绍 grep , sed , awk 这三个命令
    grep与正则表达式: 参数 说明 -b 将二进制文件作为文本来进行匹配 -c 统计以模式匹配的数目 -i 忽略大小写 -n 显示匹配文本所在行的行号 -v 反选,输出不匹配行的内容 -r 递归匹配查找 -A n n为正整数,表示after的意思,除了列出匹配行之外,还列出后面的n行 -B n n为正整数,表示before的意思,除了列出匹配行之外,还列出前面的n行 --color=auto 将输出中的匹配项设置为自动颜色显示

  • sed与正则表达式:
    $ cp /etc/passwd ~
    打印指定行:

    awk与正则表达式

Linux下软件安装
通常 Linux 上的软件安装主要有三种方式:

  • 在线安装
  • 从磁盘安装deb软件包
  • 从二进制软件包安装
  • 从源代码编译安装
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!