unix简单的代码解读,以及各自的作用

img


在unix中,如果有一个file叫做underthecovers,那么这一串代码的作用是什么,在每一个中竖线又代表什么意思

上面的命令等价于下面形式,并给出了解释。其实你可以通过man命令来查询每个命令的意思。

find underthecovers -type f | # 从underthecovers目录下查找文件,其中-type f是指regular file,运行结果是每行一个文件路径。然后把输出结果通过管道传给下一个命令
while read file ; do # 循环从管道读取每一行(文件路径)到变量file
    file $file | # 使用file命令查看$file变量所指文件的文件类型,将输出结果通过管道传给下一个命令
    grep -i -q ascii && head -1 $file | # 搜索file命令输出结果,如果其中含有字符串ascii(不区分大小写),则打印该文件的第一行,通过管道传给下一个命令
    grep '^#!' && echo $file # 如果行首以#!开始,则打印这个文件的路径
done

中竖线代表管道,有一定的过滤作用,这种文件系统不太懂,大致意思就是先找到你指定的文件,然后过滤一下对应的aslii ,之后找到前多少信息并列出来,遇到特殊字符结束

利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。

意思是:从当前路径读取所有文件,查找文件类型是f的文件underthecovers,找到文件后,输出文件头中的assic编码注释行,不区分大小写

代码解释

  • 1、第一段代码 find 查找文件
find 你的文件路径 -type f  # 查找这个路径下的所有文件
  • 2、第二段代码 while do 循环 读取文件
   下面的while do循环是读取上面`这个路径下的所有文件`
  • 3、最后一段代码 grep head echo 每个文件内容抓取然后获取特殊字符,输出
grep 对文件内容进行抓取,只抓取后边提到的内容
head -l 列出文件信息
echo 输出抓取到的文件内容

命令参考:


Shell 流程控制 | 菜鸟教程 Shell 流程控制 和 Java、PHP 等语言不一样,sh 的流程控制不可为空,如(以下为 PHP 流程控制写法): 实例 [mycode4 type='php'].. https://www.runoob.com/linux/linux-shell-process-control.html

Shell echo命令 | 菜鸟教程 Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式: echo string 您可以使用echo实现更复杂的输出格式控制。 1.显示普通字符串: echo 'It is a test' 这里的双引号完全可以省略,以下命令与上面实例效果一致: echo It is a test 2.显示转义字符 echo '\ https://www.runoob.com/linux/linux-shell-echo.html

Linux grep 命令 | 菜鸟教程 Linux grep 命令 Linux 命令大全 Linux grep 命令用于查找文件里符合条件的字符串。 grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。 语法 grep [-abcEFGhHilLnqrsvVwxy][-A][-B][-C.. https://www.runoob.com/linux/linux-comm-grep.html

Linux head 命令 | 菜鸟教程 Linux head 命令 Linux 命令大全 head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。 命令格式: head [参数] [文件] 参数: -q 隐藏文件名 -v 显示文件名 -c<数目> 显示的字节数。 -n<行数> 显示的行数。 实例 要显示 runoob_notes.. https://www.runoob.com/linux/linux-comm-head.html