Linux基础知识

1、常用命令

  • ls——查看目录中的内容,ls -a 列出目录所有文件,包含以.开始的隐藏文件,ls -A 列出除.及. .的其它文件,ls -S 以文件大小排序,ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来;
  • cd——进入目录,**cd. .**可以回到上一级目录,类似 Windows 的「向上」,cd - 表示回到上一次所在的目录,类似 Windows 的「后退」,cd ~ 表示回到当前用户的主目录,类似 Windows 的「回到桌面」,cd / 表示进入根目录,它是一切目录的父目录;
  • pwd——用于查看当前工作目录路径(绝对路径,一个以根目录 / 为起点的完整路径),pwd -P查看软链接的实际路径;
  • tree——以树形结构列出一个文件夹下的所有子文件夹和文件;
  • touch——在当前目录下新建文件,不加任何参数的情况下,只指定一个文件名,则可以创建一个指定文件名的空白文件,若已存在则会更改时间戳;
  • mkdir——用于直接在当前目录下创建文件夹,使用命令mkdir -p 路径名称时,若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,一次可以建立多个目录;
  • cp——如果要复制目录,需要用 cp -r 目录名 目标目录名
  • rm——用于删除文件,使用rm -r 目标目录名删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录;
  • mv——可以移动文件或目录,将文件移动到新目录中使用命令mv 文件名(可以移动多个文件,用空格隔开) 新目录,将文件重命名可以使用命令mv 当前文件名 新文件名
  • cat——命令cat (-n) 文件路径会将文件中的内容打印到屏幕上,-n可以带行号地打印文件内容;
  • zip——打包 :zip something.zip something (目录加 -r 参数),解包:unzip something.zip,指定路径:-d 参数;
  • tar——打包:tar -cf something.tar something,解包:tar -xf something.tar,指定路径:-C 参数;
  • df——df -h可以查看主机磁盘的具体使用情况;
  • du——du -h命令可以查看目录的容量,du -a 显示目录中所有文件的大小,du -s 仅显示总计,只列出最后加总的值;
  • dd——用于转换和复制文件,不同于cp,dd可以用在备份硬件的引导扇区、获取一定数量的随机数据或者空数据等任务中,dd程序也可以在复制时处理数据,例如转换字节序、或在 ASCII 与 EBCDIC 编码间互换,dd默认从标准输入中读取并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变;
  • mount——用于挂载磁盘到目录树,用户在 Linux/UNIX 的机器上打开一个文件之前,包含该文件的文件系统必须先进行挂载的动作,此时用户要对该文件系统执行 mount 指令以进行挂载,该指令通常使用在 USB 或其他可移除存储设备上,而根目录则需要始终保持挂载的状态。 Linux/UNIX 文件系统可以对应一个文件,不一定是硬件设备,所以可以挂载一个包含文件系统的文件到目录树,挂载好的文件、目录、设备以及特殊文件即可提供用户使用;
mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]
  • ctrl+c——强行终止当前程序,在 Linux 命令行中无意输入了一个不知道的命令或者错误地使用了一个命令,导致在终端里出现了你无法预料的情况,比如屏幕上只有光标在闪烁却无法继续输入命令或者不停地输出一大堆你不想要的结果;
  • crontab——可以在固定的间隔时间执行指定的系统指令或 shell script 脚本,从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond 为其守护进程,常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。
  • 】如果忘记了目录名、文件名或命令,可使用 Tab 键自动补全,还可避免输入错误;连续按两次 Tab 可以显示全部候选结果。
    在这里插入图片描述

2、Shell 是指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下的 command(命令行)和 cmd.exe 。普通意义上的 Shell 是可以接受用户输入命令的程,UNIX/Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的脚本语言。在 Linux 中文件的类型不是根据文件后缀来判断的,在文件里输入内容后才会显示文件类型。

3、通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名、参数名)。

  • *——匹配 0 或多个字符;
  • ?——匹配任意一个字符;
  • [list]——匹配 list 中的任意单一字符;
  • [^list]——匹配除 list 中的任意单一字符以外的字符;
  • [c1-c2]——匹配 c1-c2 中的任意单一字符,如:[0-9]、[a-z];
  • {string1,string2,…}——匹配 string1 或 string2 (或更多)其一字符串;
  • {c1…c2}——匹配 c1-c2 中全部字符 如{1…10}。

