[Linux关键词]unmask,mv,dev/pts,stdin stdout stderr,echo

打印 上一主题 下一主题

主题 846|帖子 846|积分 2538


   希望你开心,希望你康健,希望你幸福,希望你点赞!
  最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!!
  喵喵喵,你对我真的很重要!
  
前言

   在Linux系统中,文件和目录的权限管理至关重要,它确保了系统的安全性和稳固性。其中,umask下令作为设置文件和目录创建默认权限的工具,饰演着举足轻重的角色。本文将深入探讨umask的界说、功能、运算规则及其利用方法,帮助读者更好地明白和应用这一下令。同时,我们还将介绍Linux中另一个常用下令mv,以及标准输入流(stdin)、标准输出流(stdout)和标准错误流(stderr)的基本概念和作用,为全面明白Linux系统下令和文件操作奠定底子。
  
umask

umask是Linux系统中用于设定文件和目录创建默认权限的下令,以下是关于umask的详细解释:
一、界说与功能

umask(user file creation mode mask)即用户文件创建权限掩码,是Linux系统或类Linux系统的一个下令。umask的值是一个三位八进制数,取值范围是000-077,用于禁用文件或目录的默认权限。当创建新文件或目录时,系统会根据文件类型(文件或目录)和umask值来确定其默认权限。
二、umask值的运算规则

umask值是一个八进制数,它利用一种位掩码方式来表示文件权限的掩码。每个数字代表一组权限,从高位到低位分别表示全部者、所在组和其他用户的权限。其中,0表示权限可用,1表示权限被屏蔽。


  • 第一位:表示文件全部者的权限。
  • 第二位:表示文件所属组的权限。
  • 第三位:表示其他用户的权限。
例如,umask值为002表示全部者和所在组的写权限被屏蔽,而读和执行权限被保留。
三、umask下令的利用


  • 查察当前umask值:在shell中直接运行umask下令,可以查察当前shell的umask值。
  • 设置umask值:利用umask [value]下令可以设置新的umask值,其中value是一个八进制数。例如,umask 022会将新建文件和目录的默认权限掩码设置为022。
  • 永久更改umask值

    • 对新建用户见效:编辑/etc/profile文件,在文件末端添加umask 022(或其他所需的umask值),然后保存并关闭文件。利用source /etc/profile下令使设置立刻见效。
    • 对全部用户见效:编辑/etc/bashrc文件,同样在文件末端添加umask 022(或其他所需的umask值),然后保存并关闭文件。利用source /etc/bashrc下令使设置立刻见效。
    • 针对某个特定用户修改:切换到该用户的家目录,找到该用户的shell设置文件(如.bashrc或.bash_profile),然后在其中添加一行umask 0022(或其他所需的umask值)来更改该用户的umask值。当该用户登录并启动新的shell时,系统会主动执行设置文件中的下令,从而应用新的umask值。

四、umask与文件/目录权限的关系



  • 新建文件的默认权限:通常为666(rw-rw-rw-),但会受到umask值的限制。例如,如果umask值为002,则新建文件的默认权限为664(rw-rw-r--)。
  • 新建目录的默认权限:通常为777(rwxrwxrwx),但同样会受到umask值的限制。例如,如果umask值为022,则新建目录的默认权限为755(rwxr-xr-x)。
五、注意事项


  • umask下令只能禁用权限,不能启用特别权限。如需修改权限,需利用chmod下令。
  • umask值的更改只会影响以后创建的文件和目录,不会影响已经存在的文件和目录。
  • umask值的设置是递归的,也就是说,如果在某个目录下设置了umask值,那么在该目录下创建的子目录和文件也会受到相同的限制。

mv

Linux中的mv下令是一个非常强大且常用的下令,它用于移动文件或目录,以及重命名文件或目录。以下是关于mv下令的详细解释:
一、下令格式

mv下令的一般格式为:mv [选项] 源文件或目录 目标文件或目录。
二、下令功能



  • 移动文件或目录:将指定的文件或目录移动到目标位置。
  • 重命名文件或目录:如果目标位置是一个文件名而不是目录,则源文件或目录会被重命名为该文件名。
