“Linux-2020-spring-3-25”的版本间的差异

来自SUDA-HLT
跳到导航 跳到搜索
第16行: 第16行:
 
== 命令的类型和执行过程 ==
 
== 命令的类型和执行过程 ==
  
*命令的类型
+
命令的三种类型
   1、外部命令:mv和less是外部命令(linux系统下可以找到这个命令对应的可执行文件就是外部命令,大部分放在bin目录下且大部分命令是外部命令);
+
   外部命令:命令由kernel和shell外部程序实现,可以找到这个命令对应的可执行文件,bin目录下的命令均为外部命令
   2、别名类型的命令:ls is aliased to'ls --color=none'
+
    mv more bash
   3、内嵌命令:命令的可执行命令在shell 里面;shell的类型有bash和dash等。
+
  内部(内嵌)命令:命令由shell(或kernel?)实现,对应shell(或kernel)的一部分代码
   
+
    cd type alias help
*命令
+
   别名:ls is aliased to'ls --color=none'
   type:类型--- $type ls mv cd less查看命令的类型
+
 
  alias:取别名--- $alias lm='ls -a'
+
shell有很多种
  $man bash(GNU Bourne-Again Shell促进软件共享)
+
  bash是最常用的一种shell(GNU Bourne-Again Shell)
   $man dash --command interpreter(shell)
+
   其他的:sh csh ksh dash
 +
 
 +
type命令:查看命令类型
 +
   $ type ls mv cd less
 +
    
 
   $ps afx 查看进程的情况
 
   $ps afx 查看进程的情况
 
   $echo $PATH查看路径
 
   $echo $PATH查看路径
  
 +
alias:取别名
 +
  $ alias lm='ls -a'
  
*命令的执行过程
+
内部命令的执行过程
mv x.c xx.c
+
  相当于调用一个函数
    step1--解析字符串
 
    step2--分析命令的类型并执行
 
        1、内嵌命令-函数;
 
        2、外部命令-找到可执行文件-执行(a、系统调用的方法执行;b、开启一个新的进程,load到RAM中,参数设置,切换进程;bash输入/执行外部命令通过创建一个子进程来完成)           
 
        3、别名命令:找到原命令执行
 
  
 +
外部命令的执行过程
 +
  $ mv x.c xx.c (例如)
 +
  找到mv对应的可执行文件
 +
  把可执行文件的代码Load到内存中
 +
  设置命令行参数
 +
  开启子进程,执行mv命令对应的代码(切换进程)
 +
  执行结束后回到shell
 +
  举一个例子
 +
    $ cat (不输入参数,这时cat进程就会和用户交互,等待用户输入内容)
 +
    在另一个文字终端中输入
 +
    $ ps afx,查看进程树的快照(snapshot),会看到
 +
        \_ bash
 +
        |      \_ cat
 +
    其含义就是cat进程是bash进程的子进程
  
 
*shell 怎么知道一个命令是外部命令,如何找到
 
*shell 怎么知道一个命令是外部命令,如何找到

2020年3月18日 (三) 05:07的版本

回顾上节课的内容

文件查看命令

 less、more、cat、head、tail

文件操作命令

 cp、mv、mkdir rm

查看帮助文档

  man、info、help
  info类似在浏览网页,可以在不同网页上跳转,我不熟悉

文本编辑

 vim,另一个是emacs(更难一点,用的人少一些)

命令的类型和执行过程

命令的三种类型

 外部命令:命令由kernel和shell外部程序实现,可以找到这个命令对应的可执行文件,bin目录下的命令均为外部命令
    mv more bash
 内部(内嵌)命令:命令由shell(或kernel?)实现,对应shell(或kernel)的一部分代码
    cd type alias help
 别名:ls is aliased to'ls --color=none'

shell有很多种

 bash是最常用的一种shell(GNU Bourne-Again Shell)
 其他的:sh csh ksh dash

type命令:查看命令类型

 $ type ls mv cd less
 
 $ps afx 查看进程的情况
 $echo $PATH查看路径

alias:取别名

 $ alias lm='ls -a'

内部命令的执行过程

 相当于调用一个函数

外部命令的执行过程

 $ mv x.c xx.c (例如)
 找到mv对应的可执行文件
 把可执行文件的代码Load到内存中
 设置命令行参数
 开启子进程,执行mv命令对应的代码(切换进程)
 执行结束后回到shell
 举一个例子
   $ cat (不输入参数,这时cat进程就会和用户交互,等待用户输入内容)
   在另一个文字终端中输入
   $ ps afx,查看进程树的快照(snapshot),会看到
       \_ bash
       |      \_ cat
   其含义就是cat进程是bash进程的子进程
  • shell 怎么知道一个命令是外部命令,如何找到
  shell可根据PATH找命令;也可以直接自己告诉它路径

三、vi和vim 的使用

  • vi的三个模式
  1、命令模式
  2、插入模式
  3、底层命令
  • 三个模式之间转换
  1、命令--->插入模式(i/I光标在行首/a/A光标在行尾/o光标在下一行/O上面再插入一行,光标在下一行)
  插入模式--->命令模式下(ESC键,u撤销,x删除一个字符,r替换,yy复制一行,p粘贴,dd删除一行,3dd删除三行:set nu 显示行号;^光标到行首,$光标到行尾,G光标到最后一行,:5直接跑到第五行,3G跑到第三行)
  命令--->视图模式(v)  按字符选择
  命令--->视图行模式(V) 按行选择 
  命令--->按列选择(ctrl+v)
  命令--->底行模式(/搜索 n正向找,N反着找; ?反向搜索;正则表达式查找/o[uv]---找到所有含有ou或者ov的字符;“:!date”可查看时间;“:r!date”将命令执行的结果保存在当前文本中;“:n1,n2s/word1/word2/g   n1和n2为数字,在第n1行和n2行之间寻找word字符串,并将该字符串替换为word2  :1,$s/word1/word2/g    从第一行到最后一行查找字符串word1字符串,并将字符串word1替换为word2 :1,$s/word1/word2/gc   从第一行到最后一行查找字符串word1,并将字符串word1替换为word2,在替换之前提示用户确认是否替换(confirm)”替换)
  vi wenjianming---进入命令模式---输入“i/insert”---进入插入模式----按“ESC”---进入命令模式---“:wq”---保存退出
  
  • 打开多个文件
  命令模式“:sp”利用“ctrl +w+w”进行切换

中枢,中轴