4、root 权限:系统权限的一种,与 SYSTEM 权限类似,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,可以操作任何对象,比如安卓操作系统中(基于 Linux 内核)获得 root 权限之后就意味着已经获得了手机的最高权限,这时候可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。
su <user可以切换到用户 user,执行时需要输入目标用户的密码,sudo <cmd可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。sudo adduser 用户名用于创建新用户并创建工作目录和密码,并通过 sudo passwd 密码 命令设置密码,而useradd只创建用户,不会创建用户密码和工作目录。

5、用户组:在 Linux 里面每个用户都有一个归属(用户组),用户组就是一组用户的集合,它们共享一些资源和权限,同时各自拥有私有资源,另外一个用户可以属于多个用户组。每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组,使用命令groups 用户名可以查看。
使用 usermod 命令可以为用户添加用户组,可以直接使用 root 用户为其它用户添加用户组或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令,命令sudo usermod -G sudo 用户名使用时必须有 root 权限。删除用户使用命令sudo deluser lilei --remove-home,使用 --remove-home 参数在删除用户时候会一并将该用户的工作目录一并删除。删除用户组可以使用groupdel 命令,倘若该群组中仍包括某些用户,则必须先删除这些用户后,才能删除群组。

6、文件权限:文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。为了保护系统的安全性,Unix/Linux 系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制,每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。读权限表示可以使用 cat (file name)之类的命令来读取某个文件的内容;写权限表示可以编辑和修改某个文件的内容;执行权限通常指可以运行的二进制程序文件或者脚本文件。
在这里插入图片描述
【注】一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。

7、文件权限表示方式
二进制数字表示——每个文件有三组固定的权限,分别对应拥有者,所属用户组,其他用户,这个顺序是固定的,文件的读写执行对应字母 rwx,以二进制表示就是 111,用十进制表示就是 7,比如新文件的权限是 rw-rw-rw-,换成对应的十进制表示就是 666,这就表示这个文件的拥有者,所属用户组和其他用户具有读写权限,不具有执行权限。
加减赋值操作——g、o 、u 分别表示 group(用户组)、others(其他用户) 和 user(用户),+ 和 - 分别表示增加和去掉相应的权限。

8、Linux目录结构:Linux 是以树形目录结构的形式来构建整个系统的,本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是挂载在目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。大部分目录结构是根据FHS标准(Filesystem Hierarchy Standard文件系统层次结构标准)规定好的。
FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等;第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等。
在这里插入图片描述
9、绝对路径:以根" / "目录为起点的完整路径,以所要到的目录为终点;
相对路径——相对于当前的目录的路径,相对路径是以当前目录 .为起点,以所要到的目录为终点。

10、Shell 变量:所谓变量就是计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号,而这些符号将用于不同的运算处理中。变量的作用域即变量的有效范围(比如一个函数中、一个源文件中或者全局范围),在该范围内只能有一个同名变量。一旦离开则该变量无效。
使用declare 变量名可以创建一个新变量,变量名只能是英文字母、数字或者下划线,且不能以数字作为开头。然后再使用 = 号赋值运算符,Shell 中的赋值操作 = 两边不可以输入空格,否则会报错;读取变量的值使用命令 echo $变量名( $ 符号用于表示引用一个变量的值)。

11、与搜索相关的命令

  • whereis——这个搜索很快,因为它并没有从硬盘中依次查找,而是直接从数据库中查询,只能搜索二进制文件(-b)、man 帮助文件(-m)和源代码文件(-s)。
  • locate——不是内置命令,通过查询 /var/lib/mlocate/mlocate.db 数据库来检索信息,搜索结果更加全面,系统会使用定时任务每天自动执行 updatedb 命令来更新数据库,有时候刚添加的文件可能会找不到,需要手动执行一次 updatedb 命令。如果想只统计数目可以加上 -c 、-i 参数,可以忽略大小写进行查找,whereis 使用 -b、-m、-s。
  • which——是 Shell 内建的一个命令,通常使用 which 来确定是否安装了某个指定的程序,因为它只从 PATH 环境变量指定的路径中去搜索命令并且返回第一个搜索到的结果。
  • find——不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。find 命令的路径作为第一个参数, 基本命令格式为 find [path][option] [action]

