首页 > 系统相关 >linux 常用知识汇总(非常全面!)

linux 常用知识汇总(非常全面!)

时间:2024-08-10 11:26:32浏览次数:15  
标签:文件 环境变量 知识 汇总 用户 filename linux 权限 目录

1、Linux文件系统概述

Linux文件系统是指操作系统用来控制文件如何存储和检索的结构和逻辑。

文件系统结构
  • 根目录: /
    • Linux文件系统从根目录(/)开始,这是所有文件和目录的起点。
  • 目录结构: Linux使用层次化目录结构,每个目录包含文件和子目录。
  • 挂载点: 各种文件系统通过挂载点(mount point)集成到文件系统的层次结构中。
文件类型
  • 普通文件: 包含数据的文件(文本文件、二进制文件等)。
  • 目录文件: 也称为文件夹,包含其他文件或子目录。
  • 链接文件: 指向另一个文件的指针,可以是硬链接或软链接。
  • 设备文件: 代表设备的特殊文件,分为字符设备文件和块设备文件。
  • 管道文件: 用于进程间通信的文件。
根目录概述

在Linux操作系统中,根目录(/)是整个文件系统的起点。所有文件和目录都是从根目录开始的,根目录下包含了系统所需的各种子目录,每个子目录都有其特定的用途。

根目录下的常用文件夹及其用途 (仅作了解)
  1. /bin:

    • 存放基本命令的二进制文件,如ls, cp, mv, bash等,系统启动和单用户模式下需要使用这些命令。
  2. /etc:

    • 存放系统配置文件和子目录,如网络配置文件、用户账户信息、服务配置文件等。
  3. /home:

    • 每个用户的主目录的默认位置,例如用户user的主目录为/home/user。用户的个人文件和设置通常存放在这里。
  4. /lib:

    • 存放系统运行所需的共享库文件和内核模块。包括程序执行时依赖的共享库文件,如/lib/libc.so.6,头文件等。
  5. /var:

    • 存放系统运行时需要改变的数据文件,如日志文件、缓存文件、邮件队列等。
  6. /dev:

    • 包含设备文件,用于访问硬件设备,例如磁盘、终端、音频设备等。每个设备都表示为一个文件,如/dev/sda表示第一个SCSI硬盘。
  7. /proc:

    • 虚拟文件系统,包含系统进程和内核信息的虚拟文件。提供系统信息,如内存、CPU等。
  8. /root:

    • 超级用户(root)的主目录。与普通用户的主目录不同,位于/home之外。
  9. /srv:

    • 存放服务(service)相关的数据,如HTTP服务器的网页文件、FTP服务器的数据等。
  10. /tmp:

    • 存放临时文件,系统重启后该目录下的文件会被删除。
  11. /usr:

    • 存放用户应用程序和文件,包括二进制文件、库文件、文档等。包含子目录:
      • /usr/bin: 存放用户命令的二进制文件。
      • /usr/lib: 存放用户命令的库文件。
      • /usr/local: 存放本地安装的软件。
根目录结构图

下面是一张根目录下常用文件夹的结构图:

/
├── bin
├── etc
├── home
│   ├── user1
│   └── user2
├── lib
├── proc
├── root
├── dev
├── srv
├── tmp
├── usr
│   ├── bin
│   ├── lib
│   ├── local
│   │   ├── bin
│   │   └── lib
│   └── share
├── var
    ├── log
    ├── mail
    ├── cache
    └── tmp

2、路径

路径是指文件或目录在文件系统中的位置。路径分为绝对路径和相对路径。

绝对路径

绝对路径是从根目录(/)开始,逐级指定文件或目录的路径。绝对路径总是唯一的,并且不依赖于当前工作目录。

  • 示例: /home/user/docs/file.txt

在这个例子中,路径从根目录开始,依次经过homeuserdocs目录,最后指向file.txt文件。

相对路径

相对路径是从当前工作目录开始,逐级指定文件或目录的路径。相对路径依赖于当前工作目录,可以使用相对路径操作文件和目录而不需要知道它们的绝对位置。

  • 示例:
    • 当前目录: /home/user
    • 相对路径: docs/file.txt

在这个例子中,相对路径docs/file.txt指向的是/home/user/docs/file.txt文件。

