每日一个Linux无用小技巧

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的一些缩写示意 **************************

  1. 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.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值