zoukankan      html  css  js  c++  java
  • Linux 命令总结(一)-简单命令、文件系统与VI全屏文本编辑器

    目录:

    一、简单命令【文件类型、帮助命令、变量等】

    二、文件系统命令

    三、文本操作命令

    四、VI全屏文本编辑器


    一、简单命令

    1.查看命令类型、文件、文件类型,了解linux命令执行过程

    type: 查看命令类型

    • 使用示例 type ifconfig
    • 结果显示
      • is /.../... 表示外部命令 【遍历目录来找到命令调用,但是并不会遍历所用的目录,而是先看是否在环境变量中,这一点跟windows类似,我们可以通过echo命令来输出查看PATH(环境变量)】
      • is shell builtin 表示内部命令【直接调用】
      • is hashed (/..../...)也是外部命令,只不过是缓存下来的。

    如图所示,我们可以知道 ifconfig是外部命令,而cd是内部命令。

    查看环境变量: echo $PATH

    那么什么是shell呢?

    shell是壳的意思,而内部被调用的程序成为“核”。无论是命令行还是图形化的界面,都是壳。我们就是通过壳来调用核的。我们遇到的第一个shell终端就是bash,bash呢 是通过空格来区分命令的,(空格前面表示命令)。

    同时,shell对于外部命令查找的方式:

    • 在PATH记录的目录中查找
    • 缓存到内存hash中

    那么linux的命令行调用过程就是:

    【shell】->【bash(解释器/执行器)】-> 【空白符切割,得到的第一个元素,作为命令cmd】->

    • is 内部 ,直接调用
    • is 外部 ,县查找PATH中是否有目录,有的话就去目录调用,然后缓存到内存的hash中用于下次调用,没有的话就说不存在。

    file:查看文件的类型

    如图,ifconfig是一个二进制文件(ELF表示二进制文件),而yum呢是一个python脚本文件。

    cat:查看文件内容

    2.帮助命令

    • help 内部命令的帮助
      • help :内部命令清单,附带语法格式,描述
      • help + 命令 :查看具体内部命令
    • man 外部命令的帮助
      • 如果 man 不存在(精简版没有安装),安装命令:yum install man man-pages -y [说明:yum是包管理器命令,可通过 man yum查看]
      • / xxxx 由于全文检索
      • q 退出
      • man很强大,可以查看如 man utf-8 、 man ascii等
      • 如果man查不出来的情况下可以试着中间加个数字 如: man read ----> man 2 read

    为什么要中man查不出来的情况下加数字呢?

    因为man对命令进行了划分,用数字表示不同类型的命令:

    • 1:用户命令(/bin, /usr/bin, /usr/local/bin)
    • 2:系统调用
    • 3:库用户
    • 4:特殊文件(设备文件)
    • 5:文件格式(配置文件的语法)
    • 6:游戏
    • 7:杂项(Miscellaneous)
    • 8: 管理命令(/sbin, /usr/sbin, /usr/local/sbin)

    如 read(2) 表示 read 为第2类:

    3.其他命令

    whereis : 定位命令位置

    echo:打印到标准输出

    • echo $$ 当前进程的id
    • echo "123" >> test.log 写入文件

    $LANG:当前使用的语言

    ps -ef: 进程列表

    hash -r 清除缓存

    4.变量

    定义变量,用echo $XXX 输出该变量。注意 数组的格式是用“空格”表示。

    • a=3
    • echo $a
    • b=(1,2,3)
    • echo $b
    • b=(1 2 3)
    • echo $b
    • echo hello$agod
    • echo hello${a}god
    • echo ${b[2]}

    二、文件系统命令

    1.文件目录结构

    Linux不像windows那么杂乱无章,它有一个虚拟的文件系统,特定目录下存放着特定的文件。如下方所示:

    目录分区的卸载与挂载:

    注意:卸载后/boot文件目录不会删除,但是里面的内容而被清除。

    Filesystem Hierarchy Standard(文件系统层次化标准)

    • /boot: 系统启动相关的文件,如内核、initrd,以及grub(bootloader)
    • /dev: 设备文件
    • /etc:配置文件
    • /home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
    • /root:管理员的家目录;
    • /lib:库文件
    • /media:挂载点目录,移动设备
    • /mnt:挂载点目录,额外的临时文件系统
    • /opt:可选目录,第三方程序的安装目录
    • /proc:伪文件系统,内核映射文件
    • /sys:伪文件系统,跟硬件设备相关的属性映射文件
    • /tmp:临时文件, /var/tmp
    • /var:可变化的文件
    • /bin: 可执行文件, 用户命令
    • /sbin:管理命令
    • usr:默认安装目录
    • 剩下的目录不要动即可

    2.文件系统命令

    • df:显示磁盘使用情况 df / df -h

    • du:显示文件系统使用情况 du/ du -h

    • ls:显示目录文件

      • ls -a 显示出隐藏文件

      • ls还可以多目录显示 , 如: 【ls /usr /etc】【ls / /etc】

        说明:多目录显示按照树形目录结构的深浅排序,先浅层次目录后深层次目录;而同层级目录则按照首字母顺序排序。查看树形目录结构用tree命令(没有tree命令,安装:yum install tree -y)

      • ls -l 成列表显示文件 【ls -l列表内容详解

    • cd:切换工作目录

    • pwd:显示当前工作目录

    • mkdir:创建目录 -p:层级创建 ; x/{a,b,c}xx: x目录下创建 axx、bxx、cxx目录

    • rm:删除 -r -f -rf

    • cp:拷贝 -r

    • mv:移动/重命名

    • ln:链接 指向同一文件 ;-s:软链接

    • stat:元数据 列出文件的各项数据

    • touch:刷新元数据访问、修改时间并保持一致,可用于文件监控;另外,文件不存在情况下也可以创建文件。

    再次提示:以上所有命令可以通过 help 以及man 来查看!

    【ls -l 】类表内容详解:

    • 文件类型:
      • -:普通文件 (f)
      • d: 目录文件
      • b: 块设备文件 (block)
      • c: 字符设备文件 (character)
      • l: 符号链接文件(symbolic link file)
      • p: 命令管道文件(pipe)
      • s: 套接字文件(socket)
    • 文件权限:9位,每3位一组,3组 权限(U,G,O)每一组:rwx(读,写,执行), r--
    • 文件硬链接的次数
    • 文件的属主(owner)
    • 文件的属组(group)
    • 文件大小(size),单位是字节
    • 时间戳(timestamp):最近一次被修改的时间
      • 访问:access
      • 修改:modify,文件内容发生了改变
      • 改变:change,metadata,元数据

    三、文本操作命令

    cat:

    • more 分屏

    • less 分屏上下翻页 ,enter 空格 b

    • head 前几行

      • head -2 /etc/profile 打印前几行,默认10行,加参数表示多上行
    • tail 后几行

      • tail -2 /etc/profile
      • tail -f 监控文件

    管道:

    • shell读取用户输入的字符串
    • 发现 |,代表有管道
    • | 左右被理解为简单命令
    • 加工:前一个(左边)简单命令的标准输出
    • 指向后一个(右边)简单命令的标准输入
    • 注意:后一个简单命令一定能够接受标准输入才可以
    • xargs :构建并执行命令

    示例:

    cat b.txt | head -3 输出b.txt文件的前三行

    head -3 b.txt | tail - 1 输出b.txt文件的第三行

    xargs的使用情况:

    如下图,ls并未从管道接收左侧的标注输入,显示的仍然是根目录下的内容。

    因为ls是读取输入参数的,因此需要用xargs接收左侧标准输入作为参数,构建并执行ls命令,如下:

    四、VI全屏文本编辑器

    打开文件

    • vim /path/to/somefile
    • vim +# :打开文件,并定位于第#行
    • vim +:打开文件,定位至最后一行
    • vim +/PATTERN : 打开文件,定位至第一次被PATTERN匹配到的行的行首

    关闭文件

    末行模式:

    • :q 退出 没有动过文件
    • :wq 保存并退出 动过了,不后悔
    • :q! 不保存并退出 动过了,后悔了
    • :w 保存
    • :w! 强行保存
    • :wq --> :x
    • ZZ(Shift键+zz): 保存并退出 不需要冒号,编辑模式

    编辑器模式

    编辑模式:按键具有编辑文本功能:默认打开进入编辑模式
    输入模式:按键本身意义
    末行模式:接受用户命令输入

    模式转换:

    • 编辑-->输入:
      • i: 在当前光标所在字符的前面,转为输入模式;
      • a: 在当前光标所在字符的后面,转为输入模式;
      • o: 在当前光标所在行的下方,新建一行,并转为输入模式;
      • O:在当前光标所在行的上方,新建一行,并转为输入模式;
      • I:在当前光标所在行的行首,转换为输入模式
      • A:在当前光标所在行的行尾,转换为输入模式
    • 输入-->编辑:
      • ESC
    • 编辑-->末行:
    • 末行-->编辑:
      • ESC, ESC

    编辑模式命令

    移动光标

    • 字符

      • h: 左;j: 下;k: 上;l: 右
    • 单词

      • w: 移至下一个单词的词首
      • e: 跳至当前或下一个单词的词尾
      • b: 跳至当前或前一个单词的词首
    • 行内

      • 0: 绝对行首
      • ^: 行首的第一个非空白字符
      • $: 绝对行尾
    • 行间

      • G:文章末尾
      • 3G:第3行
      • gg:文章开头
    • 翻屏

      • ctrl+f 下,ctrl+b 上
    • 删除&替换单个字符

      • x:删除光标位置字符
      • 3x:删除光标开始3个字符
      • r:替换光标位置字符
    • 删除命令(有剪切的作用) : d

      • dw:删除单词
      • dd:删除行
      • 3dw:删除3个单词
      • 3dd:删除3行
    • 复制粘贴&剪切

      • yw:复制单词
      • yy:复制行
      • p:粘贴
    • 撤销&重做

      • u 撤销
      • ctrl+r 重做 撤销的操作
      • ‘.’ 重复上一步的操作

    末行模式命令

    • set:设置

      • set nu 设置上行号
      • set nonu 取消行号
      • set readonly 当前环境下只读
    • /:查找

      • /sudo 查找sudo单词
      • n 向后查找,N 向前查找
    • !:执行命令

      • :!ls -l / 比如我们配置Java环境变量输入后,忘记了jdk全称,可以通过这样的命令不必退出编辑来查找jdk全称。
    • s查找并替换

      • 范围s/str1/str2/gi
        • /:临近s命令的第一个字符为边界字符:/,@,#
        • g:一行内全部替换 不加g的话,只替换这行的第一个单词
        • i:忽略大小写
      • 范围
        • n:行号
        • .:当前光标行
        • +n:偏移n行
        • $:末尾行,$-3
        • %:全文

    其他应用示例

    • 删除全部 :末行模式下【.,$dd】 ; 编辑模式下【dG】

    • 复制指定行【1,5yy】

    • 等等 ......

  • 相关阅读:
    https 证书
    js 压缩
    身份证认证
    在 Visual Studio 2015 中关闭系统级的 Runtime Exceptions
    在 Visual Studio 2015 中关闭 Browser Link
    List<T>.ForEach()的使用
    使用Microsoft.Practices.EnterpriseLibrary.Validation.dll验证类成员
    jQuery.filter()的强大功能
    jQuery Checkbox Selected
    Get SQL String From Query Object In Entity Framework
  • 原文地址:https://www.cnblogs.com/nm666/p/10810323.html
Copyright © 2011-2022 走看看