Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在linux中不使用完整路径名而将目录作为命令行参数_Bash_Shell_Command Line - Fatal编程技术网

Bash 在linux中不使用完整路径名而将目录作为命令行参数

Bash 在linux中不使用完整路径名而将目录作为命令行参数,bash,shell,command-line,Bash,Shell,Command Line,如何从当前目录中删除另一个目录的内容,而不将另一个目录的完整路径列为命令行参数?我还需要按大小对目录的内容进行排序,并且只输出大小和名称。例如,我有以下shell脚本,名为script.sh: #!/bin/bash ls -lS $1 | awk '{print $5, $9}' lS按大小列出文件,awk只打印大小和文件名作为输出。$1是命令行参数,但现在,它只能接受目录的完整路径才能工作。例如,我有一个路径为/accounts/documents/folder/directory1的目录

如何从当前目录中删除另一个目录的内容,而不将另一个目录的完整路径列为命令行参数?我还需要按大小对目录的内容进行排序,并且只输出大小和名称。例如,我有以下shell脚本,名为
script.sh

#!/bin/bash
ls -lS $1 | awk '{print $5, $9}'
lS按大小列出文件,awk只打印大小和文件名作为输出。$1是命令行参数,但现在,它只能接受目录的完整路径才能工作。例如,我有一个路径为
/accounts/documents/folder/directory1
的目录

要调用此脚本,我必须键入
$script.sh/accounts/documents/folder/directory1
,此脚本才能工作。我的脚本中是否有可以更改的内容,以便在命令行中,只需键入
$script.sh directory1
即可工作


感谢您的帮助

假设您要查找的目录始终是子目录,则以下脚本应该可以工作:

#!/bin/bash
for FILE  in `find . -name "$1" `
do
    if [ -d $FILE ]
    then
        ls -lS $FILE | awk '{print $5, $9}'
    fi
done

如果系统上有多个
directory1
,脚本应该怎么做?它应该使用哪一个?我想我只是假设只有一个目录1,就像我说的那样,使用完整路径是可行的,但我只是想知道是否可以只使用目录名。@kelp99
script.sh directory1
如果您首先
cd/accounts/documents/folder
。从当前目录接受绝对路径和相对路径是所有unix工具和系统调用的工作方式。如果您希望您的工具具有在文件系统中搜索给定名称的非标准行为,那么您必须自己编写代码(可能使用
find
)在整个文件系统中搜索具有该名称的目录会很慢。