Linux学习笔记

博主原创文章,转载请说明出处,但是不说我也管不了你🏳️

1. Linux分类

大概有:RedHat和DeBian两大类以及其他类。RedHat下的CentOS稳定,更新少,yum安装管理,安装软件包为.rpm;DeBian下的Ubuntu更新快,apt安装管理,图形界面友好,新手友好,安装软件包为.deb

注:Shell是用户与操作系统内核的接口(命令行接口,除此之外还有编程接口API),Linux一般默认使用Bash Shell。

2. 目录结构规范

①系统启动必须:

  • /boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
  • /etc:存放所有的系统需要的配置文件子目录列表,更改目录下的文件可能会导致系统不能启动。
  • /lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
  • /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中

②指令集合:

  • /bin:存放着最常用的程序和指令
  • /sbin:只有系统管理员能使用的程序和指令。

③外部文件管理:

  • /dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
  • /media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
  • /mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

④临时文件:

  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
  • /lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
  • /tmp:这个目录是用来存放一些临时文件的。

⑤账户:

  • /root:系统管理员的用户主目录。
  • /home:用户的主目录,以用户的账号命名的。
  • /usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • /usr/bin:系统用户使用的应用程序与指令。
  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:内核源代码默认的放置目录。

⑥运行过程中要用:

  • /var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
  • /proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。

⑦扩展用的:

  • /opt:默认是空的,我们安装额外软件可以放在这个里面。
  • /srv:存放服务启动后需要提取的数据(不用服务器就是空)

3. 常用文件管理命令

  • 通配符
    • *:0个或任意字符
    • ?:一个字符
    • []:匹配一组单个字符,示例[0-9][a-z],似乎只能这么勇
  • ls,查看文件信息
    • ls -R:递归列出子文夹
    • ls -m:逗号分隔显示的内容列表
    • ls -a:显示所有的文件内容,包括隐藏文件
    • ls -F:显示文件类型
    • ls -l:显示文件的权限、所有者等等详细信息
  • pwd:print working directory,显示当前工作目录的完整路径
  • cd -:返回以前的目录
  • mkdir [*filename]:创建一个空文件夹,默认是所有者读、写、以及执行的权限,而其他任何人则只有读、执行的权限
  • cp [*a_file_uri] [*b_file_uri]:复制文件到指定位置,并指定名称
    • cp -i:复制文件时遇到重复文件给予确认警告
    • cp -R:(递归)复制目录
    • cp -a:完全复制(archive mode),会复制文件的所有属性,同时不会复制软链接里真的得文件内容,加快复制速度
  • mv [*a_file_uri] [*b_file_uri]:移动文件到另一个指定位置,并使用特定文件名
  • rm:删除文件,可以使用空格隔开多个或者直接使用通配符,若删除带有空格的文件,可使用双引号括住
    • rm -i:在每次删除文件时都给与警告提示
    • rm -Rf:R为递归操作,f为force强制的意思,即强制递归删除一个文件,可用于删除文件夹
  • su -l [username]:切换用户,包括环境变量。注意默认是切换到root用户
  • man -f [*command_name]:显示一个命令的使用描述
  • cat:链接多个文件的内容并输出到终端【还有个tac,作用是反向拼接,把猫倒过来了】,这是一次性输出完到最后一行,没有分页功能
    • cat -n:给输出加上行号
  • less:进入less模式分页查看文本文件,类似vim编辑器,可以使用/搜索文本,支持正则表达式
  • headtail:查看文件前n行或后n行内容,默认10行
    • head -n [*一个数字x]:查看前x行
    • tail -n [*一个数字x] -f:查看后x行,且不断更新内容,f即follow
  • chgrp [*用户组的名称或者数字] 文件:修改文件所属用户组,加个-R就是递归修改目录
  • chmod [ugo][+-=][rwx]:修改各个控制列表的权限。==(注意:linux中有三个控制列表,分别是user、group、others。)==,+-=分别表示增加权限,减少权限和直接修改权限为指定权限。示例:chmod go=r,修改组和其他用户的权限为可读。
  • chmod [0-7] [0-7] [0-7]:以八进制形式实现修改各个控制列表的权限的功能。三个数字分别代表三个组的rwx权限情况。示例:chmod 744,修改组和其他用户的权限为可读,但是如果不想动user的权限怎么办?chatgpt说先看然后再改成一样的
  • zipgzip:压缩文件
    • unzipgunzip:解压文件
  • locate [*文件关键字]:从文件名数据库中搜索相关文件,嘎嘎快,但是搜不到新建的文件,必须得刷新
  • grep [*正则表达式] [*文件名]:从文本文件中搜索关键字并输出
  • find [*文件路径] -name [关键字]:根据关键字来搜索文件或文件夹,即时搜索(默认递归搜索),不依赖文件名数据库
  • dpkg:Debian的包管理工具
    • dpkg -i:安装
    • dpkg -r:卸载
  • apt:牛逼的包管理工具
    • apt update:更新安装包数据库,需要root
    • apt upgrade:更新所有软件,需要root
    • apt install [*package_name]:安装指定包,需要root

3.1 总结

增:mkdirvimcpzip与gzip

删:rmmv

改:chgrpchmodcp

查:locategrepfind

看:catheadtail

4. 常用系统资源管理命令

  • ps:显示进程信息
    • ps aux:显示所有用户(a)的进程信息
    • ps U [*username]:显示指定用户的进程信息
  • ss -a:查看所有状态链接的套接字状态(套接字就是端口后面的东西)

5. 常用网络管理命令

  • ifconfig:查看网络接口配置
  • route:查看路由表
  • ssh [*username]@[*ip_address]:远程连接到另一台计算机。ssh:secure shell
  • sftp [*username]@[*ip_address]:连接到另一台计算机,并与本地计算机相互传输文件

6. 命令进阶

  • 组合命令
    • ;:命令栈方式,用分号隔开命令,依顺序运行,不论前一个命令是否执行成功
    • &&||:逻辑判断链方式,&&表示前一个命令执行成功后一个才能执行,||表示前一个命令执行失败后一个才能执行
  • stdinstdoutstderr,三种标准输入输出
    • |:把前一个命令的stdout从默认终端重定向至下一个命令的stdin,这是一个管道控制命令。注意:vim不能使用这个命令,因为vim会接管整个shell。示例:ps -Al | grep vim
    • >:把前一个命令的stdout从默认终端重定向输出到指定文件的stdin,如果文件不存在则创建,如果已经存在则会覆盖原有文件内容。示例:ls -l > niubi.txt
    • >>:把前一个命令的stdout从默认终端输出重定向到指定文件的stdin,如果文件不存在则创建文件,若存在则以追加的形式输出到文件中
    • <:把一个文件的stdout重定向到前一个命令的stdin中。示例:echo < niubi.txt,终端会打印niubi.txt的内容