A. shell编程中,如何获取当前执行shell的路径
常见的一种误区,是使用pwd命令,该命令的作用是“print name of current/working directory”,这才是此命令的真实含义,当前的工作目录,这里没有任何意思说明,这个目录就是脚本存放的目录。所以,这是不对的。你可以试试bash shell/a.sh,a.sh 内容是 pwd,你会发现,显示的是执行命令的路径/home/june,并不是 a.sh 所在路径:/home/june/shell/a.sh
另一个误人子弟的答案,是$0,这个也是不对的,这个$0是Bash环境下的特殊变量,其真实含义是:
Expands to the name of the shell or shell script. This is set at shell initialization. If bash is invoked with a file of commands, $0 is set to the name of that file. If bash is started with the -c option, then $0 is set to the first argument after the string to be executed, if one is present. Otherwise, it is set to the file name used to invoke bash, as given by argument zero.
这个$0有可能是好几种值,跟调用的方式有关系:
使用一个文件调用bash,那$0的值,是那个文件的名字(没说是绝对路径噢)
使用-c选项启动bash的话,真正执行的命令会从一个字符串中读取,字符串后面如果还有别的参数的话,使用从$0开始的特殊变量引用(跟路径无关了)
除此以外,$0会被设置成调用bash的那个文件的名字(没说是绝对路径)
下面对比下正确答案:
在此解释下basepath:
由此,我们获得了当前正在执行的脚本的存放路径。
B. linux命令中,复制道当前目录怎么写
1、连接上相应的linux主机,进入到等待输入shell指令的linux命令行状态下。
C. Linux如何使用shell查看目录及其子目录下的所有文件
执行tree命令即可按树形结构输出指定目录下的所有子目录和所有文件
D. linux Shell怎么查找指定文件,并进入该文件所在目录,目录有空格
1.使用绝对路径执行的shell文件(如/home/xxx/binfile)
直接使用dirname $0即可
2.对于使用相对路径执行的shell文件(如 ./xxx/binfile)
pwd与dirname结合使用;pwd获得的是执行当前shell文件时,用户所在的位置;dirname可以获得相对于那个位置的偏移:
例如某shell文件所在的位置是/home/user_name/work2/SNS3_server_im/Developing/trunk/im_capp/src/notify_serv/shell文件名
1 #!/bin/sh
2 pwd
3 echo `dirname $0`
执行后输出
/home/user_name/work2/SNS3_server_im/Developing/trunk/im_capp/src
./notify_serv
E. linux下Shell编程:输出当前目录下所有文件,并输出文件总数和目录总数
#!/bin/sh
cd $1
file=`ls -a`
catlog=0
filenum=0
for loop in $file
do
if [ -d "$loop" ];then
catlog=`expr $catlog + 1`
else
filenum=`expr $filenum + 1`
echo "$loop"
fi
done
echo -e "the catlog number is $catlog"
echo -e "the catlog number is $filenum"
F. linux shell 打开执行目录
可以在shell中定义变量,然后使用变量,实现高效的跳转到对应目录,免去了输入较长的地址。
比如我装的LAMP环境,每次跑起环境都挺麻烦的。具体命令如下:
cd /opt/lamppsudo ./manager.run Linux命令需求可查询“Linux命令大全”。
G. 如何在linux中使用shell脚本遍历指定目录的文件,将创建时间大于指定时间的文件,复制到指定目录下。
大于指定时间?最简单的就是直接find里面指定吧。例如,查找当前目录及其子目录所有mtime大于1天的文件:
find
/path
-type
f
-mtime
+1
即可,/path
可以换成其他路径,-mtime
+1
表示时间大于1天。-1的话表示小于一天也就是1天之内的。
H. 在linux下编写shell脚本,判断当前目录下所有文件类型,如果是普通文件,显示内容,如果是目录
forfilein*
do
if[-f"$file"]
then
if[-s"$file"]
then
printf"File:$file "
cat"$file"
else
rm"$file"
fi
else[-d"$file"]
printf"Directory:$file "
ls"$file"
fi
printf" "
done
I. 如何用linux命令进入一个目录 并且执行该目录下的一个文件
用linux命令进入一个目录 并且执行该目录下的一个文件方法如下:
1、打开文件vi(如/etc里面有一个文件hosts,要打开这个文件执行vi hosts);
2、进入编辑模式i,a(打开hosts后不能进行编辑,输入i之后出现---insert就进入编辑模式可以进行编辑了);
3、退出编辑模式,按下Esc;
4、进入命令模式,按下;
5、退出但不保存q;
6、退出保存wq或x;
7、保存w。
J. 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}