1. ${PATH:+:${PATH}}的作用
在设置cuda路径的时候,我们会在~/.bashrc
里面添加以下语句:
export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
就是在PATH前面添加了一个cuda的路径
可能就有人想了啊${PATH:+:${PATH}}
这一部分为什么要这么做呢,我不能直接使用$PATH
吗?
其实这种写法属于bash的一种规范,使用man bash
可以找到下面的内容:
${parameter:+[word]} : Use Alternative Value.
If parameter is unset or null, null shall be substituted; otherwise, the expansion of word (or an empty string if word is omitted) shall be substituted.
就是如果parameter为空,则返回空,如果parameter不为空,则返回word部分
那么有同学就会问啦,这个说到底不还是多此一举吗?
然而,如果我们把PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
换成PATH=/usr/local/cuda-11.1/bin:${PATH}
而且PATH为空的话,最终这一句后面就会多出一个冒号:
,这个冒号放在PATH最后,表明当前目录也在PATH里面,做一个简单的例子来解释,结束今天的技巧学习~
(base) root@kali:~# echo $PATH
/root/anaconda3/bin:/root/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
(base) root@kali:~# export PATH=$PATH:
(base) root@kali:~# echo $PATH
/root/anaconda3/bin:/root/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
(base) root@kali:~# cd Desktop/
(base) root@kali:~/Desktop# cd CNN-RNN-IoT/r2_test/
(base) root@kali:~/Desktop/CNN-RNN-IoT/r2_test# gcc helloworld.c
(base) root@kali:~/Desktop/CNN-RNN-IoT/r2_test# a.out
hello world
(base) root@kali:~/Desktop/CNN-RNN-IoT/r2_test# export PATH=/root/anaconda3/bin:/root/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
(base) root@kali:~/Desktop/CNN-RNN-IoT/r2_test# echo $PATH
/root/anaconda3/bin:/root/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
(base) root@kali:~/Desktop/CNN-RNN-IoT/r2_test# a.out
bash: a.out: command not found
2. 为什么有的命令会在最后面加一个&
在命令的后面加一个 & 的作用是,将这个任务放到后台执行。
[root@localhost ~]# vim &
[1] 29839
直接输入vim的话会进入vim的界面无法退出
3. 为什么有2&>1这种写法
对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。
对于2 ,表示标准错误,stderr。
2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null
可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.
偶尔也可以把 & 在命令的最后加上,表示让程序后台执行。
*********************** Linux的一些缩写示意 **************************
- tar Tape Archive. Tar files date all the way back to 1979 when the tar command was created to allow system administrators to archive files onto tape.