1、shell中判断文件或文件夹是否存在
#shell判断文件夹是否存在 #如果文件夹不存在,创建文件夹 if [ ! -d "/myfolder" ]; then mkdir /myfolder fi #shell判断文件,目录是否存在或者具有权限 folder="/var/www/" file="/var/www/log" # -x 参数判断 $folder 是否存在并且是否具有可执行权限 if [ ! -x "$folder" ]; then mkdir "$folder" fi # -d 参数判断 $folder 是否存在,-p参数表示多级目录逐级创建 if [ ! -d "$folder" ]; then mkdir -p "$folder" fi # -f 参数判断 $file 是否存在 if [ ! -f "$file" ]; then touch "$file" fi # -n 判断一个变量是否有值 if [ ! -n "$var" ]; then echo "$var is empty" exit 0 fi # 判断两个变量是否相等 if [ "$var1" = "$var2" ]; then echo '$var1 eq $var2' else echo '$var1 not eq $var2' fi
2、Linux下查看是否安装某软件包
(1)、rpm包安装的,可以用 rpm -qa 看到,如果要查找某软件包是否安装,用 rpm -qa | grep "软件或者包的名字"
(2)、以deb包安装的,可以用 dpkg -l 看到。如果是查找指定软件包,用 dpkg -l | grep "软件或者包的名字"
(3)、yum方法安装的,可以用 yum list installed 查找,如果是查找指定包,用 yum list installed | grep "软件名或者包名"
3、查找某个关键线程的PID
_SENSU_CLIENT_KEYWORDS=sensu-client _SENSU_CLIENT_PID=$( ps aux | grep ${_SENSU_CLIENT_KEYWORDS} | grep -v grep | awk '{print $2}' )
4、Sed命令在指定行插入内容
在指定行数之前
sed -i '363i AddType application/x-httpd-php .php' /usr/local/webserver/apache/conf/httpd.conf
- 在httpd.conf文件的第363行的上面插入 AddType application/x-httpd-php .php
- AddType application/x-httpd-php .php 所在行为第363行,原来行变成了第364行!
注意在行数后面的字母“i”
在指定行数之后
sed -i '363a AddType application/x-httpd-php .php' /usr/local/webserver/apache/conf/httpd.conf
- 在test.txt文件的第363行的下面插入 AddType application/x-httpd-php .php
- AddType application/x-httpd-php .php 所在行为第364行,原来行不变任然为第363行!
注意在行数后面的字母“a”
5、vim中替换字符串命令
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
6、挂载iso文件到指定路径
mount –o loop linux.iso /mnt/iso
7、全部删除/全部复制/全部高亮显示
全部删除:按esc后,然后dG
全部复制:按esc后,然后ggyG
全选高亮显示:按esc后,然后ggvG或者ggVG
8、启动服务到后台
nohup ./prometheus > prometheus.log 2>&1 &
9、在linux中发邮件:
echo "hello world" | mail -s "a subject" someone@somewhere.com
邮件主题是:a subject, 内容是:hello world, 邮件地址是:someone@somewhere.com
10、shell中循环数据
#!/bin/bash string="hello,shell,haha" array=(${string//,/ }) for var in ${array[@]} do echo $var done