首页 > 系统相关 > Linux命令篇

Linux命令篇

时间:2023-11-24 19:32:04浏览次数:37  
标签:文件 -- 命令 Linux 权限 目录


Linux四大组成部分

Linux Kernel

  • 内核组成部分

    • 硬件设备———管理使用

    • 软件程序———操作软件

    • 系统内存

    • 文件管理———保存、删除、修改内存

  • GUN工具

  • GUI Desktop环境

  • Application 应用

Bash Shell 命令

CLI Terminal

CLI stands for:

  • Command Line Interface
  • Command Line Interpreter
  • Command Line Input
lowell@lowell-virtual-machine:~$ 

如上为我的虚拟机

  • 用户名@机器名:当前所在目录 $表示等待用户输入
  • ~表示用户 home 目录
  • /home 是存放所有用户文件的根目录

Linux根目录解析

Linux 系统中“一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。

~ 在Linux中代表当前用户的主目录,是一个方便引用的快捷方式。

image-20230825223445098

  • /linux 根目录
  • /bin 二进制目录 GUN工具 命令
  • /cdrom 光盘
  • /etc 系统配置文件
  • /home 用户主目录
  • /lib 库目录 存放库文件
  • /lost+found 当系统发生错误时,将一些遗失的片段放置在这个目录下
  • /mnt 挂载(外在的设备和电脑进行连接)目录
  • /proc 伪文件系统
  • /run 运行目录
  • /snap 包管理,软件包安装管理方式
  • /tmp 临时目录
  • /var 可变目录
  • /boot 启动目录
  • /dev 设备目录
  • /media 媒体目录
  • /opt 可选目录
  • /root root用户的主目录 管理员
  • /sbin 系统二进制目录,GNU高级管理员使用的命令或工具
  • /srv 服务目录
  • /usr 用户二进制目录,GNU工具

ls

  • ls 用来显示目标列表,在Linux中是使用率较高的命令
  • ls -l 的缩写就是 ll ,列出当前目录可见文件详细信息(隐藏文件不可见),输出的信息从左到右依次包括文件名、文件类型、权限、硬链接数、所有者名、组名、大小(byte)
  • ls -a 列出目录中所有的文件
  • * 号替代多个符号
  • 号替代一个符号
  • -a--all 列出目录中所有文件,包括以“.”开头的文件
  • -l--format=long--format=verbose除每个文件名外,增加显示文件类型、权限、硬链接数等信息
  • -F--classify--file-type 在每个文件名后附上一个字符以说明该文件的类型

image-20230824162306933

man 是Linux下的帮助指令,通过man+ 指令 可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息

如执行 man ls 后,它会列出 ls 相关命令

image-20230824162500454

推荐:[Linux命令搜索](Linux命令搜索引擎 命令,Linux Linux命令搜索引擎 命令详解:最专业的Linux命令大全,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。 - Linux 命令搜索引擎 (wangchujiang.com))

cd

  • cd 进入命令
  • cd .. 切换到上一层
  • cd - 返回到上一次的工作目录
  • Ctrl+c( kill foreground process ) 发送SIGINT信号给前台进程组中的所有进程,强制终止程序的执行
  • Ctrl+l 清屏

touch

  • 用于把已存在文件的时间标签更新为系统当前的时间(默认方式)
  • 用于创建新的空文件

image-20230824181354008

cp

  • 将源文件或目录复制到目标文件或目录中

  • 源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R 选项

  • 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录

    cp file path	
    
  • -i 覆盖既有文件之前先询问用户

  • -R/r 递归处理,将指定目录下的所有文件与子目录一并处理

    pwd  # 显示当前工作目录
    

image-20230824182121821

mv

  • mv 移动/重命名文件

    mv file_name directory # 将文件移动到指定目录下
    
    mv file1 file2	# 将文件重命名
    
    cd !$	# !$是列出并执行你的命令历史里面最近的一条记录
    

    image-20230824225345097

