Linux-2019-spring

来自SUDA-HLT
Zhli(讨论 | 贡献)2019年3月28日 (四) 03:28的版本 (→‎实践作业)
跳到导航 跳到搜索

Linux 操作系统 课程主页

  • Teacher: 李正华
  • Teach Assistant: 江心舟
  • Linux课程QQ群:643979822
  • 2019春季学期
  • 写给自己的话
    • 内容不可能面面俱到,抓住重点(以及自己感觉最重要的知识点)即可,其他需要靠学生自己去探索
    • 多鼓励学生自己思考

课程信息

  • 上课时间和地点:
    • 周三10:10-12:00理工楼153上理论课;
    • 周四10:10-12:00(单周)理工楼243上机课(434备用,目前用不到)
  • 成绩分布:平时10-15分、实践20-25、期末60(计划)
  • Linux课程QQ群:643979822

实践作业

  • 请登录csteaching.suda.edu.cn网站,完成实验报告,并将word作为附件提交
  • 实验作业1:c语言实现cpdir命令
    编译后,在命令行输入 cpdir dir1 dir2可以递归将dir1复制为dir2,和cp -r dir1 dir2的功能一致
  • 实验作业2:

Linux核心思想

  • 每个程序只做一件事,做到最好,功能完善:vim+gcc+gdb = visual studio c++

讲义

后期内容

杂项记录

  • 什么是文字终端,深入理解shell,多个不同的shell
    • 可以不通过图形终端中的文字终端
  开机时可以设置不启动图形界面
  在terminal端口下按ctrl+alt+F1到F7,可分别进入1号到7号终端(默认F7回到了图形界面)

环境变量S1='hi':设置提示符

  7、$ sudo useradd ll12:创建一个新用户命令。sudo--以root的身份执行后面的命令
  8、$ sudo su:可以进入root账户

