对。基本上我想要实现的是一个bash脚本,它接受一个文件作为第一个参数的名称,并显示输入文件是行:Bash脚本采取文件输入和打印内容的一定条件
- 不是目录
- 可执行 而且这些线路应进行排序按升序文件大小顺序。
输入文件的例子,我使用的是具有以下内容:
-rw-r--r-- 1 root software 36 Dec 3 14:27 config
-rwxr-xr-x 1 root software 72 Dec 3 14:27 config2
-rw-rw-r-- 1 jonathan software 7410294 Dec 3 14:28 even larger file
-rwxrwxr-x 1 jonathan software 17290686 Dec 3 14:29 even larger file2
-rwxrwxr-x 1 jonathan software 2470098 Dec 3 14:28 large file
-rwxr-xr-x 1 andrew software 823366 Feb 11 16:25 myprogram
-rwxrwxr-x 1 jonathan software 29568 Dec 3 14:25 script
drwxrwsr-x 2 andrew software 4096 Dec 3 19:24 testdir1
drwxrwsr-x 2 bob software 4096 Dec 3 10:21 testdir2
drwxrwsr-x 2 david software 4096 Aug 23 14:24 testdir3
drwxrwsr-x 2 david software 4096 Dec 3 13:32 testdir4
drwxrwsr-x 2 james software 4096 Jan 5 14:24 testdir5
-rw-rw-r-- 1 james software 85 Dec 3 14:24 testfile1
我写剧本要求的文件名和打印文件的内容:
#!/bin/bash
echo "Please enter your filename:"
read filename
while read line;
do echo -e "$line\n";
done < $filename
但我不知道什么命令来逐行查找内容并搜索不包含“drw”的行以及如何按示例输入文件中给出的大小对行进行排序。
编辑:这是我的问题的第二部分。 现在我想修改脚本以获取第二个参数,如果提供的参数被假定为用户名。只有与用户名匹配的行才会被打印。
如: “乔纳森” 将打印以下:
-rwxrwxr-x 1 jonathan software 29568 Dec 3 14:25 script
-rwxrwxr-x 1 jonathan software 2470098 Dec 3 14:28 large file
-rwxrwxr-x 1 jonathan software 17290686 Dec 3 14:29 even larger file2
你如何得到这样的输入数据?来自ls的输出? – anubhava