1. linux shell编程,这个命令if [ "$pid" ]; then...。什么时候if条件判断为true和false呢
只有当pid为空时,if条件才会为false。如果pid是程序获取的进程号,那么就是当进程存在时(pid不为空)为true,当进程不存在时(pid为空)为false。
1、pid=""
if条件为false,如下面输出2:
pid=""
if["$pid"]
then
echo"1"
else
echo"2"
fi
2、pid=任何非空值
if条件为true,如下面输出1:
pid="0"
if["$pid"]
then
echo"1"
else
echo"2"
fi
希望能够帮助到你,你的好评是我前进的动力,谢谢!
2. 如何在linux命令行下修改时区
查看时区
cat /etc/sysconfig/clock
设置时区
tzselect
timeconfig
cat /etc/sysconfig/clock ZONE=”Asia/Shanghai” —> /usr/share/zoneinfo 下面的文件。 UTC=false —> 硬件时钟是否为 UTC 或者说 GMT 时钟。 ARC=false —> 如果是在 Alpha 机器上,则设置为 true 。
把硬件时钟设置为 UTC 的好处就是他能自动设置夏时制,缺点是,在安装有多重操作系统启动的机器上,在另外的操作 系统上时钟会错误。
Linux 的时钟设置文件为:/etc/localtime ,实际上这个文件是 /usr/share/zoneinfo 目录下对应文件的符号连接。 假设我们所处的地区位于上海,那么只要运行以下的命令就可以设置时区了。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
Linux 启动时,其中的一个脚本(/etc/rc.d/rc.sysinit)会运行 /sbin/hwclock 程序,把当前的硬件时钟复制为系统 时间。hwclock 假定硬件时钟已经设置为本地时钟,除非带有 –utc 参数。脚本文件会读取 /etc/sysconfig/clock 文 件的设置,因此我们不需要修改脚本,直接修改这个配置文件就可以了,根据需要把其中的 UTC 行,设置为 true 或 者 false。
设置硬件时钟时,首先使用 date 命令(“date MMDDhhmmYYYY.ss”) 设置好系统时钟,然后使用 “/sbin/hwclock –systohc” 把硬件时钟设置为和当前系统时间一致。
如果你在某些应用下面的时间是错误的,那么你在运行 Red Hat Linux 5.0 或 5.1,解决的办法是建立 /usr/lib/zoneinfo 到 /usr/share/zoneinfo 的符号连接:
ln -s /usr/share/zoneinfo /usr/lib/zoneinfo
小结:时钟设置的问题本身比较简单,但是它涉及到几个基本的配置文件:
/etc/rc.d/rc.sysinit /etc/sysconfig/clock /etc/localtime /usr/share/zoneinfo时区的配置文件是/etc/sysconfig/clock。用tzselect命令就可以修改这个配置文件,根据命令的提示进行修改就好了。 但是在实际工作中,发现这种方式是不能够使得服务器上的时间设置马上生效的,而且使用ntpdate去同步时间服务器也不能够更改时间。即使你使用了date命令手工设置了时间的话,如果使用ntpdate去进行时间同步的话,时间又会被改动到原来的错误时区的时间。而生产的机器往往是非常重要的,不能够进行重启等操作。 在网上找了几种方法试了下,发现如果要修改时区并且马上生效,可以更换/etc/localtime 文件来实现。比如我的时区是中国上海,那么就可以使用如下的命令来使得时区的更改生效。 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 然后最好使用下面的命令将更改写入bios。
3. Linux bash/sh/shell编程中的if语句应该怎么写
line="#abcmatch
BCD"
REGEXP="^[#]"
#
变量赋值不需要前缀$
if
[[
$line
=~
$REGEXP
]]
&&
[[
$line
!=
''
]];
then
#粗心
[[
]]
要配对使用
你写成了
[[
]
[
]]
true
#shell
不能使用空的if
结构,至少要有一个命令。
可以使用true命令
。
echo
yes
else
echo
NO
fi
###
end
另外Bash
不支持完全的正则表达式。[[
“$line”
=~
“$REGEXP”
]]
不能达到你想要的效果。
需要使用echo
"$string"|
grep
-qP
/regexp/
Zsh
支持完整的正则表达式,
[[
“$line”
=~
“$REGEXP”
]]
能达到你想要的效果。
4. 工作中总结的常用linux命令(Ⅱ)
[1] 每两行合并在一起
<@dahu>awk 'ORS=NR%2?" ":"\n"{print}'
[2] 每三行合并在一起
<@dahu>awk 'ORS=NR%3?" ":"\n"{print}'
[3] 每四行合并在一起
<@dahu>awk 'ORS=NR%4?" ":"\n"{print}'
[4] 统计std cell和sRam占的面积
<@dahu>summaryReport
[5] 找出drc的port相关的数量
<@dahu>cat postroute_opt.drc | grep -B1 Type: | grep -v Type: | grep "\[" |-
[6] 获得选中的pin的名字
<@innovus>dbget selected.name
[7] 对一个文件,多目标删除
<@dahu>sed -i 's/MODE1\|MODE2\|MODE3\|MODE4\|MODE5//g'
[8] 获得不规则fplan的坐标组
<@innovus>dbget top.fplan.boxes
[9] 在某个目录下找到带某个字符的文件[区分大小写]
<@dahu>find -iname "*tcic*"
[10] 在某个目录下,遍历所有文件内容,得到含有某个字符/字符串的行
<@dahu>grep -r 'insertion delay' ./
[11] 查看当前的INNOVUS版本号
<@dahu>echo $INVS_VER
[12] 替换某个目录下所有文件内容
<@dahu>sed -i"s/查找的内容/替换后的内容/g"`grep -rl"查找的内容"./`
[13] 在gui界面下highlight某条path
<@dahu> ctd_trace -from * -to * -color *
[14] 引用${REV},为什么采用大括号{}
为了防止引用造成后面错乱。
如:/fs/omp_com_03/RELEASE/top2hlb/R1/HLB_DEF/${REV}/${top}.def.gz
[15] 解压命令
gzip -d FileName.gz
[16] 换某个cell的坐标 {AAA, BBB}
<@innovus> dbset [dbget top.inst.name XXXXXXXX].pt_x AAA
<@innovus> dbset [dbget top.inst.name XXXXXXXX].pt_y BBB
<@innovus> zoomSelected
[17] 设置某一个cell不用
<@innovus> set_dont_touch BUFF false
<@innovus> set_dont_touch BUFF true
[18] 找某个性质
<@innovus> dbSet [].?h
[19] 删去空白行
vim 中:g/^s*$/d
简单解释一下:
g :全区命令
/ :分隔符
^s*$ :匹配空行,其中^表示行首,s表示空字符,包括空格和制表符,*重复0到n个前面的字符,$表示行尾。连起来就是匹配只有空字符的行,也就是空行。
/d :删除该行
[20] echo 写入带有双引号""的内容。
echo ‘ “AAAbbb” ’ >> 1.tcl
[21] echo 写入带有单引号‘’的内容。
echo “ ‘AAAbbb' ” >>1.tcl
[22] keep CPU 数目
<@innovus>setMultiCpuUsage -localCpu 16
<@innovus>history keep 999999
[23] 打开xlsm文件
openoffice.org 文件
[24] 显示clock path路径
<@innovus> report_timing -to XXX -path_type full_clock
[25]报出没有被约束到的path
<@innovus> report_timing -to XXX -uncounstrained
[26]报出穿过path中的某一点
<@innovus> report_timing -to XXX -view
view = MODE + corner
[27] vim 全选(高亮显示 ):按esc后,然后ggvG或者ggVG
[28]