-r 侦测该档名是否存在且具有『可读』的权限?
-w 侦测该档名是否存在且具有『可写』的权限?
-x 侦测该档名是否存在且具有『可执行』的权限?
-u 侦测该档名是否存在且具有『SUID』的属性?
-g 侦测该档名是否存在且具有『SGID』的属性?
-k 侦测该档名是否存在且具有『Sticky bit』的属性?
-s 侦测该档名是否存在且为『非空白档桉』?
3. 两个档桉之间的比较,如: test file1 -nt file2
-nt (newer than)判断 file1 是否比 file2 新
-ot (older than)判断 file1 是否比 file2 旧
-ef 判断 file1 与 file2 是否为同一档桉,可用在判断 hard link 的判定上。 主要意义在判定,两个档桉是否均指向同一个 inode 哩!
4. 关于两个整数之间的判定,例如 test n1 -eq n2
-eq 两数值相等 (equal)
-ne 两数值不等 (not equal)
-gt n1 大于 n2 (greater than)
-lt n1 小于 n2 (less than)
-ge n1 大于等于 n2 (greater than or equal)
-le n1 小于等于 n2 (less than or equal)
5. 判定字串的资料
test -z string 判定字串是否为 0 ?若 string 为空字串,则为 true
test -n string 判定字串是否非为 0 ?若 string 为空字串,则为 false。
注: -n 亦可省略
test str1 = str2 判定 str1 是否等于 str2 ,若相等,则回传 true
test str1 != str2 判定 str1 是否不等于 str2 ,若相等,则回传 false
6. 多重条件判定,例如: test -r filename -a -x filename
-a (and)两状况同时成立!例如 test -r file -a -x file,则 file 同时具有 r 与 x 权限时,才回传 true。
-o (or)两状况任何一个成立!例如 test -r file -o -x file,则 file 具有 r 或 x 权限时,就可回传 true。
filename[1]="p_w_picpath_k.c"
filename[2]="pipeline_info_ctrl.c"
filename[3]="pipeline_op_ctrl.c"
filename[4]="pl_audio.c"
filename[5]="pl_audio.h"
filename[6]="pl_video.c"
filename[7]="pl_video.h"
filename[8]="pm_device.c"
filename[9]="pm_surface_internal.c"
filename[10]="pm_device.c"
filename[11]="vpmfb.c"
filename[12]="pipeline_manager.h"
filename[13]="pl_tuner.c"
filename[14]="pl_tuner.h"
filename[15]="pnx8400_a9_env.sh"
sourcefile_path[0]="$NXP_BASE_ROOT/target/src/sd/video/lnxDrv/comps/lnxtmvssIO/src"
sourcefile_path[1]="$NXP_BASE_ROOT/target/src/sd/video/lnxDrv/comps/lnxtmvssIO/src/"
sourcefile_path[2]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrPipeline/src/"
sourcefile_path[3]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrPipeline/src/"
sourcefile_path[4]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrPipeAudio/src/"
sourcefile_path[5]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrPipeAudio/inc/"
sourcefile_path[6]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrPipeVideo/src/"
sourcefile_path[7]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrPipeVideo/inc/"
sourcefile_path[8]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrVideoPres/src/"
sourcefile_path[9]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrVideoPres/src/"
sourcefile_path[10]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrVideoPres/src/"
sourcefile_path[11]="$NXP_BASE_ROOT/target/src/sd/celf/drivers/comps/vpmfbDrv/src/"
sourcefile_path[12]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrPipeline/inc/"
sourcefile_path[13]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrPipeTuner/src/"
sourcefile_path[14]="$NXP_BASE_ROOT/target/src/sd/pvr/drivers/comps/tmpvrPipeTuner/inc/"
sourcefile_path[15]="$NXP_BASE_ROOT/"
patchfile_path="$NXP_BASE_ROOT/../PATCH/"
backupfile_path="$NXP_BASE_ROOT/../PATCH/backup/"
#/bin/echo $pathchfile
#/bin/echo $backupfile
{
for (( i = 0; i < 16 ; i ++ ))
do
sourcefile=${sourcefile_path[$i]}${filename[$i]}
pathchfile=$patchfile_path${filename[$i]}
backupfile=$backupfile_path${filename[$i]}
then
/bin/echo "$sourcefile file exit!"
if [ -e $backupfile ]
then
/bin/echo "Backup file exit! Ignore it..."
else
/bin/echo "Backup file now..."
cp -f $sourcefile $backupfile
fi
/bin/echo "Overlay file..."
cp -f $pathchfile $sourcefile
else
/bin/echo "Source file not exit!Pls check the source path"
fi
done
}
{
for (( i = 0; i < 16 ; i ++ ))
do
sourcefile=${sourcefile_path[$i]}${filename[$i]}
pathchfile=$patchfile_path${filename[$i]}
backupfile=$backupfile_path${filename[$i]}
then
/bin/echo "$sourcefile file exit! restore it..."
if [ -e $backupfile ]
then
/bin/echo "Restore file now..."
cp -f $backupfile $sourcefile
/bin/echo "delete backup file..."
rm -f $backupfile
else
/bin/echo "Backup file missing,please check..."
fi
else
/bin/echo "Source file not exit!Pls check the source path"
fi
done
}
/bin/echo "NXP_BASE_ROOT Missing,Please run setup.sh first!"
return
fi
then
/bin/echo "Overlay script for Huangpu application!"
/bin/echo "Useage:"
/bin/echo "patch overlay: overlay the patch files and backup the source files"
/bin/echo "patch restore: restore the source files and delete all backup files"
return
else
case "$1" in
overlay)
/bin/echo "overlay"
overlay
;;
restore)
/bin/echo "restore"
restore
;;
*)
/bin/echo "Overlay script for Huangpu application!"
/bin/echo "Useage:"
/bin/echo "patch overlay: overlay the patch files and backup the source files"
/bin/echo "patch restore: restore the source files and delete all backup files"
;;
esac
fi
find -name "*.[ch]" -exec cp -rf {} ../../SRC/{} \;
tr '\000' '\245' < /dev/zero| dd of=file_0xA5.bin bs=2k count=1
tr '\000' '\252' < /dev/zero| dd of=file_0xAA.bin bs=2k count=1
10. 同时操作部分相同的文件或目录
touch test{0,1,2}
rm -f test{0,1,2}
rm -rf test_dir/abc{1,3}
19 echo -e "$AC_ID\n$AC_ID\n"|passwd $AC_ID && \
20 echo "Create Successfully."
21 echo "Enabling Samba For $AC_ID..."
22 echo -e "$AC_ID\n$AC_ID\n$AC_ID\n"|smbpasswd -s -a $AC_ID && \
23 smbpasswd -e $AC_ID
24 echo "Samba Account for $AC_ID Done."
jobs 查看当前任务列表
fg num 前台运行任务列表中 num 任务
bg num 后台运行任务列表中 num 任务
PING 192.168.100.180 (192.168.100.180) 56(84) bytes of data.
64 bytes from 192.168.100.180: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 192.168.100.180: icmp_seq=2 ttl=64 time=0.005 ms
64 bytes from 192.168.100.180: icmp_seq=3 ttl=64 time=0.004 ms
^Z
[1]+ Stopped ping 192.168.100.180
jacky@debian5:~$ jobs
[1]+ Stopped ping 192.168.100.180
jacky@debian5:~$ ping 192.168.100.28
PING 192.168.100.28 (192.168.100.28) 56(84) bytes of data.
64 bytes from 192.168.100.28: icmp_seq=1 ttl=128 time=1.85 ms
64 bytes from 192.168.100.28: icmp_seq=2 ttl=128 time=0.216 ms
64 bytes from 192.168.100.28: icmp_seq=3 ttl=128 time=0.374 ms
^Z
[2]+ Stopped ping 192.168.100.28
jacky@debian5:~$ jobs
[1]- Stopped ping 192.168.100.180
[2]+ Stopped ping 192.168.100.28
jacky@debian5:~$
b. 利用括号() 使进程成为 init(pid=1) 的子进程
(ping 192.168.0.1 &)
你可以用 ps -ef 看到 进程PID 和父进程PPID的变化
将文件定位在xxx之前,然后你可以用echo换掉接下来的内容