三、常用选项



  • -i:交互式移动,在覆盖文件之前提示用户确认。
  • -f:强制移动,不提示用户确认覆盖。
  • -n:不覆盖已存在的目标文件。
  • -u:仅当源文件比目标文件新,或者目标文件不存在时,才移动文件。
  • -v:详细模式,显示下令的执行过程。
  • -b:覆盖前为目标文件创建备份。
  • --help:显示帮助信息。
  • --version:显示版本信息。
四、下令实例


  • 重命名文件
  1. [/code] bash复制代码
  2. [table][tr][td][/td][td]mv file1.txt file2.txt[/td][/tr][/table] 将file1.txt重命名为file2.txt。
  3. [list=1]
  4. [*][b]移动文件到目录[/b]:
  5. [/list] bash复制代码
  6. [table][tr][td][/td][td]mv file2.txt dir1/[/td][/tr][/table] 将file2.txt移动到dir1目录中。
  7. [list=1]
  8. [*][b]交互式移动文件[/b]:
  9. [/list] bash复制代码
  10. [table][tr][td][/td][td]mv -i file3.txt dir2/[/td][/tr][/table] 如果dir2中已有同名文件,则提示用户确认是否覆盖。
  11. [list=1]
  12. [*][b]强制移动文件[/b]:
  13. [/list] bash复制代码
  14. [table][tr][td][/td][td]mv -f file4.txt dir3/[/td][/tr][/table] 即使dir3中已有同名文件,也不提示确认直接覆盖。
  15. [list=1]
  16. [*][b]移动多个文件[/b]:
  17. [/list] bash复制代码
  18. [table][tr][td][/td][td]mv file5.txt file6.txt dir4/[/td][/tr][/table] 将file5.txt和file6.txt移动到dir4目录中。
  19. [list=1]
  20. [*][b]利用通配符移动文件[/b]:
  21. [/list] bash复制代码
  22. [table][tr][td][/td][td]mv *.txt dir5/[/td][/tr][/table] 将全部.txt文件移动到dir5目录中。
  23. [list=1]
  24. [*][b]移动目录[/b]:
  25. [/list] bash复制代码
  26. [table][tr][td][/td][td]mv dir1 dir2/[/td][/tr][/table] 如果dir2存在,则将dir1移动到dir2目录下,成为dir2的子目录;如果dir2不存在,则举行重命名操作,将dir1重命名为dir2。
  27. [list=1]
  28. [*][b]重命款式录[/b]:
  29. [/list] bash复制代码
  30. [table][tr][td][/td][td]mv dir2 dir3[/td][/tr][/table] 将dir2重命名为dir3。
  31. [size=3]五、注意事项[/size]
  32. [list]
  33. [*]利用mv下令时,要确保具有对源文件或目录以及目标位置或目录的适当权限。
  34. [*]如果目标位置已有同名文件,除非利用-i参数,否则原文件会被覆盖而不会有提示。
  35. [*]对于重要文件,在执行mv下令前举行备份是一个好习惯。
  36. [/list] [hr] [size=5]stdin stdout stderr[/size]
  37. stdin、stdout和stderr分别代表标准输入流、标准输出流和标准错误流,它们在程序执行过程中起着至关重要的作用。以下是关于这三个流的详细解释:
  38. [size=3]stdin(标准输入流)[/size]
  39. [list]
  40. [*][b]界说[/b]:stdin是程序从外界读入数据的机制,通常关联到键盘或其他输入设备。
  41. [*][b]功能[/b]:允许用户通过键盘或输入重定向来提供输入数据给程序。
  42. [*][b]文件形貌符[/b]:在大多数系统中,stdin的文件形貌符为0。
  43. [*][b]示例[/b]:在C语言中,可以利用scanf函数从stdin读取数据;在Perl语言中,可以利用<STDIN>来从标准输入缓存中读取数据。
  44. [/list] [size=3]stdout(标准输出流)[/size]
  45. [list]
  46. [*][b]界说[/b]:stdout是程序将效果和普通输出发送到用户的通道,通常关联到屏幕或终端。
  47. [*][b]功能[/b]:默认环境下,程序的输出会显示在终端上。stdout是有缓存的,输出到stdout中的字符在满足特定条件(如碰到换行符、流关闭、缓冲区溢出或用fflush函数刷新)时才会在终端中显示出来。
  48. [*][b]文件形貌符[/b]:在大多数系统中,stdout的文件形貌符为1。
  49. [*][b]示例[/b]:在C语言中,可以利用printf或fprintf(stdout, ...)将数据输出到stdout;在C++中,可以利用cout来输出数据。
  50. [/list] [size=3]stderr(标准错误流)[/size]
  51. [list]
  52. [*][b]界说[/b]:stderr是程序将错误消息和异常环境输出的通道,也通常关联到屏幕或终端。
  53. [*][b]功能[/b]:与stdout类似,但用于输堕落误信息而不是正常输出。stderr通常没有缓存,输出到stderr中的字符会立刻在终端中显示出来。
  54. [*][b]文件形貌符[/b]:在大多数系统中,stderr的文件形貌符为2。
  55. [*][b]示例[/b]:在C语言中,可以利用fprintf(stderr, ...)将数据输出到stderr;在C++中,可以利用cerr来输堕落误信息。
  56. [/list] [size=3]stdin、stdout和stderr的用途与重定向[/size]
  57. [list]
  58. [*][b]用途[/b]:这三个流允许程序与用户、其他程序和操作系统之间举行通讯,而不需要显式地指定文件或设备。
  59. [*][b]重定向[/b]:在Linux等操作系统中,可以通过重定向操作符(如>和2>)将stdout和stderr的输出分别重定向到差别的文件。此外,还可以利用管道操作符(|)将一个下令的stdout作为另一个下令的stdin。
  60. [/list] [hr] [size=5]ls dev/pts[/size]
  61.    ls /dev/pts 下令用于列出 /dev/pts 目录下的内容。在Linux系统中,/dev/pts 是一个虚拟文件系统(通常称为PTS,即伪终端从设备),它提供了一个接口来访问伪终端(pseudo-terminals)。伪终端是一种软件接口,它模拟了物理终端的功能,使得远程登录会话(如通过SSH)或终端仿真器(如xterm、gnome-terminal等)可以像利用物理终端一样与系统举行交互。
  62.   当你执行 ls /dev/pts 下令时,你大概会看到一系列以数字命名的文件(例如 0, 1, 2 等),这些文件代表当前系统上的活动伪终端会话。每个文件都对应一个打开的伪终端会话,可以通过它们来与对应的会话举行交互。
  63.   需要注意的是,/dev/pts 是 /dev/ptmx(伪终端主设备)的对应目录,ptmx 设备用于创建新的伪终端对。在较新的Linux系统中,/dev/pts 通常是一个挂载点,挂载了一个名为 pts 的特别文件系统类型(通常是 devpts 文件系统),它提供了对伪终端设备的访问。
  64.   [hr] [size=5]ls /dev/pts/0[/size]
  65. 通常直接对/dev/pts目录下的某个文件举行ls操作大概不会得到你期望的效果,由于这些文件(如0, 1, 2等)代表的是伪终端(pseudo-terminals)的会话,它们不是普通的目录或文件,而是特别的设备文件。
  66. 当你实行ls /dev/pts/0时,你大概会碰到以下几种环境:
  67. [list=1]
  68. [*] [b]权限问题[/b]:如果当前用户没有充足的权限访问该设备文件,ls下令大概会显示权限拒绝的错误信息。
  69. [*] [b]非标准行为[/b]:ls下令通常用于列出目录内容,而不是用于显示设备文件的详细信息。对于设备文件,利用ls -l大概会更有帮助,由于它会显示文件的权限、全部者、大小和类型等信息。但是,即使利用ls -l,你也不会看到伪终端会话的实际内容,只会看到设备文件的属性。
  70. [*] [b]特别文件类型[/b]:伪终端设备文件在ls -l的输出中会显示为特别类型的文件(通常是c字符设备文件)。
  71. [*] [b]会话不存在[/b]:如果伪终端会话已经关闭,那么对应的设备文件大概不再存在,或者其名称大概已经改变(由于新的会话大概会重用相同的数字标识符)。
  72. [*] [b]正确的利用方式[/b]:通常,你不会直接对/dev/pts目录下的设备文件执行ls下令。相反,这些文件通常是由终端仿真器(如gnome-terminal、xterm等)或远程登录服务(如SSH)在创建伪终端会话时主动利用的。
  73. [/list] 如果你想要查察与伪终端会话干系的信息,你大概需要利用其他下令,如ps(显示当前运行的进程)结合grep(搜刮特定字符串)来查找与特定伪终端会话干系联的进程。此外,who和w下令也可以提供有关当前登录用户和他们所利用的终端会话的信息。
  74. [hr] [size=5]echo[/size]
  75. echo 是一个常用的下令行工具,用于在终端(或下令行界面)上输出文本或变量的值。在Linux、Unix、macOS以及Windows的下令行环境(如CMD或PowerShell,尽管在Windows中大概需要稍作调解或利用差别的下令来达到相同的效果)中,echo 下令都非常普遍。
  76. 以下是 echo 下令的一些基本用法示例:
  77. [list=1]
  78. [*] [b]输出文本[/b]:
  79. [code]
