cur_dir=$(cd "$(dirname "$0")"pwd)
2. C语言版本方法一、用realpath函数。这种方法用于开机启动程序获取自身目录
会出错
char current_absolute_path[MAX_SIZE]
//获取当前目录绝对路径
if (NULL == realpath("./", current_absolute_path))
{
printf("***Error***\n")
exit(-1)
}
strcat(current_absolute_path, "/")
printf("current absolute path:%s\n", current_absolute_path)
方法二、用getcwd函数。这种方法用于开机启动程序获取自身目录会出错
char current_absolute_path[MAX_SIZE]
//获取当前目录绝对路径
if (NULL == getcwd(current_absolute_path, MAX_SIZE))
{
printf("***Error***\n")
exit(-1)
}
printf("current absolute path:%s\n", current_absolute_path)
方法三、用readlink函数。这种方法最可靠,可用于开机启动程序获取自身目录
char current_absolute_path[MAX_SIZE]
//获取当前程序绝对路径
int cnt = readlink("/proc/self/exe", current_absolute_path, MAX_SIZE)
if (cnt <0 || cnt >= MAX_SIZE)
{
printf("***Error***\n")
exit(-1)
}
//获取当前目录绝对路径,即去掉程序名
int i
for (i = cnti >=0--i)
{
if (current_absolute_path[i] == '/')
{
current_absolute_path[i+1] = '\0'
break
}
}
printf("current absolute path:%s\n", current_absolute_path)
#!/bin/bash
read -p '请输入要复制的路径(此路径下的所有文件会被复制):' from
read -p '请输入要复制到的路径(源路径下的所有文件都会在此路径下所有子文件夹中被复制一份):' target
dirs=`ls $target -F | grep "/$"` # 找同级文件夹
# dirs=`find $target -type d -path $from -prune -o -path $target -prune -o -print`
# dirs=`find $target -type d` # 找所有子文件夹
for dir in $dirs
do
if [ "`realpath $target/$dir`" != "`realpath $from`" ] && [ "`realpath $target/$dir`" != "`realpath $target`" ]
then
cp -r $from/* $target/$dir
#cp -r $from/* $dir/
fi
done
评论列表(0条)