Linux命令行笔记-00 综述

2023-05-16

文章目录

  • 1 Linux命令行简介
    • 1.1 Linux命令行的分类
      • 1.1.1 根据系统中作用来分类
      • 1.1.2 根据对象来分类
  • 2 Linux命令行解释器
    • 2.1 命令行解释器shell
      • 2.1.1 核心程序
      • 2.1.2 公用程序shell
      • 2.1.3 用户的默认shell
      • 2.1.4 shell如何工作
    • 2.2 Shell发展历史
    • 2.3 shell版本的差异
      • 2.3.1 C shell
      • 2.3.2 Bourne shell
      • 2.3.3 Korn shell
      • 2.3.4 bash
      • 2.3.5 tcsh
  • 3 Linux命令行的组成
    • 3.1 命令提示符
    • 3.2 命令的基本格式
      • 3.2.1 选项格式
      • 3.2.2 参数的作用
    • 3.3 Linux命令的构成
      • 3.3.1 重定向运用
      • 3.3.2 管道运用
      • 3.3.3 命令替换运用
  • 4 Linux中卷、目录和文件的含义
    • 4.1 卷
      • 4.1.1 逻辑卷管理
      • 4.1.2 卷的基本术语
    • 4.2 文件系统
      • 4.2.1 相关概念
      • 4.2.2 文件结构
      • 4.2.3 目录
      • 4.2.4 文件权限及属性
  • 5 Linux命令行帮助
    • 5.1 帮助命令
      • 5.1.1 `man`
      • 5.1.2 `help`
      • 5.1.3 `info`
      • 5.1.4 `apropos`
      • 5.1.5 `whatis`
    • 5.2 命令行的历史记录和编辑
    • 5.3 从官网获得帮助

介绍下什么叫Linux命令行,并陆续介绍下常用的Linux命令及Shell

1 Linux命令行简介

Linux是一个有命令行组成的操作系统,精髓在于命令行,无论图像界面发展到什么水平,这个原理是不变的。

Linux命令有许多强大的功能:从简单的磁盘操作,文件存取到进行复杂的多媒体图像和流媒体文件的制作。

1.1 Linux命令行的分类

从不同的角度对Linux命令的分类有:

1.1.1 根据系统中作用来分类

按照在系统中的作用可将Linux命令分为:

  • 安装和登录命令
  • 文件处理命令
  • 系统管理相关命令
  • 网络操作命令
  • 系统安全相关命令
  • 其他命令

1.1.2 根据对象来分类

根据对象的不同,可将Linux命令分为:

  • 目录文件命令
  • 帮助类命令
  • 文件系统类命令
  • 软件包管理
  • 内核管理类命令
  • 网络基础类命令

2 Linux命令行解释器

命令行解释器就是通常说的Shell。shell是一种具备特殊功能的程序,介于用户和UNIX/Linux操作系统之间的一个接口。

2.1 命令行解释器shell

2.1.1 核心程序

在系统启动的时候,核心程序被加载进入内存,并负责管理系统的工作,直到系统关闭为止。核心程序建立并控制着处理程序,管理内存,档案系统和通信等。而其他程序,包括shell程序都存放在磁盘中。核心程序将他们加载到内存并执行,并在终止后清理系统。

2.1.2 公用程序shell

shell是一个公用程序,它在登录时启动,由执行用户输入的命令来提供用户和核心程序产生交谈的功能。shell在用户成功登录进入系统后启动,并始终作为用户与系统内核的交互手段直到退出系统。

2.1.3 用户的默认shell

系统上的每位用户都有一个默认的shell。每个用户的默认shell在系统的/etc/passwd文件里被指定。passwd文件里还包括其他信息,即每个用户ID号,以及一个口令加密后的副本和用户登录后立即执行的程序。

为了加强安全性,现在的系统一般都把加密的口令放在另一个文件/etc/shadow中,而passwd中存放口令的部分以一个x字符代替。

2.1.4 shell如何工作

当用户登录(login)时,一个交谈式的shell跟着启动,并提示输入命令。在输入一个命令后,即可促使shell进行工作中:

  • 语法分析命令列
  • 处理万用字符(wildcards),转向(redirection),管线(pipes)与工作控制(job control)
  • 查找并执行命令

2.2 Shell发展历史

第一个有重要意义的Unix shell是V7(AT&T的第7版)UNIX,在1979年底被提出,且以它的创造者Stephen Bourne来命名,即Bourne shell。

C shell是在加州大学柏克莱分校于20世纪70年代末发展而成,以2BSD UNIX的部分发行。C shell是以C程序作为基础,被用来当程序语言时,能共享类似的语法。

贝尔实验室的DavidKorn 在20世纪80年代中期编写了KornShell,于1986年发行并与1988年称为正式的部分SVR4 UNIX。Korn Shell实际上是Bourne Shell的超集,不仅能否在UNIX系统上执行,同时也能在OS/2,VMS和DOS上执行。

2.3 shell版本的差异

一般情况下,UNIX系统除了支持Bourne shell(/bin/sh)外,还有 C shell(/bin/csh),Korn shell(/bin/ksh),Bourne again shell(/bin/bash)和TenexC shell(tcsh)等其他的shell。UNIX/Linux将shell独立于核心程序之外,就如同一般的应用程序,可以在不影响操作系统本身的情况下进行修改,更新版本或添加新的功能。

一般shell都存放在/bin目录下,可以通过命令查看当前系统中所包含的shell的类型。

