linux如何在创建文件的同时赋予指定权限

时间:2022-11-23 07:22:20

一、之前遇到一个问题:

  就是如何在创建一个文件b.txt的同时,将其赋予另外一个文件a.txt的权限。

二、 解决过程

  1. 首先想到两个命令touch和chmod(以ubuntu为例)

$ sudo touch b.txt
$ sudo chmod --reference=a.txt b.txt
  1. 其次想到要将这两个命令组合,管道“|”组合方式?

先看看错误示范:

$ sudo touch b.txt | sudo chmod --reference=a.txt a.txt
  • 上面的是手误打上去的,最后一个文件应该是b.txt,本来是手残打错了,结果歪打正着,发现竟然对了,不知道该怎么解释,之后试了几次,都是会报错,比如:

$ sudo touch b.txt | sudo chmod --reference=a.txt b.txt
  • 上面这个错误的原因可能是因为b.txt还没建立起来就把名字写进去了,计算机不知道b.txt变量的值是多少(等待大神解答)

$ sudo touch b.txt | sudo chmod --reference=a.txt
  • 上面这个错误的原因,是因为chmod --reference=a.txt 后面必须要跟着一个你要赋予其权限的对象,而如果你不给,那么肯定会报错。

再看看正确示范:

正确示范一:

$ sudo touch b.txt | sudo chmod --reference=a.txt $_
  • 其中$_代表最近一个使用的变量,即b.txt
  • $_的说明,参考链接如下:

​https://*.nilmap.com/question?dest_url=https://*.com/questions/21342371/single-command-to-create-a-file-and-set-its-permission​

正确示范二:

$ sudo touch b.txt && sudo chmod --reference=a.txt $_
  • 熟悉与或非的都知道这个标识“&&”,比如如下命令:“Command 1 && Command 2”指的是必须命令1可以执行,才执行命令2。所以“&&”与管道符“|”有异曲同工之妙!