12、数字雨效果:实现这样的效果只需要一个命令 cmatrix ,用以下命令来进行预装并修改颜色预设为黑底绿字,然后输入 cmatrix 开始运行,F11 可以全屏显示。

$ sudo apt-get update
$ sudo apt-get install cmatrix

$ cmatrix -C red 用来改变代码颜色
或者
$ sudo apt-get install caca-utils
$ cacaview <pic_file>
$ cacademo	数字雨
$ cacafire	红色火堆

在这里插入图片描述
13、内建命令——是 shell 程序的一部分,其中包含一些比较简单的 Linux 系统命令,这些命令写在 bash 源码的 builtins 里面,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中,而且解析内部命令 shell 不需要创建子进程,因此执行速度比外部命令快。比如:history、cd、exit 等等,另help 命令只能用于显示内建命令的帮助信息。
外部命令——Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,在需要时才将其调入内存,虽然不包含在 shell 中,但是命令执行过程是由 shell 程序控制的。外部命令是在 bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin 等等。比如:ls、vi 等。

14、Shell 也有||和&&, 这两个符号除了可用于表示逻辑与和逻辑或之外,还可以通过实现命令执行顺序的简单控制。&&用来实现选择性执行,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回 0 则执行后面的,否则不执行;||与&&控制效果相反,当上一条命令执行结果为 ≠0($?≠0)时则执行它后面的命令。

15、管道:是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信),表现出来的形式是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。管道又分为匿名管道和命名管道,在使用一些过滤程序时经常会用到的就是匿名管道,在命令行中由|分隔符表示,|在前面的内容中我们已经多次使用到了。具名管道简单的说就是有名字的管道,通常只会在源程序中用到具名管道。

16、重定向:将原本要输出到标准输出的数据重定向到一个文件中,>和>>操作分别是将标准输出导向一个文件或追加到一个文件中。Linux提供了三个特殊设备,用于终端的显示和输出,分别为stdin(标准输入,对应于终端的输入),stdout(标准输出,对应于终端的输出),stderr(标准错误输出,对应于终端的输出)。管道默认是连接前一个命令的输出到下一个命令的输入,而重定向通常是需要一个文件来建立两个命令的连接。

17、文件描述符:在形式上是一个非负整数,实际上是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表,当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开,但是文件描述符这一概念往往只适用于 UNIX、Linux 这样的操作系统。

18、正则表达式的数量限定
①+表示前面的字符必须出现至少一次(1 次或多次),例如,“goo+gle”,可以匹配"gooogle",“goooogle"等;
②?表示前面的字符最多出现一次(0 次或 1 次),例如,“colou?r”,可以匹配"color"或者"colour”;
③* 星号代表前面的字符可以不出现,也可以出现一次或者多次(0 次、或 1 次、或多次),例如,“0*42”可以匹配 42、042、0042、00042 等。

19、软件安装的四种方式:在线安装、从磁盘安装 deb 软件包、从二进制软件包安装、从源代码编译安装。

20、程序(procedure):程序是执行一系列有逻辑、有顺序结构的指令,是一个静止的实体,可以帮我们达成某个结果。
进程(process):进程是程序在一个数据集合上的一次执行过程,在早期的 UNIX、Linux 2.4 及更早的版本中,它是系统进行资源分配和调度的独立基本单位,具有以下的特性:

  • 动态性:进程的实质是一次程序执行的过程,有创建、撤销等状态的变化,而程序是一个静态的实体。
  • 并发性:进程可以做到在一个时间段内,有多个程序在运行中,程序只是静态的实体,所以不存在并发性。
  • 独立性:进程可以独立分配资源,独立接受调度,独立运行。
  • 异步性:进程以不可预知的速度向前推进。
  • 结构性:进程拥有代码段、数据段、PCB(进程控制块,进程存在的唯一标志),正是因为有结构性,进程才可以做到独立运行。

线程(thread):是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程中几乎不包含系统资源,所以执行更快、更有效率。

21、并发:在一个时间段内,宏观来看有多个程序都在活动,有条不紊的执行(每一瞬间只有一个在执行,只是在一段时间有多个程序都执行过);
并行:在每一个瞬间,都有多个程序都在同时执行。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值