rm

  • rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变

    # rm 
    -i	# 遍历删除(有提示) -i:删除已有文件或目录之前先询问用户;
    -d	# 直接把欲删除的目录的硬连接数据删除成0,删除该目录;
    -f	# 强制删除文件或目录;直接删除 (无提示)  
    -i	# 删除已有文件或目录之前先询问用户;
    -r 或 -R # 递归处理,将指定目录下的所有文件与子目录一并处理;
    --preserve-root	# 不对根目录进行递归操作;
    -v	#显示指令的详细执行过程。
    
    
    sudo rm -rf /* # 删库跑路,该命令极度危险
    

    Linux中没有回收站

    image-20230824230553828

文件夹操作

Linux中文件夹叫做目录

  • mkdir (make directories) 创建目录

  • mkdir -p 创建多级目录

  • rmdir (remove directories) 删除空目录

    # rmdir
    -p 或 --parents	# 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
    --ignore-fail-on-non-empty	# 此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;
    -v 或 -verboes	# 显示命令的详细执行过程;
    --help	# 显示命令的帮助信息;
    --version	# 显示命令的版本信息。
    

image-20230824231117184

文件类型

  • file用来探测给定文件的类型

  • Windows 文本是txt

  • linux 文本是text

    # file
    -b	# 列出辨识结果时,不显示文件名称
    -c	# 详细显示指令执行过程,便于排错或分析程序执行的情形
    -f <名称文件>	# 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称
    -L	# 直接显示符号连接所指向的文件类别
    -m <魔法数字文件>	# 指定魔法数字文件
    -v	# 显示版本信息;
    -z	# 尝试去解读压缩文件的内容。
    

    image-20230825074217222

lnk链接文件

  • .lnk快捷方式
  • Linux链接文件
  • 符号链接(软链接):指快捷方式 原来的文件/文件夹必须存在
  • 硬链接:指副本 原来的文件/文件夹必须存在
  • 文件路径
    • 绝对路径(全)D:/Software/幕布
    • 相对路径(不全)Software/幕布
  • 文件扩展匹配符 * 多个符号 ? 一个符号
  • 元字符通配符 [ ] : 范围查找
  • 链接文件
    • 符号链接(软链接):快捷方式
    • 硬链接

cat ,more ,less

  • cat 连接多个文件并打印到标准输出,适用于短文本

  • -n, --number 对所有行编号,从1开始编号

    image-20230825090448757

  • more 显示文件内容,每次显示一屏,以全屏方式显示,只能向前浏览文件

    • Space 键:显示文本的下一屏内容。
    • Enter 键:只显示文本的下一行内容。
    • 按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
    • 按H键:显示帮助屏,该屏上有相关的帮助信息。
    • 按B键:显示上一屏内容。
    • 按Q键:退出more命令。

    image-20230825090551329

  • less 分屏上下翻页浏览文件内容

  • less 命令允许用户向前或向后浏览文件,而more命令只能向前浏览。

  • 用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键

  • 浏览文件中输入 / 用于搜索

tail, head

tail / head  # 显示文件的末尾/开头十行  
tail / head -n number # 显示末尾/开头若干行  

image-20230825090748554

Linux终端光标移动技巧

Tab 自动补全 Ctrl + E 跳到行尾 Ctrl + B 光标向左移动 Ctrl + H 删除光标前一个字符 相当于退格 Ctrl + T 把光标前一个字符往后移动 Ctrl + R 搜索之前用过的命令 Ctrl + W 删除光标前一个单词 Ctrl + U 删掉光标前面的内容 Ctrl + K 删掉光标后面的内容技巧

top

top 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具

# top
-b	# 以批处理模式操作;
-c	# 显示完整的治命令;
-d	# 屏幕刷新间隔时间;
-I	# 忽略失效过程;
-s	# 保密模式;
-S	# 累积模式;
-i <时间>	# 设置间隔时间;
-u <用户名>	# 指定用户名;
-p <进程号>	# 指定进程;
-n <次数>	# 循环显示的次数;
-H	# 所有线程占用资源情况。

top 交互命令

在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。

h:显示帮助画面,给出一些简短的命令总结说明;
k:终止一个进程;
i:忽略闲置和僵死进程,这是一个开关式命令;
q:退出程序;
r:重新安排一个进程的优先级别;
S:切换到累计模式;
s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;
f或者F:从当前显示中添加或者删除项目;
o或者O:改变显示项目的顺序;
l:切换显示平均负载和启动时间信息;
m:切换显示内存信息;
t:切换显示进程和CPU状态信息;
c:切换显示命令名称和完整命令行;
M:根据驻留内存大小进行排序;
P:根据CPU使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
w:将当前设置写入~/.toprc文件中。

ps

  • 用于报告当前系统的进程状态。可以搭配kill 指令随时中断、删除不必要的程序。

  • ps (process status) linux最复杂的命令之一,是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的

    ps axo pid,comm,pcpu # 查看进程的PID、名称以及CPU 占用率
    ps -A # 显示所有进程信息
    kill pid # 杀死进程
    ps -aux | grep named # 查看named进程详细信息
    

挂载

当在 Linux 系统中使用硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为“挂载”。如果不挂载,通过Linux系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。

挂载,指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。最典型的插入U盘就是挂载。

挂载作用

Windows下,mount 挂载,就是给磁盘分区提供一个盘符(C,D,E,…)。比如插入U盘后系统自动分配给了它I:盘符其实就是挂载,退U盘的时候进行安全弹出,其实就是卸载 unmount

Linux下,不像Windows可以有C,D,E,多个目录,Linux只有一个根目录/。在装系统时,我们分配给linux的所有区都在/下的某个位置,比如 /home 等等。

插入了新硬盘,分了新磁盘区sdb1。它现在还不属于/。我们虽然可以在一些图形桌面系统里找到他的位置,浏览管理里面的文件,但在命令行却不知怎么访问它的目录,比如无法使用cd或者ls。也无法在编程时指定一个目录对它操作。

使用了 mount /dev/sdb1 ~/Share/,把新硬盘的区 sdb1 挂载到工作目录的 /Share/ 文件夹下,之后访问这个 /Share/ 文件夹就相当于访问这个硬盘2的sdb1分区了。对 /Share/ 的任何操作,都相当于对sdb1里文件的操作。

Linux下,mount挂载的作用,就是将一个设备(通常是存储设备)挂接到一个已存在的目录上。访问这个目录就是访问该存储设备。

引用至:linux挂载的作用_Leonardo_1997的博客-CSDN博客

不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。

命令 mount 用于挂载Linux系统外的文件,如下:

mount /dev/hda1 /mnt	# 将/dev/hda1 挂在 /mnt 之下

df, du

df 命令 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

-a或--all:包含全部的文件系统;
--block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或--human-readable:以可读性较高的方式来显示信息;
-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
-i或--inodes:显示inode的信息;
-k或--kilobytes:指定区块大小为1024字节;
-l或--local:仅显示本地端的文件系统;

image-20230825115131811

du 命令 也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看

-a, --all                              显示目录中个别文件的大小。
-B, --block-size=大小                  使用指定字节数的块
-b, --bytes                            显示目录或文件大小时,以byte为单位。
-c, --total                            除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D, --dereference-args                 显示指定符号链接的源文件大小。
-H, --si                               与-h参数相同,但是K,M,G是以1000为换算单位。
-h, --human-readable                   以K,M,G为单位,提高信息的可读性。
-k, --kilobytes                        以KB(1024bytes)为单位输出。
-l, --count-links                      重复计算硬件链接的文件。

image-20230825115504087

du -sh * |sort -rh	# 文件从大到小排序
du -sh ./*/	# 只显示当前目录下子目录的大小
du ./*	# 查看指定目录下文件所占的空间
du -s .	# 只显示总和的大小
du -sh .	# 显示总和的大小且易读:

sort

sort 对文本文件中所有行进行排序,默认对每一行第一个字符排序,并展示出来,并不会改变原来的文件

-n, --numeric-sort	根据数字排序
-M,--month-sort 	按照非月份、一月、十二月的顺序排序
-r,--reverse 	将结果倒序排列

image-20230825132833157

grep

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能配合多种命令使用,使用上十分灵活。

在文件中搜索一个单词,命令会返回一个包含 “match_pattern” 的文本行:

grep match_pattern file_name
grep "match_pattern" file_name
-a --text  # 不要忽略二进制数据。
-A <显示行数>   --after-context=<显示行数>   # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b --byte-offset                           # 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-B<显示行数>   --before-context=<显示行数>   # 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c --count    # 计算符合范本样式的列数。
-C<显示行数> --context=<显示行数>或-<显示行数> # 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

image-20230825133445326

打包、压缩、归档、解压缩

tar 命令 可以为linux的文件和目录创建档案。利用tar ,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的

tar -cf archive.tar foo bar  # 从文件 foo 和 bar 创建归档文件 archive.tar。
tar -tvf archive.tar         # 详细列举归档文件 archive.tar 中的所有文件。
tar -xf archive.tar          # 展开归档文件 archive.tar 中的所有文件。

父子shell

概述

在Linux中,父子Shell是指一个Shell进程可以衍生出其他子Shell进程,形成一个Shell的层次结构。当你在终端中打开一个Shell,它就成为父Shell,而通过该父Shell衍生出的子Shell就是子Shell。

父子Shell之间会共享一部分环境变量和文件描述符,子Shell可以继承父Shell的环境,并且还可以定义自己的特定环境变量。每个Shell都有自己的工作目录(当前目录)和进程ID(PID)。子Shell可以执行独立的命令和操作,但它们仍然受父Shell的控制。

在Shell编程中,父子Shell可以通过一些特殊的命令或语法来交互和通信。例如,通过在父Shell中定义变量,子Shell可以继承这些变量并在自己的进程中使用。同样,子Shell执行的命令和操作也可以返回结果给父Shell。

这种父子Shell的层次结构为管理和控制进程提供了一定的灵活性,允许我们在一个Shell环境中进行多个操作或任务,并且可以方便地进行组织和协调。

分号作用

  • 命令之间带分号; 依次执行
  • 外加括号()则是创建一个子shell去执行

image-20230825143715887

image-20230825143955639

echo

echo命令用于在终端输出文本或变量的值。它是一个非常常用的命令,可以在脚本编程中用于调试、输出信息等场景。以下是echo命令的一些使用示例:

  1. 输出文本:

    echo "Hello, World!"
    

    执行上述命令后,终端会输出Hello, World!

  2. 输出变量的值:

    name="John"
    echo "My name is $name"
    

    执行上述命令后,终端会输出My name is John。在双引号中使用$符号可以引用变量,并输出其值。

  3. 转义字符的使用:

    echo "This is a \"quote\""
    

    执行上述命令后,终端会输出This is a "quote"。在需要输出引号等特殊字符时,可以使用反斜杠进行转义。

  4. 输出空行:

    echo
    

    执行上述命令只会输出一个空行。

需要注意的是,echo命令会将参数中的特殊字符进行解释和处理,例如转义字符、变量替换等。如果需要保留特殊字符的字面意义,可以将参数使用单引号或使用反斜杠进行转义。

echo 'This is $HOME'   # 输出:This is $HOME
echo "This is \$HOME"  # 输出:This is $HOME

sleep ,jobs

sleep将目前动作延迟一段时间,后加数字表示延迟时间 , 再加 & 为后台执行 , 如需干掉,可用 kill

  • 时间:指定要暂停时间的长度, 包括如下:
    • 2s: 2秒
    • 2m: 2分钟
    • 2h: 2小时
    • 2d: 2天
    • infinity: 永久

jobs 显示作业状态

-l	在作业信息中额外的列出PID。
-n	只列出最近一次通知以来状态变更的作业。
-p	只列出PID。
-r	只输出处于运行状态的作业。
-s	只输出处于停止状态的作业。

image-20230825145026180

coproc

coproc命令用于创建协程进程(co-process),它将一个命令作为子进程运行,并提供一个双向的输入/输出通道,可以通过文件描述符与该子进程进行通信。

coproc命令的语法如下:

coproc [NAME] command [redirections...]

其中,[NAME]是可选的,用于指定协程进程的名称;command是要执行的命令;redirections是可选的输入/输出重定向配置,可用于更改标准输入、标准输出和标准错误输出。

coproc命令执行后,会在当前Shell中创建一个名为NAME的协程进程。该进程执行指定的command命令,并提供两个文件描述符,分别用于读取协程进程的输出和写入协程进程的输入。

image-20230825150338867

需要注意的是,coproc命令是Bash的内建命令,因此只能在Bash Shell环境下使用。其他Shell可能不支持该命令或具有不同的语法和行为。

外部命令和内部命令

Shell执行的命令可以分为内建命令(built-in)和外部命令(external)

  • 内部命令构建在shell内 ,由当前shell执行
  • 外部命令是一个独立文件(可以是二进制文件,也可以是一个脚本)
  • 外部命令的执行shell进程会fork 一个子进程,父进程随后挂起,然后在子进程中exec加载外部文件,子进程返回后,父进程才继续执行
  • fork是一个系统调用,用于在Linux系统中创建一个新的进程。调用fork会创建一个与当前进程完全相同的子进程,包括代码段、数据段、堆栈等。在fork调用完成后,父进程和子进程都会从fork调用的位置开始执行,并且具有相同的程序状态。

image-20230825150722847

其他

  • history显示或操作历史列表。
  • alias 定义或者显示别名
  • type 显示指定命令的类型

环境变量

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。

环境变量通常用于存储系统级别的配置信息,如路径、用户名、密码等。它们可以让程序根据不同的环境配置进行适当的行为和操作。通过使用环境变量,我们可以在不同的环境中配置软件,而无需更改代码。这样可以让软件更加灵活、安全,并且适应不同的运行需求。

将文件夹写入环境变量后,意味着可以在任意位置访问该文件夹

全局环境变量和局部环境变量

  • windows:系统变量与用户变量
  • linux:全局环境变量和局部环境变量

image-20230825222738006

局部、全局变量的定义

  • 局部变量只能在当前shell执行,子shell或者退出后就不能用了
  • 定义局部变量不要大写
  • 全局变量用大写,下划线命名法
  • 全局变量可以子shell里执行,但关闭后仍失效
  • export 为shell变量或函数设置导出属性

image-20230825224601419

image-20230825225309004

set命令 作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号"+"和"-"的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可。

image-20230825225616051

PMS和软件安装

PMS

Package Management System(软件包管理系统):Linux操作系统通常使用软件包来管理安装、更新和卸载软件。

PMS是一种工具或系统,用于管理和操作软件包。例如,Debian系列的Linux发行版使用APT(Advanced Package Tool)作为其PMS,而Red Hat系列的Linux发行版则使用RPM(Red Hat Package Manager)作为其PMS。

apt-get 命令 是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个包管理系统。deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。

sudo 命令 用来以其他身份来执行命令,预设的身份为root

apt-get install  # 安装新包
apt-get remove   # 卸载已安装的包(保留配置文件)
apt-get purge    # 卸载已安装的包(删除配置文件)
apt-get update   # 更新软件包列表
apt-get upgrade  # 更新所有已安装的包
apt-get autoremove   # 卸载已不需要的包依赖
apt-get dist-upgrade # 自动处理依赖包升级
apt-get autoclean    # 将已经删除了的软件包的.deb安装文件从硬盘中删除掉
apt-get clean        # 删除软件包的安装包

-c:指定配置文件。

用户和权限

概述

用户权限是指对文件和目录的访问和操作权限。Linux使用一种基于权限的访问控制模型来保护文件和系统资源,确保只有授权的用户才能进行特定操作。

每个文件和目录都有一个所有者和一个所属组,并且可以根据所有者、所属组和其他用户的权限来控制访问。以下是Linux中常见的用户权限:

  1. 读权限(r):允许用户查看和读取文件内容或目录列表。
  2. 写权限(w):允许用户修改或删除文件,以及在目录中创建、删除或重命名文件。
  3. 执行权限(x):对于文件,允许用户执行可执行文件;对于目录,允许用户进入目录并访问内部的文件。

权限分为三个级别:用户级别(Owner)、组级别(Group)和其他用户级别(Others)。每个级别可以分别设置上述三种权限。

img

每个文件的属性由左边第一部分的 10 个字符来确定(如下图)

363003_1227493859FdXT

例如,一个文件的权限为-rw-r--r--,表示:

  • 所有者(Owner)有读和写的权限,但没有执行的权限。
  • 所属组(Group)有读的权限,但没有写和执行的权限。
  • 其他用户(Others)有读权限,但没有写和执行的权限。

这种权限模型使得管理员可以根据需要设置用户对文件和目录的不同访问级别,从而保护敏感数据和系统资源的安全性。

要查看文件或目录的权限,可以使用ls -l命令来显示详细的文件和目录列表,并列出相应的权限信息。要设置权限,可以使用chmod命令来更改文件和目录的权限。

image-20230826092601893

更改文件或目录的权限通常需要足够的权限(例如,文件所有者或管理员权限)。

作用

用户权限在Linux操作系统中起着重要的作用,主要有以下几个方面:

  1. 访问控制:用户权限控制了对文件和目录的访问权限。通过具体的权限设置,可以限制用户对系统资源的操作。例如,只有拥有读权限的用户才能查看文件内容,只有拥有写权限的用户才能修改文件,只有拥有执行权限的用户才能运行可执行文件。

  2. 安全性:用户权限提供了一种重要的安全机制,确保只有授权的用户可以访问和操作敏感数据和系统资源。通过限制不同用户对文件和目录的权限,可以防止非授权用户篡改、删除或读取敏感数据。

  3. 分隔用户角色:用户权限系统使得可以根据用户的角色或职责来划分不同级别的权限。管理员可以拥有更高级别的权限,从而能够进行系统配置、安装软件等操作,而其他普通用户则被限制在一个更有限的权限范围内,以保证系统的稳定性和安全性。

  4. 文件共享和合作:通过适当的权限设置,可以实现文件和目录的共享和合作。例如,可以设置一个目录为可读写权限,允许团队中的多个成员在其中合作编辑文件。

  5. 控制系统资源使用:用户权限还可以用于控制对系统资源的使用。例如,通过限制用户对关键系统文件的写权限,可以防止用户意外修改或删除这些文件,从而保护系统的稳定性。

用户权限在Linux操作系统中起着重要作用,通过权限控制实现访问控制、安全性、用户角色分隔、文件共享和控制系统资源使用等功能,确保系统的可靠性和安全性。

创建、删除、更改用户

sudo useradd user1  # 创建用户
sudo userdel user1  # 删除用户 
sudo passwd user1 	# 更改密码 

group

group命令用于管理用户组(group),包括创建、删除和修改用户组等操作。

以下是一些常用的 group 命令选项:

  1. groupadd:创建一个新的用户组。 例如:groupadd developers 将创建一个名为 developers 的用户组。

  2. groupdel:删除一个存在的用户组。 例如:groupdel developers 将删除名为 developers 的用户组。

  3. groupmod:修改一个用户组的属性。 例如:groupmod -n new_name old_name 将把名为 old_name 的用户组改名为 new_name

  4. groups:显示当前用户所属的用户组。 例如:groups 将显示当前用户所属的所有用户组。

  5. newgrp:切换到不同的用户组。 例如:newgrp developers 将切换到名为 developers 的用户组,如果用户是 developers 组的成员的话。

  6. chgrp:修改文件或目录所属的用户组。 例如:chgrp developers file.txtfile.txt 的所属用户组更改为 developers

通过用户组,可以将拥有相同权限需求或工作职责的用户进行有效组织和管理。用户组提供了一种简化权限分配和管理的方式,可以按照组的属性设置访问权限、共享文件等。通过 group 命令,管理员可以轻松管理用户组,从而实现更好的访问控制、资源共享和用户权限管理。

image-20230826093933586

vim编辑器

Vim(Vi IMproved)是一款高度可配置的文本编辑器,是Linux和Unix系统下最常用的编辑器之一。

特点

Vim具备强大的功能和灵活的配置选项,适用于编辑各种类型的文件,包括文本文件、代码文件、配置文件等。它支持语法高亮、代码折叠、自动补全、多窗口等众多功能,且可通过插件进行扩展。

基本模式

Vim分为命令模式、插入模式和可视模式三种主要模式。

  • 命令模式:用于执行各种命令,如保存文件、退出、跳转等。
  • 插入模式:用于插入或编辑文本,类似于常见的文本编辑器。
  • 可视模式:用于选择和操作文本块。

在这里插入图片描述

  • :q 表示不保存退出
  • :wq 保存退出
  • :q!强制退出,此时也不保存文件

安装

sudo apt install vim

image-20230826094728808

快捷键

Vim通过快捷键来实现各种操作,这些快捷键通常由一个或多个键盘字符组成,以按键序列的方式触发相应的功能。例如,o 直接enter到下一行,x 删除光标所在字符,dd 删除整个一行,u 撤销

img

配置文件

Vim的配置通过.vimrc文件进行设置,其中可以定义键盘映射、自动命令、插件管理等。用户可以根据自己的喜好和需求进行配置,以提升编辑效率和舒适度。

source 执行文件并从文件中加载变量及函数到执行环境,将一下代码写入配置中

set syntax=on
set tabstop=4
set softtabstop=4
set number
set enc=utf-8
set showmatch

image-20230826095331179

插件

Vim拥有丰富的插件生态系统,可以通过安装各种插件来扩展其功能。插件可以提供额外的语法高亮、代码补全、代码格式化等功能,从而满足不同用户的需求。

标签:文件,--,命令,Linux,权限,目录
From: https://blog.51cto.com/LowellHere/8551013

相关文章

  • 学习Linux用户管理
    Linux是一个多用户、多任务的操作系统,因此用户管理是系统管理员和Linux使用者必须掌握的重要技能之一。本文将深入探讨Linux用户管理的方方面面,包括用户的创建、删除、权限管理等关键概念。1.用户与用户组在Linux系统中,每个用户都有一个唯一的用户名,用于标识和访问系统资源。用......
  • Windows-Xshell对多个终端同时执行命令(发送命令到多个会话)
    方法1:使用查看中的撰(zhuàn)写栏(1)、查看→撰写→撰写栏。 (2)、底部可以看到“撰写栏”,选择全部会话。 (3)、在撰写栏输入命令,回车后就会发送到所有会话窗口。方法2:使用工具中的发送键输入到所有会话(1)、工具→发送键输入到(K)→所有会话(A)。(2)、当窗口上面出现黄色栏时,......
  • 使用python包os.system执行命令与直接在终端执行命令的区别
     区别:1.使用systemctl命令执行时,即使是以root用户身份执行,也会关注服务的用户组权限。这是因为systemctl在执行服务管理操作时,会检查服务的配置文件中设置的用户和用户组权限,并确保当前用户具有足够的权限来管理服务。2.当你以root用户身份使用os.system执行命令时,它可能会绕......
  • Linux服务器时间校准
    1.离线情况下安装ntprpm-qa|grepntp2.在线情况下安装ntpyum-yinstallntp3.校正服务器时间与网络时间同步ntpdatecn.pool.ntp.org4.设置时区Pleaseidentifyalocationsothattimezonerulescanbesetcorrectly.Pleaseselectacontinentorocean.1......
  • Mysql基础操作(命令行)
    一、背景docker安装mysql8,映射本地端口3306二、创建数据库createdatabasemyblogcharset=utf8; 三、选择数据库usemyblog;  四、查看所有表showtables;  五、查看表结构descmm_t_user;  showcolumnsfrommm_t_user;  六、向表......
  • Linux 存储管理
    7.1存储方式从连接方式上,存储分为以下3种类型。本地存储:直接插在服务器上的硬盘,系统文件存放在本地。本章主要介绍本地存储。外部存储:可以理解为平时使用的移动硬盘,不过移动硬盘用的是USB接口连接,一般外部存储可以使用SCSI线、SATA线、SAS线、FC线。网络存储:以太网络、FC网络......
  • linux第十三章学习笔记
    《Unix/Linux系统编程》第13章学习笔记第13章TCP/IP和网络编程TCP/IP协议TCP/IP是互联网的基础,TCP代表传输控制协议,IP代表互联网协议。目前有IPv4(32位地址)和IPv6(128位地址),目前IPv4使用最多。TCP/IP的四层结构如下:TCP/IP网络中的数据流路径如下图:1.1IP主机和IP地址主机......
  • Matlab绘图控制命令
    ​ 图形的控制与表现(Figurecontrolandrepresentation)MATLAB提供的用于图形控制的函数和命令:axis: 人工选择坐标轴尺寸.   clf:  清图形窗口. ginput:利用鼠标的十字准线输入.  hold:  保持图形.   shg:示......
  • Linux loopback接口初解
    引用:chatgpt1.linuxloopback作用:Linux中的loopback接口是一个虚拟的网络接口,通常被命名为 lo。它的主要作用是用于本地主机的内部通信,即在同一台机器上的不同网络应用程序之间进行通信。以下是loopback接口的主要作用:本地主机通信: Loopback接口允许同一台机器上......
  • Linux下Oracle11G数据备份恢复(RMAN)
    数据库安装参考步骤1--14https://www.cnblogs.com/baixisuozai/p/17852235.html创建初始pfile文件$viminit.umpay.ora文件内容:umpay.__java_pool_size=4194304umpay.__large_pool_size=4194304umpay.__oracle_base='/DataBase/app/oracle'#ORACLE_BASEsetfromenv......