zoukankan      html  css  js  c++  java
  • Linux基础

    一、学习目标

    • 能够独立安装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软件包
    • 从二进制软件包安装
    • 从源代码编译安装
  • 相关阅读:
    浏览器报错:unexpected end of input 解决方法
    MySQL 分库分表方案,总结的非常好!
    打给比较形象的比方,就是你拿着大白菜去大街上卖。这大白菜就你自己(预估自己的价格:价格喊高了,把白菜价当灵芝价卖,把买家都吓跑了,也就无人问津了。报价过低,则委屈了自己),要提前写出月薪范围,节省双方时间
    一张图弄明白开源协议-GPL、BSD、MIT、Mozilla、Apache和LGPL 之间的区别
    一个简单的C++性能测试工具(ms级别)
    VS2005下第一个ATL
    Boost::thread库的使用
    简易安装python统计包
    pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat
    Parallel.Invoke并行你的代码
  • 原文地址:https://www.cnblogs.com/myidea/p/4846672.html
Copyright © 2011-2022 走看看