复制代码
bash复制代码
   
echo Hello, World!
这将在终端上显示文本 Hello, World!。
  • 输出变量的值
    1. [/code] bash复制代码
    2.    [table][tr][td][/td][td]NAME="Alice" [/td][/tr][tr][td][/td][td]echo Hello, $NAME![/td][/tr][/table]这将输出 Hello, Alice!。注意,变量名前面有一个美元符号 $。
    3. [*] [b]输出换行符[/b](在某些shell中大概需要利用特别字符或选项):
    4. [code]
    复制代码
    bash复制代码
       
    echo -e "Hello\nWorld"
    这里,-e 选项使 echo 解释反斜杠转义字符(如 \n 表示换行)。不是全部的 echo 实现都支持 -e 选项,但在大多数Linux和Unix系统的默认shell(如bash)中都是支持的。
  • 禁止输出换行符
    在某些 echo 实现中,可以利用 -n 选项来禁止在输出的末端添加换行符。
    [code][/code] bash复制代码
       
    echo -n "Hello, World!"
    这将输出 Hello, World! 但不会换行,使得后续下令的输出可以紧跟其后。
  • 启用或禁用解释反斜杠转义
    除了 -e 选项外,有些 echo 实现还支持 -E(禁用解释反斜杠转义)选项,但这通常不是必需的,由于默认行为(在没有 -e 的环境下)就是不解释反斜杠转义。
  • 在Windows CMD中利用
    在Windows的下令提示符(CMD)中,echo 下令的语法略有差别,特别是当你想要输出换行符时。例如,要输出换行符,你大概需要利用 ^ 字符或两个连续的 %% 字符加上 n(取决于具体的上下文和版本)。但是,在PowerShell中,你可以利用更类似于Linux和Unix的 echo 下令的 Write-Output 或简写 echo(注意:PowerShell中的echo实际上是Write-Output的别名,它默认会输出换行符,但你可以通过添加|和Out-String -NoNewline来克制这一点)。
    请注意,差别的操作系统和shell环境大概会有差别的 echo 实现和选项,因此在利用之前最好查阅干系文档或手册页(如利用 man echo 在Linux中查察 echo 下令的手册页)。

    总结

       通过本文的论述,我们详细相识了umask下令在Linux系统中的重要性,掌握了其界说、功能、运算规则及利用方法。同时,我们也学习了mv下令的基本用法和常用选项,以及标准输入流(stdin)、标准输出流(stdout)和标准错误流(stderr)的基本概念和作用。这些知识和技巧对于提高Linux系统的操作效率和安全性具有重要意义。无论是对于初学者照旧有一定履历的Linux用户,本文都提供了有价值的参考和引导。希望读者能够学以致用,将所学知识应用到实际操作中,更好地管理和维护Linux系统。
      
       希望你开心,希望你康健,希望你幸福,希望你点赞!
      最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!!
      喵喵喵,你对我真的很重要!
      


    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
  • 回复

    使用道具 举报

    0 个回复

    倒序浏览

    快速回复

    您需要登录后才可以回帖 登录 or 立即注册

    本版积分规则

    傲渊山岳

    金牌会员
    这个人很懒什么都没写!

    标签云

    快速回复 返回顶部 返回列表