整合汇总Linux常见指令和基础知识

整合汇总Linux常见指令和基础知识

[引言] Linux 为什么比 Windows更好用

其实通过搜索引擎可以搜到关于Linux与Windows比较的很多信息,但是如果正式的从生产力开发的角度出发进行讨论,可以聊一些几点:

  • 从开源角度考虑,linux是开源而windows是闭源的
    • 开源意味着免费,可扩展
  • 从权限的角度考虑,linux是典型的多用户操作系统,权限管理更加清晰
    • 可以给用户、用户组进行详细的赋权和去除权限
  • 可以利用内核模块的动态装载:
    • 将内核映象的尺寸保持在最小,并具有最大的灵活性;
    • 便于检验新的内核代码,而不需重新编译内核并重新引导。

[基础操作]

  • pwd print working directory, 显示当前工作路径
  • cd change directory, 修改当前工作路径,后跟相对路径or绝对路径
    • cd ./some_dir/ 进入当前文件夹内的 some_dir 子文件夹, 即一个.代表依旧在当前文件夹下
    • cd ../some_dir 进入当前文件夹的父文件夹,然后进入父文件夹的 some_dir 子文件夹,即..代表进入当前文件夹的父文件夹,可套娃,cd ../../some_dir代表进入父文件夹的父文件夹,再进入some_dir
    • cd - 返回上一次操作的工作路径
  • mkdir make directory 创建一个文件夹,后跟文件夹名称
  • touch 创建文件,比如 torch a.txt
  • ls 显示当前文件夹下的所有文件(不包含隐藏文件)
    • ls -a 显示包含隐藏文件在内的所有文件,同时会显示 ...
    • ls -l 此命令与 ll 相同,显示更加详细的信息 (每一部分是什么意思,在下一节进行详细介绍)
  • watch -n 1 nvidia-smi: 每秒刷新并打印 nvidia-smi 的信息
  • ps -ef: 查看当前正在运行的程序状态(ps=process status, -e=-A, -f=显示详细信息, 请配合grep章节学习)

[权限管理]

  • ls -l 详细解析
    • 黄色部分为 文件类型 + 权限符号
      • 第一位字母d或者-分别表示当前文件为dir或者普通文件
        后续9个符号三个一组,表示一组权限符号 比如 rwxr-xr-x
      • rwx分别是指read/write/exec权限,- 表示无权限
      • 9个字符一共分为三组,分别是 当前文件所属用户权限、所属用户所在用户组权限、其他用户权限
      • 与chmod相对应
    • 绿色部分表示当前文件的链接数量,*如果是文件夹,则表示文件夹内的文件数量
    • 蓝色部分表示当前文件所属的用户与用户组
    • 紫色部分表示当前文件的基本信息(大小、创建日期)
    • 白色部分表示当前文件(文件夹)的名称,若存在链接,则会同时显示链接的文件

整合汇总Linux常见指令和基础知识_第1张图片

  • chmod 数字 修改权限

    • 权限分为三大类,即读®, 写(w) 与 可执行(e), 其对应的数值分别是4、2、1
    • 举例 chmod 777, 与上述 ll 指令相对应,每个数字分别对应一个用户(用户组权限),7=4+2+1则该指令表示给文件所有者、文件所有者所在用户组以及其他用户赋予可读可写可执行的权限
      • 若希望修改文件夹与其所有子文件的权限,则需要使用 chmod 777 -R 指令,其中 -R 表示递归的赋予文件夹内所有文件权限
    • 再举例 chmod 755, 5=4+1, 则表示用户组与其他用户仅赋予可读与可执行权限
  • 直接创建文件or文件夹的默认权限

    • 当通过 mkdir 创建目录时,目录为 777 权限, touch 直接创建文件时,文件为 666 权限
      • 实际上通过上述操作你会发现文件夹权限为775,文件权限为664,因为存在 umask,umask 指令即可查看umask信息
      • umask 默认为 0002,这是一个掩码,忽略第一位,即为002,实际权限=默认权限减去umask
      • 那么可以通过指令 umask 权限掩码 修改umask实现对创建文件和文件夹的默认权限进行修改,避免创建文件后单独再进行修改权限的操作
  • chmod 字母+-字母

    • 加号表示赋权,减号表示去除权限,前一个字母用于指定用户与用户组,一般为a(all), u(user), g(group), o(other);后一个字母一般为读写执行三个字母
    • 举例 chmod a+x, 即给所有用户(all) 添加(+) 可执行权限(x)
    • 特例 chmod u+s, 是给当前用户一个超级管理员权限,从而使得当前用户能以类似root的身份去操作文件

[文件打印基本操作]

这一部分主要是介绍读取日志的操作
ubuntu 系统日志一般保存在 /var/log/

  • cat a.txt: 直接读取文件a.txt的所有信息并打印出来
    • tac a.txt: tac = 倒着的cat,即从后往前逐行读取并打印出来
  • head a.txt: 从头开始读取文件a.txt 并打印出来,默认打印10行
    • tail a.txt: 从尾部开始逐行读取a.txt
    • 常见操作: tail -f a.txt, 当a.txt 正在不停增加信息的时候,这个指令能动态刷新并打印出最新的a.txt文件信息(类似 watch -n 指令),如果想要打印更多行,比如1000行,则使用 tail -100f a.txt
  • more a.txt: 逐页读取文件并打印出来,使用回车键读取下一行,使用空格键读取下一页, 只可以向后翻页不可向前翻页
    • less a.txt: 类似 more 指令,但是可以向前翻页

[查找搜索]

主要介绍grep指令,并配合管道概念进行介绍

  • grep keyword file, 查找file中包含keyword的行并打印出来,其中keyword可以使用通配符
    管道的诞生: 很多时候,程序a生成的数据需要给程序b使用,程序a如何把数据发送给程序b呢,比较简单的方法是程序a生成文件,程序b读取文件,但是这会受到硬盘io的限制,于是管道应运而生
  • 程序a | 程序b,通过符号 | 就能将程序a产生的数据给程序b
    • 比如我们读取文件hello.txt, 然后调用grep指令查找文件内是否有he开头的文本,则可以使用指令 cat hello.txt | grep 'he*', 当然这只是简单的例子,这行命令等同于 grep 'he*' hello.txt
    • 我们也可以用管道查找当前文件夹下是否有符合条件的文件,比如查看当前文件夹下是否有 hello.txt 则可以使用指令 ls | grep 'hello.txt'
    • 当我们需要查看某个程序是否正在运行,则可以使用 ps -ef | grep 程序名 查看其状态

你可能感兴趣的:(linux,运维,服务器)