shell脚本文件路径
‘壹’ Linux shell 脚本获取当前路径
在Linux shell编程环境中,获取当前工作目录的路径是一个常见操作。要实现这个功能,可以使用内置的"pwd"命令。执行此命令后,它会将当前目录的完整绝对路径输出到变量current_path中,便于后续处理。
具体操作步骤如下:首先,使用"pwd"命令获取路径,然后通过"echo"命令将获取到的路径输出到终端屏幕上。这样,用户就能清晰地看到当前脚本运行的目录位置。
值得注意的是,"pwd"命令返回的是绝对路径,它包括了完整的目录结构和文件系统的根目录。如果你需要的是相对于脚本执行位置的相对路径,可以使用"$0"变量。这个变量会返回执行脚本本身的路径,而不是工作目录,这对于理解脚本在文件结构中的位置很有帮助。
‘贰’ shell脚本判断是文件还是文件夹
判断Shell脚本中的变量是文件还是文件夹,可以使用if语句配合-test或[-d或-f]操作符。例如编写一个简单的脚本f.sh如下:
#!/bin/bash
file=$1
if [[ -z $1 ]];then
echo "Usage: $0 filename"
exit 0;
fi
if [ -d $file ];then
echo $file is a directory;
else
echo $file is a file;
fi
该脚本接受一个参数,检查该参数是否为空,为空则输出使用说明并退出。如果参数存在,则通过[-d $file]判断其是否为目录,如果是目录则输出相应信息,否则输出为文件。
执行示例如下:
./f.sh /opt
/opt is a directory
./f.sh /bin/ls
/bin/ls is a file
在实际应用中,这样的脚本可以用来快速判断路径对应的资源类型,简化文件系统操作的逻辑。
例如,假设你需要根据文件类型执行不同的处理操作,可以在if语句中添加更多条件,例如:
#!/bin/bash
file=$1
if [[ -z $1 ]];then
echo "Usage: $0 filename"
exit 0;
fi
if [ -d $file ];then
echo $file is a directory;
else
if [ -f $file ];then
echo $file is a regular file;
elif [ -L $file ];then
echo $file is a symbolic link;
elif [ -S $file ];then
echo $file is a socket file;
elif [ -B $file ];then
echo $file is a block device file;
elif [ -C $file ];then
echo $file is a character device file;
else
echo $file is a regular file;
fi
fi
以上脚本可以进一步细化文件类型的判断,以满足更复杂的需求。
Shell脚本的强大之处在于灵活性和可扩展性,通过简单的条件判断可以实现复杂的逻辑处理。希望这些示例能够帮助你更好地理解和使用Shell脚本。
‘叁’ 如何用shell编程打印出目录下的所有文件内容
1)看下面的脚本a1.sh,假设要显示目录/home/user/tmp/下面的所有的文件和(子)目录的名字:
$ cat a1.sh
#!/bin/bash
for file in /home/user/tmp/*
do
echo $file
done
2)假设目录/home/user/tmp/下面的所有的文件和(子)目录如下:
$ ls
1.txt 2.txt a1.sh a.sh b.sh email_back m1.doc tmp
3)运行脚本:
$ a1.sh (或者./a1.sh)
/home/user/tmp/1.txt
/home/user/tmp/2.txt
/home/user/tmp/a1.sh
/home/user/tmp/a.sh
/home/user/tmp/b.sh
/home/user/tmp/email_back
/home/user/tmp/m1.doc
/home/user/tmp/tmp
4)脚本a1.sh的作用只是显示文件和子目录的列表,要显示文件的内容,脚本继续改造,内容如下,看脚本a2.sh:
$ cat a2.sh
#!/bin/bash
for file in /home/shiqingd/tmp/*
do
echo $file
if [ -f $file ]; then
cat $file
fi
done
脚本a2.sh可以达到目的。
‘肆’ Linux Shell脚本如何获取当前路径
解答如下:
获取脚本运行所在目标。常用三个方法,推荐第三个
#!/bin/bash
Cur_Dir="$(pwd)"
Cur_Dir="$(cd`dirname$0`;pwd)"
Cur_Dir="$(cd-P"$(dirname"${BASH_SOURCE[0]}")"&&pwd)"
echo${Cur_Dir}
cd${Cur_Dir}