Linux 命令总结(一)

目录:

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

二、文件系统命令

三、文本操作命令

四、VI全皮文本编辑器


一、简单命令

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

type: 查看命令类型

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

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

查看环境变量: echo $PATH

那么什么是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】
  • 等等 ......

猜你喜欢

转载自www.cnblogs.com/nm666/p/10810323.html