unix中的SHELL文件扩展名是.sh还是.c?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unix中的SHELL文件扩展名是.sh还是.c?相关的知识,希望对你有一定的参考价值。
unix中的SHELL文件扩展名是.sh还是.c?,为什么.c的文件也一样可以执行shell语句.它们之间有什么区别?
unix中文件的属性是不依赖于扩展名
的,加上扩展名只是为了操作者的方便。unix中一个文件是否能被执行,和
后缀名
没有太大的关系,主要看文件的属性有关。
例如:
-rwxr-xr-x
1
mythmy
mythmy
85
2009-03-09
11:45
A.txt
这个文件的文件名是A.txt
但是这是个可执行文件,因为其属性是:755。所以这个文件是所有人都可读,可执行的。
所以说不管扩展名是.sh还是.c只要其
文件属性
是可执行,就一样可以执行SHELL语句。 参考技术A 你好!
通常是.sh
.c一般是c/c++的源文件(windows系统中)
不过在linux中根据文件扩展名不能区分文件类型的吧,我猜unix里面这个.c和.sh也都是一样的,没什么作用
打字不易,采纳哦!
Unix shell 组文件扩展名(按大小)
【中文标题】Unix shell 组文件扩展名(按大小)【英文标题】:Unix shell group files extensions by size 【发布时间】:2014-10-20 15:05:45 【问题描述】:我想按当前和所有子文件夹中的扩展名对文件大小进行分组和排序
for i in `find . -type f -name '*.*' | sed 's/.*\.//' | sort | uniq `
do
echo $i
done
获得了获取当前和所有子文件夹中所有文件扩展名的代码
现在我需要按这些扩展名汇总所有文件大小并打印它们 有什么想法可以做到吗?
示例输出:
sh (files sizes sum by sh extension)
pl (files sizes sum by pl extension)
c (files sizes sum by c extension)
【问题讨论】:
【参考方案1】:我会使用循环,以便您每次都可以提供不同的扩展名,find
只是具有该扩展名的文件:
for extension in c php pl ...
do
find . -type f -name "*.$extension" -print0 | du --files0-from=- -hc
done
总和基于total size of group of files selected with 'find'中的答案。
如果您想要问题中提到的非常具体的输出,您可以存储最后一行,然后将其与扩展名一起打印:
for extension in c php pl ...
do
sum=$(find . -type f -name "*.$extension" -print0 | du --files0-from=- -hc | tail -1)
echo "$extension ($sum)"
done
【讨论】:
【参考方案2】:如果您不想事先命名文件扩展名,stat(1) 程序有一个格式选项 (-c),如果您是在包含它的系统上,xargs(1) 通常有助于提高性能。
#!/bin/sh
find . -type f -name '*.*' -print0 |
xargs -0 stat -c '%s %n' |
sed 's/ .*\./ /' |
awk '
sums[$2] += $1
END
for (key in sums)
printf "%s %d\n", key, sums[key]
'
【讨论】:
提到性能然后管道find
、xargs
、sed
和awk
看起来有点矛盾。
还不错;性能的许多方面。在 shell 脚本的上下文中,我通常希望限制调用的进程数,而 xargs 是一种很好的方法。因此,我在这方面的尝试获得了您命名的四个命令的所有文件扩展名的完整枚举,以及 xargs 调用 stat 的次数(取决于系统 - 每个调用可能在当前系统上处理价值约 128k 的路径名,所以有一个好处)。但似乎 hc 会比 awk 更快地总结文件大小信息......以上是关于unix中的SHELL文件扩展名是.sh还是.c?的主要内容,如果未能解决你的问题,请参考以下文章
UNIX shell 脚本中的“#!/bin/sh”行是啥意思?