我写了一个Makefile,发现在执行make
命令时,rm
在Mmakefile中的所有命令都完成后执行了一个意外。但是我没有rm
在Makefile中写命令。
run-%: d/%.out
$<
d/%.out: d/%.c
gcc -o $(subst .c,.out,$<) $<
Run Code Online (Sandbox Code Playgroud)
运行输出make run-a
:
gcc -o d/a.out d/a.c
d/a.out
rm d/a.out
Run Code Online (Sandbox Code Playgroud)
注意rm d/a.out
我没有写的尾随。
什么情况下会rm
添加自动命令?
我在玩 pi3B 时发现了一个奇怪的事情。我想在/sys/class/gpio
(只是四处看看,没有具体原因)创建一个文件,但我得到了Permission Denied。下面是一些信息。
pi@raspberrypi:/sys/class/gpio $ groups
pi adm dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi
pi@raspberrypi:/sys/class/gpio $ ls -ld .
drwxrwx--- 2 root gpio 0 May 6 00:28 .
pi@raspberrypi:/sys/class/gpio $ touch somefile
touch: cannot touch 'somefile': Permission denied
Run Code Online (Sandbox Code Playgroud)
如您所见,我在gpio组中,该组具有 directory 的写权限/sys/class/gpio
。
所以问题是为什么/sys/class/gpio
即使我所在的组有权限,我也不能在其中创建新文件。
几天前,我尝试在将pi用户添加到gpio组后重新登录并重新启动。
操作系统:树莓派伸展
包含管道和输出重定向的命令的执行顺序是什么?
假设我们执行以下操作:
Charles@myzone:/tmp$ mkdir /tmp/testdir
Charles@myzone:/tmp$ cd /tmp/testdir
Charles@myzone:/tmp/testdir$ touch file1 file2
Charles@myzone:/tmp/testdir$ ls | wc -l
2
Charles@myzone:/tmp/testdir$ ls | wc -l > ls_result
Charles@myzone:/tmp/testdir$ cat ls_result
3
Run Code Online (Sandbox Code Playgroud)
我知道如果你这样做,ls > result
那么result
将包含它自己的名字,因为外壳会做类似的事情
1) 创建/打开名为的文件result
2) 将 fd 设置result
为 stdout 3) execls
我原以为ls_result
值是 2,但结果是 3。
题
ls | wc -w > ls_result
上面的命令是如何执行的?
它相当于(ls | wc -w ) > ls_result
?
一些有关信息的链接?(我查过 bash 手册)
使用生成密钥对时ssh-keygen
,可以通过-t
以下方式指定所需的签名类型ssh-keygen -t ssh-rsa
:我想知道,一旦创建密钥对,ssh 私钥的签名类型就不能更改吗?
如果可以更改,我可以使用哪个工具来更改签名类型?如何?
我问这个问题是因为我的一个旧密钥使用ssh-rsa
签名类型,现在ssh-rsa
签名算法已被弃用。