特殊目录符号
  • .: 当前目录
  • ..: 上一级目录
  • ~: 当前用户的主目录(通常是/home/username

3、基本命令

1. ls - 列出目录内容
  • ls:显示当前目录下的文件和目录。
  • ls -l:以长格式显示文件和目录的详细信息,包括权限、所有者、文件大小和修改时间。
  • ls -a:显示所有文件和目录,包括隐藏文件(以.开头的文件)。
  • ls -lh:以长格式和人类可读的格式显示文件大小(例如,KB、MB)。
  • ls -R:递归地列出所有子目录中的文件。
2. cd - 切换目录
  • cd:返回用户的主目录。
  • cd /path/to/directory:切换到指定目录。
  • cd ..:返回上一级目录。
  • cd -:返回到上一个工作目录。
3. mkdir - 创建目录
  • mkdir directory_name:创建一个名为directory_name的新目录。
  • mkdir -p /path/to/directory:递归创建目录路径中的所有目录(如果它们不存在)。
4. touch - 创建文件
  • touch filename:创建一个名为filename的新文件,或者如果文件已存在,则更新其修改时间。
5. pwd - 显示当前目录
  • pwd:显示当前工作目录的绝对路径。
6. cat - 连接并显示文件
  • cat filename:显示filename文件的内容。
  • cat file1 > file2:将file1的内容复制到file2(覆盖)。
  • cat file1 >> file2:将file1的内容追加到file2
7. cp - 复制文件或目录
  • cp source destination:将文件source复制到destination
  • cp -r source_directory destination_directory:递归复制目录及其内容。
  • cp -i source destination:在覆盖文件时提示确认。
8. mv - 移动或重命名文件或目录
  • mv source destination:将文件或目录source移动到destination,或者重命名为destination
  • mv -i source destination:在覆盖文件时提示确认。
9. rm - 删除文件或目录
  • rm filename:删除filename文件。
  • rm -r directory:递归删除目录及其内容。
  • rm -f filename:强制删除文件而不提示确认。
  • rm -rf directory:强制递归删除目录及其内容而不提示确认。
10. 重启系统
  • sudo reboot
11. 关闭某个进程
  1. 找出进程的 PID(进程ID)

    # ps aux 和 | 下面会讲
    ps aux | grep tmux 
    或
    pgrep process_name
    
  2. 使用 kill 命令来终止进程。

    kill PID # 发送默认关闭的请求
    kill -9 PID # 强制关闭
    

4、常用命令

1. chmod - 更改文件权限

权限可以用两种方式表示:符号表示法和八进制表示法。

符号表示法
  • r:读权限(read)
  • w:写权限(write)
  • x:执行权限(execute)

使用符号表示法时,权限可以分配给用户(u)、组(g)和其他人(o)。

八进制表示法
  • 4:读权限(read)
  • 2:写权限(write)
  • 1:执行权限(execute)
符号表示法示例
  • 给文件所有者添加读、写和执行权限

     chmod u+rwx filename
    
  • 给文件组添加读和执行权限

    chmod g+rx filename
    
  • 给其他人添加读权限

    chmod o+r filename
    
  • 给所有用户(用户、组和其他人)添加读、写和执行权限

    chmod a+rwx filename
    chmod +rwx filename # 默认是给所有的用户
    
八进制表示法示例
  • 给文件所有者、组和其他人添加读、写和执行权限

    chmod 777 filename
    

    这里的 777 表示用户、组和其他人都拥有读(4)+写(2)+执行(1)= 7 的权限。

  • 给文件所有者添加读、写和执行权限,组和其他人添加读和执行权限

    chmod 755 filename
    

    这里的 755 表示用户拥有读(4)+写(2)+执行(1)= 7 的权限,而组和其他人拥有读(4)+执行(1)= 5 的权限。

2. chown - 更改文件所有者

用于更改文件或目录的所有者。

  • chown user:group filename:将文件filename的所有者改为user,组改为group
  • chown -R user:group directory:递归更改目录及其内容的所有者。

3. find - 查找文件

用于在目录中搜索文件。

  • find /path -name filename:在/path目录下查找名为filename的文件。
  • find /path -type d:在/path目录下查找所有目录。
  • find /path -type f -name "*.txt":在/path目录下查找所有扩展名为.txt的文件。

4. grep - 搜索文本

用于在文件或标准输入中搜索匹配的文本。

  • grep "pattern" filename:在filename中搜索pattern字符串。
  • grep -r "pattern" /path:递归搜索目录/path中的pattern字符串。
  • grep -i "pattern" filename:在filename中搜索pattern字符串(忽略大小写)。
  • grep -v "pattern" filename:在filename中显示不包含pattern的行。

5. w - 显示当前登录用户及其活动信息

用于查看当前登录的用户及其相关的活动信息。

  • w:显示当前系统中的登录用户及其活动信息。
  • w -h:不显示标题行,只显示用户的活动信息。

6. wc - 统计文件中的字数、行数和字节数

wc(word count)命令用于计算文件中的行数、字数和字节数。

  • wc filename:显示filename文件的行数、字数和字节数。
  • wc -l filename:仅显示filename文件的行数。
  • wc -w filename:仅显示filename文件的字数。
  • wc -c filename:仅显示filename文件的字节数。

7. ag - 超速文件内容搜索工具

ag(the silver searcher)是一个用于快速搜索文件内容的工具,类似于 grep 但速度更快。

  • ag <关键字>:在当前目录及其子目录中搜索包含关键字的文件内容。
  • ag -i <关键字>:不区分大小写地搜索关键字。
  • ag -w <关键字>:匹配整个单词。
  • ag --ignore <模式>:忽略匹配指定模式的文件或目录。

8. xargs - 从标准输入构建并执行命令

xargs 命令用于将标准输入转换为命令行参数,通常用于与其他命令结合使用。

  • echo "file1 file2 file3" | xargs rm:删除文件 file1file2file3
  • find . -name "*.txt" | xargs grep "hello":在当前目录及其子目录中的所有 .txt 文件中查找包含 “hello” 的行。
  • ls | xargs -I {} mv {} /backup/:将当前目录中的所有文件移动到 /backup/ 目录。
  • find . -type f -print0 | xargs -0 rm -f:安全地删除当前目录及其子目录中的所有文件(处理文件名中包含空格的情况)。

5、 系统信息的命令

1. top - 实时显示系统进程信息

用于动态查看系统中运行的进程及其资源使用情况。

  • top:显示当前系统中的进程列表,按CPU使用率排序。
  • top -u <用户名>:显示指定用户的进程信息。
  • top -p <PID>:仅显示特定进程的信息。

2. df - 报告文件系统磁盘空间使用情况

用于查看文件系统的磁盘使用情况。

  • df -h:以人类可读的格式(如GB,MB)显示磁盘使用情况。
  • df -T:显示文件系统类型。
  • df -i:显示文件系统的inode使用情况。

3. free - 显示内存使用情况

用于查看系统内存和交换空间的使用情况。

  • free -h:以人类可读的格式显示内存和交换空间使用情况。
  • free -m:以MB为单位显示内存使用情况。
  • free -g:以GB为单位显示内存使用情况。

4. du - 估算文件和目录的磁盘使用空间

用于查看目录或文件的大小。

  • du -h:以人类可读格式显示目录或文件的大小。
  • du -sh <目录或文件>:显示特定目录或文件的总大小。
  • du -a:显示目录下所有文件和目录的大小。

5. ps aux - 显示系统中所有进程的详细信息

用于查看系统中的所有进程及其状态。

  • ps aux:列出系统中所有进程及其详细信息。
  • ps aux | grep <进程名>:过滤并显示特定进程的信息。
  • ps aux --sort=-%mem:按内存使用率降序排列进程。

2. tree - 显示目录结构的树形图

tree 命令用于以树形结构显示目录及其子目录和文件。

  • tree:以树形结构显示当前目录的内容。
  • tree <目录名>:以树形结构显示指定目录的内容。
  • tree -L <层级>:限制显示的目录层级深度。
  • tree -d:仅显示目录,不显示文件。

6、管道

定义

管道是Linux中用来将一个命令的输出作为另一个命令的输入的机制。它允许将多个命令串联起来执行,使数据在命令之间传递。管道使用竖线符号 | 来表示。

管道的用法
command1 | command2 | command3

在上面的例子中,command1 的输出会传递给 command2,然后 command2 的输出会传递给 command3

常用管道命令:(获取某些文件一共有多少行)

# 获取以.py结尾的文件内容一共有多少行
find . -name "*.py" | xargs wc -l | tail -n 1

1. find . -name "*.py":
   find 命令在当前目录(用 . 表示)及其子目录中查找所有以 .py 结尾的文件。
   -name "*.py" 指定匹配以 .py 结尾的文件。

2. xargs wc -l:
   xargs 将前一个命令的输出(即所有找到的 .py 文件路径)作为参数传递给后一个命令。
   wc -l 统计每个文件的行数,并输出每个文件的行数以及总行数。

3. tail -n 1:
   wc -l 的输出会列出每个文件的行数,最后一行是总行数。tail -n 1 命令提取 wc -l 的最后一行,显示总行数。

7、环境变量

定义

环境变量是操作系统中一类用于存储有关操作系统环境的信息的变量。它们是由操作系统提供和维护的,能够影响程序的行为和系统的操作。环境变量在不同操作系统中存在,尤其在UNIX和Linux系统中被广泛使用。

作用

环境变量的作用主要包括:

  1. 存储系统信息:例如当前用户的主目录、系统路径等。
  2. 配置程序行为:某些程序可以通过读取环境变量来决定其运行方式。
  3. 简化操作:使用环境变量可以简化
如何查看当前环境变量

你可以使用以下命令来查看当前系统中已设置的环境变量:

  • env:显示当前用户的环境变量。这是最常用的命令,可以列出所有你在当前环境中可用的变量。

    env
    
  • set:显示当前 shell 中的所有变量,包括环境变量和 shell 的局部变量。使用 set 可以看到更多的信息。

    set
    
  • export:显示当前 shell 中已导出的环境变量。这些变量可以被启动的子进程继承。

    export
    
  • echo $变量名:查看某个具体环境变量的值。例如,查看 PATH 环境变量的值:

    echo $PATH
    
修改环境变量

有时候你可能需要修改或增加某个环境变量,比如将一个新的程序路径添加到 PATH 中。这个修改可以在当前会话中生效,也可以永久生效。

1. 临时修改环境变量
  • 直接在命令行中修改,这种修改只对当前会话有效。

    示例:将 /usr/local/bin 添加到 PATH 中:

    export PATH=$PATH:/usr/local/bin
    

    修改后,/usr/local/bin 会被加入到系统搜索可执行文件的路径列表中。但如果你关闭终端,修改就会失效。

2. 永久修改环境变量
  • 如果你希望环境变量的修改在每次启动 shell 时都生效,可以将修改写入到用户的配置文件中,比如 ~/.bashrc

    步骤

    1. 打开 ~/.bashrc 文件(这个文件在用户的主目录下,存储着 shell 启动时加载的配置)。

      nano ~/.bashrc
      
    2. 将你希望修改的命令添加到文件的末尾。比如,要永久添加 /usr/local/binPATH 中,添加以下行:

      export PATH=$PATH:/usr/local/bin
      
    3. 保存文件并退出编辑器(在 nano 中按 Ctrl + O 保存,Ctrl + X 退出)。

    4. 使修改立即生效,不用重新启动 shell:

      source ~/.bashrc
      
3. 为什么要放到 .bashrc 中?
  • .bashrc 是每次启动 Bash shell 时自动执行的脚本。将环境变量的修改写入 .bashrc,可以确保每次启动 shell 时,环境变量都会按你的设置生效。
  • 示例场景
    • 每次登录到系统时,shell 都会加载 .bashrc,因此你定义的环境变量会自动应用。
    • 当你通过 ssh 登录远程服务器时,~/.bashrc 也会被执行。
    • 如果你使用 tmux 开启新窗口或者面板,~/.bashrc 中的设置也会生效。
常见的环境变量

以下是一些常见的环境变量及其用途:

  • HOME:用户的家目录路径,比如 /home/yourname。很多程序使用这个变量来存放配置文件或日志。

  • PATH:可执行文件搜索路径,系统在执行命令时会按顺序搜索这些目录。使用 : 作为分隔符。加入一个新的路径后,系统会在这个路径下寻找命令。

  • LD_LIBRARY_PATH:指定动态链接库的搜索路径,类似 PATH,但用于寻找共享库文件。

  • C_INCLUDE_PATHCPLUS_INCLUDE_PATH:用于 C 和 C++ 编译器寻找头文件的路径。

  • PYTHONPATH:Python 解释器搜索模块的路径,如果你有自定义模块,可以将其路径加入到 PYTHONPATH 中。

  • JAVA_HOME:指定 JDK 的安装路径,很多 Java 工具和框架会使用这个变量来寻找 Java 编译器和库。

  • CLASSPATH:Java 查找类文件和库的路径。

标签:文件,环境变量,知识,汇总,用户,filename,linux,权限,目录
From: https://blog.csdn.net/m0_74065705/article/details/140808157

相关文章

  • Linux服务管理-Nginx进阶
    通常会通过rewrite将用户的80请求转化为443请求,也就意味着Nginx需要去做虚拟主机,一个80端口的虚拟主机和一个443端口的虚拟主机,当访问80端口的虚拟主机时返回一个信息让用户去访问443端口的虚拟主机。......
  • Linux Shell编程--正则表达式、grep、sed、awk
    前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除!一、正则表达式1、正则表达式定义1.1、简介正则表达式是一种强大的文本模式匹配工具,用于搜索、替换或分割字符串。在Shell脚本中,正则表达式通常与grep、sed和awk等工具一起使用。1.2、层次分类基......
  • Linux磁盘挂载windows文件夹
    一、mountmount命令用于加载文件系统到指定的加载点。此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因你将光盘插为入cdrom中,Linux并不会自动挂载,必须使用Linuxmount命令来手动完成挂载。语法mount(选项)(参数)选项-V:显示程序版本;-l:显示已加载的文件系统列表;-h:显......
  • 2024最全最新VMWare以及Linux配置(含yum失效解决方案)
    血泪教训浓缩的精华配置、报错解决(解决99%问题) 目录1.Linux环境搭建1.1安装VMWare1.1.1卸载老版本VMWare(如果有的话) 1.1.2开始安装VMware1.2创建虚拟机1.3安装Centos71.4设置虚拟机快照1.5安装远程连接SSH客户端 重要:新的yum镜像源需要配置(几乎人人都要配置,必......
  • shell的相关知识(变量、脚本定义)
    一、shell的相关知识:1、对于shell编程语言大体分为:机器语言、汇编语言、高级语言2、shell变量类型:事先确定数据的存储格式和长度shell变量分为:字符型、数值型数值型又分为:整型、浮点型(在shell中一般不使用浮点型数值进行操作)3、shell:弱类型编程语言强:变量在使用前,必须事先......
  • Linux中DD命令详解
    Linux中DD命令详解1.dd命令简介    功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能......
  • Linux系统中关闭“刺耳”的报警声音
    Vmware上装的Linux,在Shell下由于输错命令或是种种原因,会发出"嘟嘟"的报警声,并不是声卡发出的,而是主板的报警,所以不能通过关闭音箱来解决。寝室里经常响起这样的声音非常刺耳,今天在网上找到了解决方法,记下:  将/etc/inputrc中的setbell-stylenone前的#去掉,之后重启系统即可。......
  • linux Centos 6.5 安装桌面环境GNOME
    在某种场合之下,我们使用的Linux还是要选择安装桌面环境的,所以在这里介绍一下如何给没有安装桌面环境的系统安装桌面环境。以Centos6.5为例演示一下如何安装桌面环境。 工具/原料Linux、Centos6.5、GNOME、桌面方法/步骤1一、首先查看系统的运行级别以及是否安装了桌面......
  • OpenSSL相关命令(for Linux)详细介绍
    加密算法:对称加密算法:DES、IDEA、RC2、RC4、AES、Skipjack……非对称加密算法:RSA、DSA、DiffieHellman、PKCS、PGP……单向的HASH算法属于报文摘要算法,虽然有些也出自OpenSSL库。命令操作:1、生成普通私钥:[weigw@TESTsrc]$opensslgenrsa......
  • linux 搭建yum仓库
    yum  Yum(全称为YellowdogUpdater,Modified),能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。自己本身也可以做yum服务器,本身可以根据光盘镜像做yum服务器。搭建yum服务器:(1)本地yum(服务器不能上......