touch(创建一个文件;如果一个文件已经存在,就会更新文件的时间


  • tab键自动补全
  • AM:(0:00-12:00)ante meridiem or ante meridian; 上午;PM:(12:00-24:00)post meridiem or post meridian; 下午
    5、wc: word count 
  • c语言的命令行参数
        cp a.txt b.txt (a.txt,b.txt 命令行参数command-line arguments)
        int main(int arga,char *argc[])
    1、文本文件:ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。
    2、二进制文件:二进制文件是按二进制的编码方式来存放文件的。hexdump(hexadecimal octal dump)十六进制文件查看器

man:在线文档online 离线offline;分屏展示的时候就调用了less。输入man man 的时候就会将man的说明文档调入,用less显示。输入 man printf (如果未指定数值,优先看作为命令的帮助文档);man 3 printf C语言的库 ; man -f printf 非常简洁的说明; man -k search 查找包含search的文件


2019.3.27

  • 目录的rwx
  r:打开目录,list目录包含的文件
  w:目录中增加或删除文件
  x:进入目录,作为当前工作目录。即使没有r权限,也可以打开已有文件(前提是知道文件名,可否修改?)。
  • 文件操作命令
   which mkdir 可执行文件的绝对路径
   whereis mkdir(查看命令mkdir所在的位置:1、命令的可执行文件位置;2、命令的帮助文档)
   man 2 mkdir (系统调用)
   man 1 mkdir (命令)
   man 3 printf (库调用)
   printf "%d%s\n" 10, "hi"
   mkdir (-p)
   mv -f (--force: do not prompt before overwriting) -i (--interactive: opposite to -f) -n (--no-clobber: do not overwite an existing file) [-T] (--no-target-directory: treat DEST as a normal file)
   cp -t (target dir) -R/-r (--recursive: copy directories recursively)
   rmdir 
   rm -r (--recursive) -f (--force) -i (--interactive=always) -I (--interactive=once) 
  • ctrl+c ctrl+d ctrl+a ctrl+e ctrl+r
  • 文本文件查看命令
    cat 拼接(concatenate) (不跟参数的时候:默认将标准输入的内容标准输出), 
    tac
    tail -n 3 a.txt
         tail -f a.txt监控文件
    head -n 30 a.txt
    more
    less (less is more):分屏/页 显示;
                 空格 翻屏;上下箭头 按行移动;
                 ctrl + f/b (^F或^B): forward/backward翻屏
                 输入/字符串或者正则表达式 进行搜索,按n(next下一个)继续搜索,按N反向继续搜索
                 G (shift+g):末行;gg:首行
  • 文件编辑器
    1、vi --- vim:打开文件
         命令模式:按“Esc”回到命令模式;“h”“←”左;“l”“→”右;
         末行模式:在命令模式下,输入“:”进入末行模式
         编辑模式/插入模式:命令模式下,按"i/I/o/O/a/A"进入编辑模式;


  • 遗留问题:
   为什么which cd,没有显示结果?

2019.3.20

  • ls命令:深入学习命令的使用
         ls -l /home:长格式
             第一个字符d表示文件夹,-表示文件,接下来的连续三个owner的权限,然后三个是group的权限;最后三个是other的权限;
             24:硬链接数
             zhenghua:owner
             zhenghua:group
             4090:表示文件所占的物理空间,表示的是该目录自身所占内存的大小,不是该目录下所有文件相加所占的空间。
             mar 26 10:31 :时间信息
             zhenghua :文件的名字
         ls -a /home:
         ls -dl /home: 如果参数是目录,不是看包含的内容,而是看目录本身的信息
         ls -l -d /home 同上
         ls -lc /home:  【显示ctime】
         ls -r,--reverse /home:逆序
         ls -R /home:递归显示
         ls --color=nevel|auto|never /home:
         ls -lh:大小信息
         ls -t /home 根据时间排序
         ls -al:
         ls --full-time:完整时间信息
         ls --hide=a*
             讲了一点通配符和RE的对应关系: *=.*  [A-Z]=[A-Z]
  • stat命令
   权限、拥有者、inode、block等信息
   文件的三个时间信息:
      atime: accesss:读文件
      mtime:modify:修改文件内容(文件加长、vim下w、文件长度不变的修改)
      ctime:change:修改文件内容、chown、chmod   【man ls -c中的解释:修改文件状态status信息的最新时间】
  • man
       man 3 printf:(synopsis 用法; description 描述)看在线文档
       man ls :(LS(1): Name ; synopsis: ls [option]... [file]...可以跟0个到n个选项或者文件)
       man pwd:
           option:可以是长选项(--all)或者是短选项(-a),ls --all和ls -a实现的效果是一样的。
      1   Executable programs or shell commands
      2   System calls (functions provided by the kernel)
      3   Library calls (functions within program libraries)
      4   Special files (usually found in /dev)
      5   File formats and conventions eg /etc/passwd
      6   Games
      7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
      8   System administration commands (usually only for root)
      9   Kernel routines [Non standard]
  • 遗留问题
    对于目录而言,atime mtime ctime分别什么意思
    对于目录而言,rwx分别表示什么意思
    ls -l 显示的是哪个时间?atime?
    ls -t 根据什么时间排序?atime?


2019.3.13

Linux的文件目录结构 (续)

  • root目录及超级用户
  $ su
  # cd :切换到root的家目录下(/root)
  # exit :回到普通用户下
  bin--可执行文件,二进制; etc--配置文件;boot--操作系统启动相关的代码;home--家目录,一个用户自己的目录,通常情况下每个普通用户都在home下面有一个目录,超级管理员在/root下
  • 文件名规则
  linux下文件名大小写区分,windows下不区分
  linux下文件名最长为256字节,尽量不要用中文
  linux下几乎所有的符号都可以作为文件名的一部分,只有“/”不能作为文件名的一部分出现(斜杠“/”:slash;反斜杠“\”:backslash)
       特殊字符如空格、括号等需要用双引号或反斜杠\来书写
  隐藏文件:文件名以.开头。ls 看不到隐藏文件;ls -a 可看到隐藏文件夹。
  文件夹(目录)也是一种文件
  
  • 绝对路径和相对路径
  “.”表示当前目录 
  “..”表示上一级目录
  绝对路径:从根目录开始到目标文件的路径
  相对路径:从当前目录(不是从根目录开始)到目标文件的路径

文字终端

  • 图形终端下的文字终端Terminal
  XWindow下打开了Terminal应用程序(快捷键:ctrl+alt+t)【航站楼】
  • 输入一些简单命令
  ls
  $ cd :切换目录(change directory)。
  $ cd ~ :回到当前用户的根目录下
  date, cal, calendar, bc, echo
  uptime:系统启动的时间
  hostname:机器名
  who:显示当前登录的用户,以及用户从哪里登录进来的
  users:目前有几个用户登录了这个系统
  w:和who类似,同时可以显示每个用户在干啥
  whoami:写程序的时候会用到
  $ uname -a :命令是uname;-a是选项(显示全部的信息);可以查看内核(kernel)版本号等。
  $ pwd:显示当前工作目录(print working directory)
  • 深入理解命令
  命令的结构:命令(command) 选项(option) 参数(argument)
 例子:cd:后面不加参数时,默认切换到当前用户的家目录下。
     1、命令:一个操作
     2、选项:操作方式
     3、参数:操作对象
  ls -l 命令详细解释。
  思考问题:目录的硬链接数(类似于Python中一个对象绑定的名字数)如何计算?


2019.3.6

操作系统的作用

  • 管理硬件资源
  • 为程序员提供API
  • 为普通用户提供界面(GUI、CLI)

Linux和Windows的一些区别

  • 图形界面
  菜单栏隐藏在最上面
  默认有四个工作区workplace
  ctrl+alt+上下左右键:可以在四个工作区之间切换
  ctrl+shift+alt+上下左右键:把当前焦点窗口拖到另外一个工作区
  有自己的文本编辑器
  熟悉一下资源管理器
  • Linux的文件目录结构
    • 标准化(windows下是乱七八糟的)
    • bin(二进制);dev(设备);boot(启动);home(所有用户的家目录)
    • 只有一个根目录 /(windows下每个分区有一个目录)
    • 家目录(Home Folder)
      • 每个用户都有一个家目录,存放自己的私有数据
      • 用户的家目录通常在/home/用户名
      • 除非别人允许,用户A无法访问用户B的家目录(权限的概念)
      • 权限管理使得Linux支持真正的多用户

讲课期间用到的几个命令

  • cd(change command)、ls (list files)

杂项

  • 文字界面下的提示符:prompt symbol,通常包含的信息:用户名@机器名: 当前工作目录 $

2019.2.27

  • 介绍课程基本情况,个人介绍,对读书、独立思考的看法
  • 讨论了操作系统的概念、作用,相当于回忆操作系统理论课的内容
  • /dev/stdin (stdout, stderr),为什么要区分标准输出和标准错误输出?
  • g++ gcc cout cerr printf fprintf