(base) pang@pang-HP:~$ sudo find /bin/*sh
/bin/avahi-publish
/bin/bash
/bin/bluefish
/bin/chsh
/bin/c_rehash
/bin/dash
/bin/gettext.sh
/bin/instmodsh
/bin/nvidia-bug-report.sh
/bin/nvidia-sleep.sh
/bin/pax11publish
/bin/ppmflash
/bin/rbash
/bin/rsh
/bin/sh
/bin/ssh
/bin/static-sh
/bin/tclsh
/bin/vmware-license-check.sh
/bin/vmware-license-enter.sh
/bin/xrefresh
/bin/zssh
(base) pang@pang-HP:~$ 

2.3.1 C shell

C shell是柏克莱大学(Berkeley)所开发的,并且加入了一些新特性,如命令行使用历史(history),别名(alias)、内建算术和工作控制(job control)等功能。对于常在交互模式下执行shell用户而言,较喜爱使用C shell;但对于系统管理者而言,则偏好以Bourne shell来编写命令文件,因为Bourne shell命令文件比C shell命令文件来得简单及快速。

2.3.2 Bourne shell

Bourne shell是标准的UNIX shell,以前常被作为管理系统只用。大部分的系统管理命令文件,如rc startstopshutdown都是Bourne shell的命令文件,且在单一用户模式(single user mode)下以root登录时被系统管理者使用。Bourne shell的提示符号的默认值是$$

在shell提示符下按照提示输入用户名和密码后,将进行Bourne shell模式。

2.3.3 Korn shell

Korn shell是Bourne shell的超集(superset),由DavidKorn开发,比C shell更为先进。Korn shell的特色是包括了可编辑的历程、别名、函数、正规表达万用字符(regular expression wildcard)、内建算术、工作控制(job control)、共处理(coprocessing)和特殊的除错功能。

由于Korn shell是Bourne shell的超集,Bourne shell几乎和Korn shell完全向上兼容(upward compatible),所以在Bourne shell下开发的程序仍能在Korn shell上执行。Korn shell提示符号的默认值也是$$

除了执行效率稍差外,Korn shell在许多方面都比Bourne shell强。如果将Korn shell与C shell相比,二者各有所长,从效率和使用难度上看,Korn shell优于C shell。

2.3.4 bash

bash对Bourne shell是向下兼容(backward compatible),并融入许多C shell和Korn shell的功能。这些功能其实C shell(包括tcsh)都有,只是过去Bourne shell都未支持。

以下为bash几个重要的改进:

  • 工作控制(job control):bash支持了关于工作的信号与指令。
  • 别名功能(aliases):alias命令是用来为一个命令建立另一个名称,其运作就像一个宏,展开成为所代表的命令。
  • 命令历程(command history):bash shell加入了C shell所提供的命令历程功能,history工具程序记录了最近用户执行过的命令。命令由1开始编号,默认值为500。可以在命令列中输入history,将会显示最近执行过的命令清单。

2.3.5 tcsh

tcsh是近几年崛起的一个免费软件(Linux下的C shell其实就是使用tcsh执行),虽然不是UNIX的标准配备,但是可以从许多地方下载。tcsh提供了一个命令列(command line)编辑程序。

  • 提供了命令列补全功能
  • 提供了拼字更正功能,自动检测并更正在命令列拼错的命令或单字
  • 提供了危险命令侦测并提醒的功能,可以避免执行rm*这种杀伤力极大的命令
  • 提供了常用命令的快捷方式(shortcut)

如果想从默认的Bourne shell切换到tcsh模式,在shell提示符下输入命令exec tcsh

(base) pang@pang-HP:~$ echo $SHELL
/bin/bash
(base) pang@pang-HP:~$ exec tcsh
pang-HP:~> 
pang-HP:~> echo $shell
/bin/tcsh
pang-HP:~> 

3 Linux命令行的组成

Linux命令行的功能非常强大,当Linux系统管理员熟悉了各种命令的含义和使用技巧后,就可以根据一定的规则组合成复杂的命令字符串,以实现所需的功能。下面重点讲解下命令行的组成。

3.1 命令提示符

登录系统后,我们所看到的内容如下,这就是Linux的命令提示符。

pang@pang-HP:~$
  • [ ]:这是提示符的分隔符号,没有特殊含义。
  • pang:显示的是当前的登录用户,笔者现在使用的是个人用户登录。
  • @:分隔符号,没有特殊含义。
  • pang-HP:当前系统的简写主机名(即/etc/hostname文件配置的内容)。
  • ~:代表用户当前所在的目录,此例中用户当前所在的目录是用户自己的主目录。
  • $$:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $$

切换至root用户后,显示为:

pang@pang-HP:~$ sudo su - root
root@pang-HP:~# 

3.2 命令的基本格式

Linux命令的基本格式:

命令名 [选项] [参数1] [参数2]...

# 英文表示
command option parameter (object)
  • command 命令名- 表示要执行的操作
  • option 选项 - 指出如何执行这个操作
  • parameter 参数 - 指出要操作的对象。
  • 命令格式中的[]代表可选项,也就是有些命令可以不写选项或参数,也能执行。
  • 命令在正常执行后返回值为0,表示执行成功。如果命令执行过程中出错,没有完成全部工作,则返回其他值。

3.2.1 选项格式

根据选项风格的不同,目前基本形成了几种不同的命令行风格,如POSIX/UNIX风格、GNU风格、BSD风格、X toolkit风格。

  • POSIX/UNIX风格

原始的Unix风格命令行选项,是以连字符-开头的单个字符(注意是一个字符,而不是一个单词)。 如果选项后面不带参数,则被称之为模式选项。模式选项是可以组合在一起使用的。例如,如果-a-b是模式选项,那么-ab-ba就都正确,而且会启用这两个选项。如ls -alls -lals -a -l的作用是一样的。

如果选项需要带参数,这些参数要紧接在这个选项后面,可以以空格分开,也可以不以空格分开。如ls -w50 /home(注意:w和50之间没有空格)、ls -w 50 /home(注意:w和50之间有空格)的作用是一样的。

最初的Unix风格是在缓慢的ASR-33电传打字机上演变而来的,这使得简洁成为一种美德。因此是单字母选项。按住shift键需要额外的精力,因此偏爱小写,并使用-(而不是可能更合乎逻辑的+)来启用选项。

  • GNU风格

选项使用--开头的单词。如ls --all

如果选项需要带参数,则使用空格或者=将参数和选项分开。如ls --sort time(注意sort和time之间的空格) 、ls --sort=time

这种风格的出现是因为仅仅26个字母(或者算上大小写52个)不够一些复杂的GNU程序使用。另外一点是相比于单字符的POSIX/UNIX风格,其更容易理解,因为出现的不再是缩写的字母。

--开头的GNU风格的选项格式又被称为长选项,与之对应的,之前以-开头的单字符的选项格式也被成为短选项

  • BSD风格

和POSIX/UNIX风格相比,其选项使用单个字符,且不带任何前缀。如ps a(注意,只有单个a字符,没有-符号)。如果是多个不带参数的选项,也可以组合在一起,如ps aux

如果选项需要带参数,也同POSIX/UNIX风格一样,选项参数紧跟在这个选项后面,可以使用空格分开,也可以不用空格。如ps U root(注意:root和U之间有空格)、ps Uroot(注意:root和U之间没有空格)的作用是一样的。

  • X toolkit风格

但原始的X toolkit风格是由X toolkit进行解析,它首先过滤并处理某些选项(如-geometry和-display)然后再把过滤后的命令行传递给应用程序逻辑进行解析。

-开头的单词(注意是单词,而不是单个字符)。如java -version-后面跟着的是一个单词。

如果选项需要带参数,则选项参数紧跟在这个选项后面,且使用空格分开。例如:xeyes -display joesws:0 -geometry 1000x1000+0+0

这种风格即不能和古典的POSIX/UNIX风格兼容,也不能和GNU风格兼容,所以不应该在新程序中使用,除非遵循老式的X约定看起来价值很高。

总之,这些风格之间只是"风格"不同,实际使用中并不限制使用,比如上述ps命令,由于一些历史原因,就可以接收POSIX/UNIX风格、GNU风格、BSD风格的参数,互相并不冲突。

3.2.2 参数的作用

参数是命令的操作对象,进一步提供了命令运行的信息,或者是命令执行过程中所使用的文件名。

  • 通常命令行的参数是一些文件名,告诉命令从哪里可以得到输入,以及输出到什么地方。
  • 如果命令行中没有提供参数,命令将默认从标准输入设备(即键盘)接收数据,输出结果和错误信息默认显示在标准输出设备(即显示器)上。

3.3 Linux命令的构成

在初次接触Linux命令行的时候,可能不清除为何要按照某种方式来书写命令,这些涉及命令所要遵循的一个规则和技巧。

3.3.1 重定向运用

在Linux命令行模式中,命令所需的输入不是来自键盘,而是来自指定文件,这就是输入重定向;而输出重定向可以使命令的输出不显示在屏幕上,而是写入到指定文件中。

# 输入重定向
(base) pang@pang-HP:~$ wc checkDeviceInfo.sh 
 15  82 588 checkDeviceInfo.sh
# 输出重定向
(base) pang@pang-HP:~$ ls ~ >1.log
# 同时使用输入和输出重定向
(base) pang@pang-HP:~$ wc checkDeviceInfo.sh > 1.log

3.3.2 管道运用

在Linux系统下,可以利用管道符|将两个命令隔开,管道符左边命令的输出将作为管道符右边命令的输入。连续使用管道符意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,由此类推。

(base) pang@pang-HP:~$ cat /etc/passwd | grep /bin/bash | wc -l
2
(base) pang@pang-HP:~$ 

3.3.3 命令替换运用

在Linux命令行模式下,当遇到一对“`”(上分隔符)时,将首先执行“`”中间包含的命令,然后将其输出结果作为参数代入命令行中,这就是命令替换。类似于输入/输出重定向,区别在于命令替换是将一个命令的输出作为另外一个命令的参数。

(base) pang@pang-HP:~$ touch `date +%Y%m%d%k%M%S`.txt

4 Linux中卷、目录和文件的含义

与Windows系统的磁盘、目录及文件的概念类似,Linux系统的基础是逻辑卷、目录和文件。要学习Linux系统,首先要熟悉逻辑卷、目录及文件的概念开始,然后在深入到命令行的操作中。

4.1 卷

在安装Linux为系统分区时,如何精确评估和分配各个硬盘分区的容量,这是系统管理员经常会碰到的问题。如果分配不准确,当遇到某个分区不够用时,管理员就可能需要先备份真个系统,再清除硬盘并重新对硬盘分区,然后在恢复数据到新的分区,这无意是工作量巨大的。

4.1.1 逻辑卷管理

Linux提供的逻辑卷管理(logical volume manager,LVM)功能,实现了文件系统跨越不同磁盘和分区操作,能够自如地调整文件系统的大小。

LVM是Linux环境下对磁盘分区进行管理的一种机制,建立在硬盘和分区之上的一个逻辑层,提高了磁盘分区管理的灵活性。通过LVM,系统管理员可以轻松的管理磁盘分区,而不必将磁盘中的文件移动到新的磁盘上以充分利用新的存储空间,只需直接扩展文件系统的跨越磁盘即可。

4.1.2 卷的基本术语

  • 物理存储介质(the physical media):系统的存储设备硬盘,如果/dev/hda1/dev/sda等,是鵆系统最低层的存储单元。
  • 物理卷(physical volume,PV):物理卷是LVM的基本存储逻辑块,在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。
  • 卷组(volume group,VG):LVM卷组类似于非LVM系统中的物理磁盘,建立在物理卷之上由物理卷组成。可以在卷组上创建一个或多个LVM分区(逻辑卷),其LVM卷组由一个或多个物理卷组成。一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。
  • 逻辑卷(logical volume,LV):LVM的逻辑卷类似于非LVM系统中的磁盘分区,建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。在逻辑卷之上可以建立文件系统,如/home和/usr等。
  • 物理区域(physical extent,PE):每一个物理卷被划分为称为PE的基本单元,其具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB,其大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的PV加入到VG后,PE的大小自动更改为VG中定义的PE大小。
  • 逻辑区域(logical extent,LE):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。由于受内核限制的原因,一个逻辑卷(Logic Volume)最多只能包含65536个PE(Physical Extent),所以一个PE的大小就决定了逻辑卷的最大容量,4 MB(默认) 的PE决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷,则创建卷组时需要指定更大的PE。在Red Hat Enterprise Linux AS 4中PE大小范围为8 KB 到 16GB,并且必须总是 2 的倍数。
  • 卷组描述区域(volume group descriptor area,VGDA):VGDA中存放了逻辑卷和卷组相关的数据,包括PV描述符,VG描述符,LV描述符和PE描述符。系统启动LVM时激活VG,并将VGDA加载至内存,用来识别LV的实际物理存储位置。当系统进行I/O操作时,会根据VGDA建立的映射机制来访问实际的物理位置。

image.png

4.2 文件系统

在Linux系统中,文件的准确定义是不包含任何其他结构的字符流。也就是说,文件中字符与字符之间除了同属于一个文件之外,不存在任何其他的关系。

文件中字符关系是由使用文件的应用程序来建立和解释的。每一个文件都具有特定的属性。Linux系统的文件属性主要包括文件类型,权限和属性。

4.2.1 相关概念

Linux下的文件系统是层次结构的,由若干目录和子目录组成,最上层的目录称为根目录,用/表示。

名称定义
文件系统是磁盘上具有特定格式的一片区域,操作系统通过文件系统可以很方便地查询和访问其中所包含的磁盘块。
文件是文件系统中存储数据的一个命令对象。一个文件可以是空文件(即没有包含用户数据),但是其任然为操作系统提供了其他信息。
目录目录文件中包含许多文件的目录项,每个目录项包含相应文件的名称和索引结点号,在索引结点中存放该文件的控制管理信息。目录文件支持文件系统的层次结构,并且文件系统中的每个文件都登记在一个或多个目录中。
子目录是被包含在另一个目录中的目录。包含子目录的目录称为父目录。除了根目录以外,所有额目录都是子目录,并且包含这些目录的父目录。
文件名文件名是用来标识文件的字符串,并保存在一个文件目录项中
路径名是通过斜线字符/结合在一起的一个或多个文件名的集合,其指定的是一个文件在分层树形结构(即文件系统)中的位置。

4.2.2 文件结构

文件是Linux操作系统处理信息的基本单位。所有软件都被组织成文件,系统把它们看成不同类型的文件进行管理。

  • 文件的成分

无论是一个程序,一个文档、一个数据库,还是一个目录,都是一个文件,其结构包括:

(1)索引节点,又称i结点。在文件系统结构中,包含有关响应文件的信息的一个记录,这些信息又包括文件权限、文件属主、文件大小、存放位置和建立日期等。

(2)数据,即文件的实际内容,可以为空;也可以非常大,并且有自己的结构。

  • 文件命名

Linux的文件名由ASCII字符的任意组合构成,最大限制255个字符。习惯上允许使用下划线(_)和句点(.)来区别文件的类型。但是文件名应避免使用空格、制表符或其他控制字符,以及对系统shell来说具有特殊含义的字符:;|<>"'$$!%&等。

.开头的文件是隐藏文件,并且默认情况下不能使用ls命令查看。

  • 文件名的通配符

为了一次能构处理多个文件,shell提供了几个特别字符,称为文件通配符。主要的有:

(1)星号(*):与0个或多个任意的字符相匹配。

(2)问号(?):只与一个任意的字符匹配。

(3)方括号([]):与问号相似,只与一个字符匹配。但是,方括号只与括号中列出的字符之一匹配。

  • 文件类型

Linux下的文件可以分为5种不同的类型:普通文件,目录文件,链接文件,设备文件和管道文件。

(1)普通文件:这类文件不包含文件系统的结构信息。通常所接触到的文件,包括图像文件、数据文件、文档文件和声音文件都属于这种文件。这种类型的文件按其内部结构又分为文本文件和二进制文件。

(2)目录文件:目录文件是Linux存储文件名的唯一地方,包括文件名,子目录及其指针,要列出目录文件可使用命令ls。目录文件还是用于存放文件及其相关信息的文件,是内核组织文件系统的基本结点。Linux系统中的目录文件和其他操作系统中目录的概念不同,即目录文件是Linux文件中的一种。

(3)链接文件:是一种特殊的文件,实际上是指向真实存在的文件的链接,类似于Windows中的快捷方式。根据链接文件类型的不同,又分为硬链接文件和符号链接文件。

(4)设备文件:Linux系统为外部设备提供一种标准接口,这种机制可以将外部设备视为一种特殊的文件。通常Linux系统将设备文件存放在目录dev下,使用设备的主设备号和次设备号来指定某外部设备。

(5)管道文件:是一种特殊的文件,主要用于不同进程间的信息传递。通过管道文件,可以进行进程间的数据或信息传递。

4.2.3 目录

Linux系统中,除根目录root以外,所有文件和目录都包含在相应的目录文件中。在目录中添加文件的时候,该目录随着文件的加入而变大,以便容纳新文件。删除文件时,并不会减小目录的大小,系统核心会对目录项添加特殊标记,以便再次添加文件时重新使用,而未被使用的项不能使用ls命令列出。

Linux系统以文件目录的方式来组织和管理系统中的所有文件。所谓文件目录就是将所有文件的说明信息采用树形结构组织起来,即常说的目录。

在这里插入图片描述

Linux目录结构常见说明如下:

目录目录含义描述
/根目录
/bin存放必要的命令
/boot存放内存及启动所需的文件等
/dev存放设备文件
/etc存放系统的配置文件
/home用户文件的主目录,该用户数据存放在其主目录中
/lib存放必要的运行库
/mnt存放临时的映射文件系统,常把软驱和光驱挂载在这里的floppy和cdrom子目录下
/proc存放存储进行和系统信息
/root超级用户的主目录
/sbin存放系统管理程序
/tmp存放临时文件的目录
/usr包含了一般不需要修改的应用程序,如命令程序文件、程序库、手册和其他文档
/var包含系统产生的经常变化的文件,如打印机、邮件和新闻等假脱机目录,日志文件、格式化后的手册页、以及一些应用程序的数据文件等。

usr目录中子目录说明:

目录文件目录文件的含义
/usr/X11R6存放X-Window系统
/usr/bin存放增加的用户程序
/usr/dict存放数据字典
/usr/doc存放追加的文档
/usr/etc存放设置文件
/usr/games存放游戏和教学文件
/usr/include存放C开发工具的头文件
/usr/info存放GNU信息文件
/usr/lib存放库文件
/usr/local存放本地产生的增加的应用程序
/usr/man存放在线帮助文件
/usr/sbin存放增加的管理程序
/usr/share存放结构独立的数据
/usr/src存放程序的源代码

4.2.4 文件权限及属性

Linux系统针对不同用户访问同一文件的权限做了不同的规定。

  • 文件权限

Linux下一个文件的操作人员有3类,第一类是root、第二类是添加的用户、第三类是其他人员。Linux下每一类操作人员对文件操作的权限有3种:读权限(用r表示)、写权限(用w表示)和执行权限(用x表示)。

Linux系统按文件所有者,文件所有者同组用户和其他用户规定不同的文件访问权限。每一个文件都有一个特定的所有者,即对文件具有所有权的用户。由于在Linux系统中,用户是按组分类的,一个用户属于一个或多个组,因此文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

Linux文件系统安全模型是通过给系统中的文件赋予两个属性来起作用,即拥有者(ownership)和访问权限(access rights)。

  • 文件属性

Linux文件或目录的属性主要包含文件或目录的结点、种类、权限模式、链接数量、所归属的用户和用户组、以及最近访问或修改的时间等内容。

pang@pang-HP:~$ ls -lih /home/pang
总用量 700K
23600398 -rw-------  1 pang pang  244 127 10:58  2022-12-07-02-58-13.000-VBoxSVC-228752.log
23597599 -rw-------  1 pang pang  357 127 10:58  2022-12-07-02-58-13.055-VBoxHeadless-815423.log
23600430 -rw-------  1 pang pang  242 127 16:55  2022-12-07-08-55-17.003-VBoxSVC-43641.log
23601583 -rw-------  1 pang pang  355 127 16:55  2022-12-07-08-55-17.040-VBoxHeadless-43734.log
23599182 -rw-------  1 pang pang  242 1212 16:48  2022-12-12-08-48-54.033-VBoxSVC-26188.log
23601560 -rw-------  1 pang pang  355 1212 16:48  2022-12-12-08-48-54.070-VBoxHeadless-29584.log
23593064 drwxr-xr-x  2 pang pang 4.0K 1023  2021  公共的
23593063 drwxr-xr-x  2 pang pang 4.0K 1027  2021  模板
23593068 drwxr-xr-x  2 pang pang 4.0K 1023  2021  视频
23593067 drwxr-xr-x  3 pang pang 4.0K 1214 20:17  图片
23593065 drwxr-xr-x 16 pang pang 4.0K 1212 16:48  文档
23593062 drwxr-xr-x  8 pang pang 4.0K 1215 15:12  下载
23593066 drwxr-xr-x  2 pang pang 4.0K 1023  2021  音乐
23593060 drwxr-xr-x  3 pang pang 4.0K 127 15:26  桌面
23604589 -rw-rw-r--  1 pang pang    0 1215 16:09  aaa_b.txt
23627614 -rw-rw-r--  1 pang pang   72 1215 16:09  aaa.txt
23605628 drwxrwxr-x 28 pang pang 4.0K 1023  2021  anaconda3
23608387 drwxrwxr-x  2 pang pang 4.0K 101 20:19  bin
23620186 -rwxrwxr-x  1 pang pang  588  89 17:26  checkDeviceInfo.sh
26085189 drwxrwxr-x  4 pang pang 4.0K 1027  2021  configclient
23598904 lrwxrwxrwx  1 pang pang    5 1023  2021  data -> /data
24000659 drwxrwxr-x  2 pang pang 4.0K  629 14:52  dockerfile
24259509 drwx------ 17 pang pang 4.0K  325  2022  FFmpeg-release-5.0
25828564 drwxrwxr-x  5 pang pang 4.0K 1025 10:55  fsdownload
23605633 drwxrwxr-x  2 pang pang 4.0K 123  2021  git_resource
23598936 drwx------  3 pang pang 4.0K  67  2017  hadoop-cluster-docker
23864687 drwx------  3 pang pang 4.0K 1110 15:47  hadoop-hive-master
23620440 -rw-rw-r--  1 pang pang 176K 1215 19:45  java_error_in_IDEA_152133.log
23613231 -rw-rw-r--  1 pang pang 191K 1212 16:48  java_error_in_IDEA_1737947.log
23600818 -rw-rw-r--  1 pang pang 177K 1215 20:28  java_error_in_IDEA_32972.log
29754610 drwxrwxr-x 15 pang pang 4.0K  513  2022  Jupyter
25040582 drwxrwxr-x 12 pang pang 4.0K 1010 10:57  logs
23619903 -rw-r--r--  1 pang pang  376 126 10:52  magic.mgc
23622002 -rw-rw-r--  1 pang pang    0 126 14:39  msg.log
25040586 drwxrwxr-x  4 pang pang 4.0K 1026  2021  nacos
23620737 drwxrwxr-x  3 pang pang 4.0K 1025  2021  node_modules
23600063 drwxrwxr-x  4 pang pang 4.0K 1125  2021  opt
23630054 lrwxrwxrwx  1 pang pang   36 121  2021 "PlayOnLinux's virtual drives" -> /home/pang/.PlayOnLinux//wineprefix/
24258304 drwxrwxr-x  3 pang pang 4.0K 1119  2021  Postman
23593319 drwx------ 11 pang pang 4.0K  824 08:14  snap
24646685 drwxrwxr-x  2 pang pang 4.0K  627 13:34  sql_text
23861087 drwxrwxr-x  2 pang pang 4.0K 113  2021  svn
24258382 drwxrwxr-x  3 pang pang 4.0K 1124  2021  temp
23612383 -rw-rw-r--  1 pang pang 3.3K 122  2021  TestService.java
23602134 drwxr-xr-x  2 root root 4.0K  621 09:11  vdata
pang@pang-HP:~$ 

(1)第1字段:inode

(2)第2字段:文件种类和权限

(3)第3字段:硬链接数目

(4)第4字段:属主

(5)第5字段:所归属的组

(6)第6字段:文件或目录的大小

(7)第7字段和第8字段:最后访问或修改时间

(8)第9字段:文件名或目录名

5 Linux命令行帮助

要学习Linux操作系统的使用,阅读Linux的帮助文件是很有必要的。

5.1 帮助命令

5.1.1 man

Linux系统的man命令可以显示任何命令的联机帮助信息,提供有关主题的参考信息、子例程和文件。man命令提供的命令信息描述包含用户指定的关键字集合。

  • 语法格式:
man [-acdDfhkKtwW][-m system][-p string][-c config_file][-m path][-p pager][-s section_list][section] name...
  • 参数说明:
参数说明
-a内定在显示第一个找到的手册之后就会停止搜索,使用此参数会强迫man显示所有符合name部分所输入值的线上手册
-c即使有最新的线上页面,还是对线上手册重新进行排版,本参数在屏幕的行列数改变时或已排版的线上手册损坏时特别有意义
-d不会真实地显示线上手册,只显示排错信息
-D同时显示线上手册和排错信息
-f功能同whatis
-h显示帮助信息,然后借书程式
-k功能同apropos。根据keyword进行搜索
-K规定对所有的线上手册搜索指定的字串。注意,本功能回应速度可能很慢,如果指定section会对速度有所帮助
-t使用/usr/bin/groff-Tps-mandoc来对线上手册排版,并将结果显示至stdout。/usr/bin/groff-Tps-mandoc的输出结果可能还需要特定的过滤器(如bg5ps)才能列印。
-w不会显示线上手册。而是显示线上手册的位置。如果没有指定引数,则显示man所搜索的目录列表。
-W即功能类-w,但每行只印出一个档名,不印出额外的信息。这在下面的状况特别有用:man -aW man |xargs ls -l
-m system根据所指定的system名称而指定另一组的线上手册
-p string指定在nroff或troff之前所执行的处理程式是不是所有的安装都会有完整的前处理器。各个前处理器所代表的字母分为为eqn(e)、grap(g)、pic(p)、tbl(t)、vgrind(v)和refer(r)。本参数会覆盖环境变量MANROFFSEQ的设定。
-c config_file指定man的conf。内定值为/etc/man.conf
-m path指定线上手册的搜寻路径,如果没有指定路径,则使用环境变量MANPATH来设定;如果没有使用MANPATH,则会使用/usr/lib/man.conf内的设定;如果MANPATH是空字符串,则表示使用内定值。
-p pager指定使用页面的种类。man会优先使用此参数设定,先是根据环境变量MANPAGER设定,然后是环境变量PAGER。man内定使用/usr/bin/less-is
-s section_list指定所搜索的章节列表(以冒号分隔),此参数会覆盖环境变量MANSECT的设定
section指定要搜索的手册段,其参数格式参考下面的表格。

section参数格式:

section参数说明
C指定命令(包含系统管理命令)
F指定文件类型手册页面
L指定库函数
n指定为新的
l指定为局部的
o指定为原来的
p指定为公用的
1表示用户命令和守护进程
2表示系统调用和内核服务
3表示子例程
4表示特殊文件、设备驱动程序和硬件
5表示配置文件
6表示游戏
7表示杂项命令
8表示管理命令和守护进程
  • 示例
# 查看cp命令的有关信息和操作
man cp

# 显示/usr/share/man或/usr/share/man/local路径中所有与grep命令相关的文件
man -M /usr/share/man:/usr/share/man/local grep
  • 补充说明

由于手册页man page是用less程序来查看的,所以在man page里可以使用less的所有参数。

Less功能键及说明:

功能键说明
Q:退出
Enter:一行行地下翻
Space:一页页地下翻
b:上翻一页
/:后跟一个字符串和Enter键来查找字符串
n:发现上一次查找的下一个匹配
  • 安装man中文版
sudo apt install manpages-zh

查看man 手册安装到哪里

sudo dpkg -L manpages-zh | less

配置man手册中英文切换

# 打开配置文件
vi ~/.bashrc

# 在文件的末尾添加下面的内容,并保存退出
alias man='man -M /usr/share/man'   #使用man查看英文man手册
alias cman='man -M /usr/share/man/zh_CN' #使用cman查看中文man手册

# 然后在命令行输入
source ~/.bashrc

5.1.2 help

该命令用户显示bash shell内置命令的简单信息。使用help命令不带任何参数,即可显示bash shell所有内置的命令。

  • 语法格式和具体参数
help [命令名]
  • 示例
# 直接使用help显示所有命令,结合管道符与more一起使用
help | more 


# 查看cp命令帮助
help cp

5.1.3 info

info命令与man命令相比,优点是其通常带有最近更新的系统资料。

  • 语法格式
info [命令名]
  • 示例
# 获取cp命令的信息
info cp
  • 补充说明
    info命令常见的功能键如下:
功能键
Tab该键可以用来在菜单之间移动
p跳转到前一个结点
u跳转到上一层结点
q退出

5.1.4 apropos

apropos命令在Linux中用来通过关键字查找定位命令的手册节,其功能等同于使用带有-k参数的man命令。

  • 语法
apropos [-m path] 关键字...

参数:
1. -m path 指定备用搜索路径。搜索路径有PathName参数指定,且是一个由冒号隔开的目录列表。

  • 示例
# 查找标题中包含test的手册节
apropos test

5.1.5 whatis

whatis即what is,此命令用来描述其他系统命令的作用,其资料库包含了所有系统指令的简单描述。wahtis命令会在资料库中搜索符合的指令,并把结果显示出来。whatis命令和apropos使用相同的数据库,区别在于whatis搜索的是关键字,而apropos搜索的是关键字的描述。

  • 语法
whatis 关键字...
  • 具体示例
# 查看cp命令的作用
whatis cp

5.2 命令行的历史记录和编辑

在命令行的操作过程,经常会遇到需要查看历史使用命令的情况,有时候还需要执行历史记录中的某个命令,这就需要熟悉如何查看和编辑历史命令。

  • 命令行的历史记录
    用户最近在控制台下输入的命令,可以通过按<↑>键向后查阅,按<↓>键向前查阅。与<Shit>j键配合使用,还可以查阅该控制台中以往的输出。用户甚至可以编辑旧的输入命令,然后再执行。

如果按<Enter>键,上面的命令将再次执行,而如何按了<←><→><Esc>键,将返回到命令提示符下。此时,用户可以对命令历史记录进行适当编辑。

<Ctrl+R>组合键,shell会进入"(reverse-i-search)`': "(向后增量搜索)模式,在该模式下,可以输入需要查找的命令首字母。

pang@pang-HP:~$ 
(reverse-i-search)`': 
# 输入i
reverse-i-search)`i': file -
  • 编辑命令行
    通过光标键和功能键(HomeEnd等键)可以浏览并编辑命令行。此外,利用一些快捷键也可以完成一般的编辑操作。
快捷键说明
<Ctrl+K>删除,从光标到行尾
<Ctrl+U>删除,从光标到行首
<Alt+D>删除,从光标到当前单词结尾
<Ctrl+W>删除,从光标到当前单词开头
<Ctrl+A>将光标移到行首
<Ctrl+E>将光标移到行尾
<Alt+A>将光标移到当前单词头部
<Alt+E>将光标移到当前单词尾部
<Ctrl+Y>插入最近删除的单词
!$重复前一个命令最后的参数

5.3 从官网获得帮助

  • RedHat官网
  • Fedora官网
  • MandrakeLinux官网
  • SuSE官网
  • RPM包查询网站
  • Kernel.org镜像网站-其中有好多发行版可以下载
  • Debian官网
  • Slackware官网
  • slackware软件升级包
  • Gentoo官网
  • 内核官网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux命令行笔记-00 综述 的相关文章

  • linux 安装discuz出现“ mysqli_connect()不支持advice_mysqli_connect ”解决方法

    由于不了解php相关技术 xff0c 所以在安装discuz的时候遇到了很多麻烦 xff0c 记录下 首先 xff0c 我的环境是CentOS6 5 xff0c 在安装discuz的时候需要yum很多东西 yum install php p
  • Ubuntu 22.04 LTS下Miniconda安装+换源(踩坑向)

    1 安装Miniconda 我使用的是Python3 8 xff0c 如果需要去其他对应版本 xff0c 请查看 Miniconda conda documentation 下载 wget https repo anaconda com m
  • FreeBSD修改为国内源

    禁用原来的FreeBSD conf ee etc pkg FreeBSD conf 将 enabled yes 改为 enabled no 保存 ESC 然后 a gt a 即可 创建另外一个 FreeBSD conf mkdir p us
  • 关于51单片机的中断

    1 中断的要求 1 中断源有中断请求 Ask for instructions of the CPU interrupt request source called interrupt source 2 此中断源的中断允许位为1 The i
  • 华为机试_HJ5 进制转换【简单】

    描述 写出一个程序 xff0c 接受一个十六进制的数 xff0c 输出该数值的十进制表示 数据范围 xff1a 保证结果在 1 le n le 2 31 1 1 n 231 1 输入描述 xff1a 输入一个十六进制的数值字符串 输出描述
  • bootstrap实现 — 个人简介

    实现 xff1a bootstrap 效果图 xff1a 源码 xff1a lt DOCTYPE html gt lt html gt lt head gt lt meta charset 61 34 utf 8 34 gt lt titl
  • 计蒜客--T1079--打表+控制输出

    假设有 N 盏灯 xff08 NN为不大于 5000 的正整数 xff09 xff0c 从 1 到 N 按顺序依次编号 xff0c 初始时全部处于开启状态 xff1b 有 M 个人 xff08 M 为不大于 N的正整数 xff09 也从 1
  • Authentication plugin ‘caching_sha2_password‘ 服务端也无法连接问题彻底解决

    在网上搜索了很多的帖子 xff0c 发现描述的都是外部客户端无法登录到mysql上 xff0c 登录上服务器以后连接更改配置的方式 xff0c 但是 xff01 xff01 xff01 xff01 xff01 我现在是服务器连接也报错啊啊啊
  • Hexo分类及标签显示

    Hexo根目录配置 config yml category map Blogs categories Blogs Tech categories Tech Tools categories Tools Other categories Ot
  • IDEA查看历史记录

    方法一 文件内 Ctrl 43 右键 Local History Show History xff0c 显示当前文件的本地修改历史 方法二 一 xff1a 在文件内 xff0c 按 Ctrl 43 Shift 43 A 弹出全部搜索对话框
  • SpringBoot-JPA整合ShardingShpere自定义分布式主键

    分布式主键简介 在分布式环境下 xff0c 由于分库分表导致数据水平拆分后无法使用单表自增主键 xff0c 因此我们需要一种全局唯一id生成策略作为分布式主键 当前有如下解决方案 UUID xff08 Universally Unique
  • Gitlab的安装与配置

    安装开始时 xff0c 需确认服务器最小配置是2核4G xff0c 因为gitlab软件比较大 1 配置yum源 xff1a vim etc yum repos d gitlab repo gitlab name 61 gitlab ce
  • Error creating bean with name ‘org.springframework.aop.aspectj.AspectJPointcutAdvisor#0

    问题 xff1a nested exception is org springframework beans factory BeanCreationException Error creating bean with name 39 or
  • Vue前端项目开发页面(二)

    前端界面开发 开发工具版本 64 vue cli 4 5 13 新建Login vue登陆页 1 在 vue exemples 项目 xff0c 选中components目录右键 New Vue Component xff0c 名称为 Lo
  • SpringBoot整合WebSocket

    概述 HTTP 协议是一种无状态的 无连接的 单向的应用层协议 它采用了请求 响应模型 通信请求只能由客户端发起 xff0c 服务端对请求做出应答处理 WebSocket和HTTP一样 xff0c 都是一种网络通信协议 比起HTTP只能由客
  • SpringBoot整合MybatisPlus使用IPage实现分页

    概述 MybatisPlus 提供了分页的功能 IPage内部原理是基于拦截器 xff0c 但是这个拦截的是方法以及方法中的参数 xff0c 这个也会判断是否是查询操作 如果是查询操作 xff0c 才会进入分页的处理逻辑 进入分页逻辑处理后
  • SpringBoot统一异常处理

    概述 SpringBoot 提供了 64 ControllerAdvice 64 RestControllerAdvice 注解可以实现统一异常处理 xff0c 只需要在定义异常类加上以上注解即可 自定义异常处理 定义统一异常处理 span
  • 萌新学习算法——并查集基础

    并查集 在算法设计中 xff0c 将一个集合和另外一个集合合并时 xff0c 就会用到并查集 假如不用并查集 xff0c 你可能会用到集合和列表来实现 xff0c 这样会使代码看起来很复杂 xff0c 而且执行效率不高 xff0c 下面用洛
  • linux中断及其底半部-s5p6818开发平台

    中断分为两个部分 xff1a 中断顶部 xff08 top half xff09 和中断底半部 xff08 bootom half xff09 一 中断顶部 xff08 top half xff09 中断上半部需要处理一下三种情况 xff1
  • Windows如何查看.db数据库文件

    从android应用导出的 db文件 xff0c 想在Windows电脑端看 xff0c 可以用SQLite Expert Professional这个软件查看 xff0c 网上说用FireFox的插件sqlite manager xff0

随机推荐

  • Ubuntu工具-01 UEX

    UltraEdit是Windows旗下一款流行的老牌文本 HEX编辑器 xff08 非开源 xff09 UltraEdit正被移植到Linux平台 该移植名为UEX xff0c 意即UltraEdit for Linux UltraEdit
  • Ubuntu工具-2 OBS Studio

    文章目录 1 下载并安装1 1 Flathub安装1 2 Snap安装1 3 PPA源方式安装1 3 1 检查OpenGL版本 xff0c 其版本必须高于 96 3 3 96 1 3 2 安装虚拟摄像机驱动1 3 3 安装ffmpeg库1
  • Docker build创建指定容器镜像

    Docker build xff1a Build an image from a Dockerfile 按照Dockerfile文件所定义内容创建临时性容器 xff0c 把Docker中所定义的每行命令在临时容器中执行 xff0c 然后生成
  • Ubuntu工具-03 VLC

    文章目录 1 安装VLC Media Player的方法1 1 apt安装1 2 snap安装 xff08 未测试 xff09 2 启动VLC Media Player并设置为默认媒体播放器 VLC Media Player xff08 V
  • MySQL笔记-07 常用函数

    文章目录 1 数学函数1 1 ABS1 2 CEIL和CEILIN1 3 FLOOR1 4 MOD1 5 ROUND1 6 TRUNCATE 2 字符串函数2 1 CONCAT2 2 CONCAT WS2 3 INSERT2 4 LOWER
  • SpringMVC-01 Web基础介绍

    文章目录 1 CGI1 1 CGI原理1 2 输入 出1 3 环境变量1 3 1 与请求相关的环境变量1 3 2 与服务器相关的环境变量1 3 3 与客户端相关的环境变量1 3 4 详细说明1 3 4 1 REQUEST METHOD 1
  • SpringMVC-02 MVC模式介绍

    文章目录 1 Java Web开发模型2 JSP 43 JavaBean开发模型 xff08 model1 xff09 3 MVC开发模式 xff08 model2 xff09 3 1 MVC模式基础3 1 1 模型 视图 控制器各部分的作
  • 系统架构师-科目1考点

  • 系统架构师-科目2考点

  • 系统架构师-科目3考点

  • Hive笔记-01 架构概述

    文章目录 1 概述2 Metadata Metastore的作用3 Metastore三种配置方式3 1 Hive配置参数说明3 1 1 基本配置参数3 1 2 其他配置参数 3 2 内嵌模式 xff08 Embedded xff09 3
  • Hadoop笔记-01概述

    文章目录 1 什么是大数据 xff1f 1 1 大数据计算模式及代表产品1 2 云计算与物联网1 2 1 云计算1 2 1 1 虚拟化1 2 1 2 分布式存储1 2 1 3 分布式计算1 2 1 4 多租户 1 3 物联网1 3 1 识别
  • Hadoop笔记-02 安装

    文章目录 1 VBOX安装CentOS71 1 安装VBOX软件1 2 下载CentOS7镜像文件1 3 初始化VBOX虚拟盘1 4 CentOS7网络配置1 5 CentOS7 yum源配置1 6 CentOS7 一般配置1 6 1关闭防
  • ffmpeg播放器实现详解 - 视频同步控制

    1 时间戳 时间戳的概念贯穿音视频开发始终 xff0c 重要性不言而喻 时间戳告诉我们在什么时候 xff0c 用多快的速度去播哪一帧 xff0c 其中 xff0c DTS decoding timestamp 告诉我们何时解码 xff0c
  • Ubuntu22.04 安装深度微信报错 依赖: libsasl2-2 (>= 2.1.27.1)

    现象 xff1a span class token punctuation span base span class token punctuation span pang 64 pang HP span class token funct
  • Ubuntu22.04更新后 点击深度微信无反应

    系统版本 xff1a Ubuntu 22 04 jammy内核 xff1a x86 64 Linux 5 15 0 53 genericdeepin wine6 stable 版本 xff1a 6 0 0 41 1 深度微信图标点击后 xf
  • MySQL笔记-08 索引

    文章目录 1 索引概述1 1 MySQL索引分类1 1 1 普通索引1 1 2 唯一性索引1 1 3 全文索引1 1 4 单列索引1 1 5 多列索引1 1 6 空间索引 2 创建索引2 1 在建立数据表时创建索引2 1 1 普通索引创建2
  • MySQL笔记-09 视图

    文章目录 1 视图概念1 1 概念1 2 作用 2 创建视图2 1 查看创建视图的权限2 2 创建视图的步骤2 3 创建视图的注意事项 3 视图操作3 1 查看视图3 1 1 DESCRIBE语句3 1 2 SHOW TABLE STATU
  • MySQL笔记-10 数据完整性约束

    文章目录 1 定义完整性约束1 1 实体完整性1 1 1 主键约束1 1 2 候选键约束 1 2 参照完整性1 3 用户定义完整性1 3 1 非空约束1 3 2 CHECK约束1 3 2 1 对列实施CHECK约束1 3 2 2 对表实施C
  • Linux命令行笔记-00 综述

    文章目录 1 Linux命令行简介1 1 Linux命令行的分类1 1 1 根据系统中作用来分类1 1 2 根据对象来分类 2 Linux命令行解释器2 1 命令行解释器shell2 1 1 核心程序2 1 2 公用程序shell2 1 3