linux编译前要清除环境变量,Linux系统中清理⽂件和清理环境
变量的⽅法
使⽤ Find 命令来帮你到那些需要清理的⽂件
⼀个问题⼏乎困扰着所有的⽂件系统 -- 包括 Unix 和其他的 -- 那就是⽂件的不断积累。⼏乎没有⼈愿意花时间清理掉他们不再使⽤的⽂件和整理⽂件系统,结果,⽂件变得很混乱,很难到有⽤的东西,要使它们运⾏良好、维护备份、易于管理,这将是⼀种持久的挑战。
我见过的⼀种解决问题的⽅法是建议使⽤者将所有的数据碎屑创建⼀个⽂件集合的总结报告或"概况",来报告诸如所有的⽂件数量;最⽼的,最新的,最⼤的⽂件;并统计谁拥有这些⽂件等数据。如果有⼈看到五年前的⼀个包含五⼗万个⽂件的⽂件夹,他们可能会去删除哪些⽂件 -- 或者,⾄少会归档和压缩。主要问题是太⼤的⽂件夹会使⼈担⼼误删⼀些重要的东西。如果有⼀个描述⽂件夹的⽅法能帮助显⽰⽂件的性质,那么你就可以去清理它了。
当我准备做 Unix ⽂件系统的总结报告时,⼏个有⽤的 Unix 命令能提供⼀些⾮常有⽤的统计信息。要计算⽬录中的⽂件数,你可以使⽤这样⼀个 find 命令。
$ find . -type f | wc -l
187534
虽然查最⽼的和最新的⽂件是⽐较复杂,但还是相当⽅便的。在下⾯的命令,我们使⽤ find 命令再次查⽂件,以⽂件时间排序并按年-⽉-⽇的格式显⽰,在列表顶部的显然是最⽼的。
在第⼆个命令,我们做同样的,但打印的是最后⼀⾏,这是最新的。
$ find -type f -printf '%T+ %p\n' | sort | head -n 1
2006-02-03+02:40:33 ./skel/.xemacs/init.el
$ find -type f -printf '%T+ %p\n' | sort | tail -n 1
2015-07-19+14:20:16 ./.bash_history
printf 命令输出 %T(⽂件⽇期和时间)和 %P(带路径的⽂件名)参数。
如果我们在查家⽬录时,⽆疑会发现,history ⽂件(如 .bash_history)是最新的,这并没有什么⽤。你可以通过 "un-grepping" 来忽略这些⽂件,也可以忽略以.开头的⽂件,如下图所⽰的。
$ find -type f -printf '%T+ %p\n' | grep -v "\./\." | sort | tail -n 1
2015-07-19+13:02:12 ./isPrime
寻最⼤的⽂件使⽤ %s(⼤⼩)参数,包括⽂件名(%f),因为这就是我们想要在报告中显⽰的。
$ find -type f -printf '%s %f \n' | sort -n | uniq | tail -1
ar
统计⽂件的所有者,使⽤%u(所有者)
$ find -type f -printf '%u \n' | grep -v "\./\." | sort | uniq -c
180034 shs
7500 jdoe
如果⽂件系统能记录上次的访问⽇期,也将是⾮常有⽤的,可以⽤来看该⽂件有没有被访问过,⽐⽅说,两年之内没访问过。这将使你能明确分辨这些⽂件的价值。这个最后访问(%a)参数这样使⽤:
$ find -type f -printf '%a+ %p\n' | sort | head -n 1
Fri Dec 15 03:00:30 2006+ ./statreport
当然,如果⼤多数最近访问的⽂件也是在很久之前的,这看起来你需要处理更多⽂件了。
$ find -type f -printf '%a+ %p\n' | sort | tail -n 1
Wed Nov 26 03:00:27 2007+ ./my-notes
要想层次分明,可以为⼀个⽂件系统或⼤⽬录创建⼀个总结报告,显⽰这些⽂件的⽇期范围、最⼤的⽂件、⽂件所有者们、最⽼的⽂件和最新访问时间,可以帮助⽂件拥有者判断当前有哪些⽂件夹是重要的哪些该清理了。
如何在 Linux 上运⾏命令前临时清空 Bash 环境变量如何显⽰当前环境?
打开终端应⽤程序并输⼊下⾯的其中⼀个命令:
printenv
或
env
输出样例:
统计环境变量数⽬
输⼊下⾯的命令:
env | wc -l
printenv | wc -l # 或者
环境变量path误删有影响吗输出样例:
20
在⼲净的 bash/ksh/zsh 环境中运⾏程序
语法如下所⽰:
env -i your-program-name-here arg1 arg2 ...
例如,要在不使⽤ http_proxy 和/或任何其它环境变量的情况下运⾏ wget 程序。临时清除所有 bash/ksh/zsh 环境变量并运⾏ wget 程序:
env -i /usr/local/bin/berciti.biz
env -i berciti.biz # 或者
这当你想忽视任何已经设置的环境变量来运⾏命令时⾮常有⽤。我每天都会多次使⽤这个命令,以便忽视 http_proxy 和其它我设置的环境变量。
例⼦:使⽤ http_proxy
$ berciti.biz
Connecting to 10.12.249. connected.
Proxy request sent, 200 OK
Length: unspecified [text/html]
Saving to: 'index.html'
index.html [ <=> ] 36.17K 87.0KB/s in 0.4s
2015-08-03 23:20:24 (87.0 KB/s) - 'index.html' saved [37041]
例⼦:忽视 http_proxy
$ env -i /usr/local/bin/berciti.biz
74.86.144.194
Connecting berciti.biz|74.86.144.194|:80... connected.
HTTP request sent, 200 OK
Length: unspecified [text/html]
Saving to: 'index.html.1'
index.html.1 [ <=> ] 36.17K 115KB/s in 0.3s
2015-08-03 23:25:18 (115 KB/s) - 'index.html.1' saved [37041]
-i 选项使 env 命令完全忽视它继承的环境。但是,它并不会阻⽌你的命令(例如 wget 或 curl)设置新的变量。同时,也要注意运⾏bash/ksh shell 的副作⽤:
env -i env | wc -l ## 空的 ##
# 现在运⾏ bash ##
env -i bash
## bash 设置了新的环境变量 ##
env | wc -l
例⼦:设置⼀个环境变量
语法如下:
env var=value /path/to/command arg1 arg2 ...
## 或 ##
var=value /path/to/command arg1 arg2 ...
例如设置http_proxy:
env http_proxy="USER:berciti.biz:3128/" /usr/local/bin/berciti.biz
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论