Linux备忘1 - 常用指令看这个

重点内容shell编程

1、shell中$0 $1的问题

$0代表当前使用的shell
echo $0命令行下:显示当前你用的是bash还是csh等。在脚本中:表示当前执行的脚本名称。

[root@localhost sdnoIAAS]# echo $0
-bash
[root@localhost sdnoIAAS]# ./test.sh 
./test.sh

$1,$2一般代表你使用的命令的参数
比如./test.sh 3 4
这个时候,3就是$1的值,4就是$2的值
$?代表上一条命令的返回值,真为0,假为1

2、shell中 ``和$() 是等效的

echo realpath $0
echo $(realpath $0)

3、realpath和dirname两者的区别

echo realpath $0 #打印的是(路径+名称)/usr/local/sdnoPackage/sdnoIAAS/test.sh
echo dirname $0 #打印出来是 . (当前路径,一个点)
获取当前shell的路径:
echo dirname $(realpath $0) #打印出来是(纯路径)/usr/local/sdnoPackage/sdnoIAAS

4、&& 和 ||

顺带看看java中&和&&的区别:
&&和&都是表示与,区别是&&只要第一个条件不满足,后面条件就不再判断。而&要对所有的条件都进行判断
网站:http://blog.csdn.net/lishiyuzuji/article/details/8116516

####5、-z -e
参考链接:http://bbs.csdn.net/topics/300125422
-z代表的是该变量是否有值。
[ -z STRING ] “STRING” 的长度为零则为真。(没有值则是true)
[ -e FILE ] 如果 ****FILE(文件)****存在则为真
例:

FINAL_DIR="/opt/sdno-$(date +%Y%m%d)";
[[ ! -z $1 ]] && FINAL_DIR=$1; 如果//$1不为空(自己传了)就不走&&后面的判断,如果$1为空,那就用FINAL_DIR的值。。下面类似的表达式同理
# local binding ip address
IPADDR=`for f in $(ip link |grep "mtu" | awk '{print $2}' | grep -v "lo"|grep -v "docker*"); do ifname=${f%%@*}; ifname=${ifname%%:}; addrmask=$(ip addr show dev ${ifname}|grep "inet "|awk '{print $2}'); [[ -n ${addrmask} ]] && echo ${addrmask%%/*}; done`;

[[ -z $IPADDR ]] && IPADDR="127.0.0.1";
[[ ! -z $2 ]] && IPADDR=$2;

if [[ ${#IPADDR} -gt 15 ]]; then
    echo "You have multiple IP address, please choose which to use:";
        select s in $IPADDR; do
            [[ -n $s ]] && IPADDR=$s && break;
        done
fi
export IPADDR;

####6、 [[和[
1…"["是一条命令, 与test等价,大多数shell都支持
“[[”,是关键字,许多shell(如ash bsh)并不支持这种方式
2…[[]]结构比Bash版本的[]更通用。用[[ … ]]测试结构比用[ … ]更能防止脚本里的许多逻辑错误。比如说,&&,||,<和>操作符能在一个[[]]测试里通过,但在[]结构会发生错误。
3、字符串转换会用到[[]],一般的话用[]也可以

####7 yum mysql客户端

yum search mysql
yum install mysql
安装mysql客户端:
          yum install mysql
安装mysql 服务器端:
          yum install mysql-server
          yum install mysql-devel
如果yum install mysql有问题,那么先用rpm -e 删掉已有的安装包。
注:mysql客户端的包名不一定包含mysql,也有可能是mariadb

装完之后看包名
[root@cgs-v5-e2e-12 local]# which mysql
/usr/bin/mysql
[root@cgs-v5-e2e-12 local]# rpm -qf /usr/bin/mysql
mariadb-5.5.56-2.el7.x86_64
不同机器rpm -qf 不一样
[root@localhost bin]# rpm -qf /usr/bin/mysql
community-mysql-5.6.21-5.fc21.x86_64

####8、关于rpm

rpm -qf `which 程序名` #返回软件包的全名 
rpm -qif `which 程序名` #返回软件包的有关信息 
rpm -qlf `which 程序名` #返回软件包的文件列表

注意,这里不是引号,而是`,就是键盘左上角的那个键。也可以使用rpm -qilf,同时输出软件包信息和文件列表
等同于 which mysql | xargs rpm -qfil 
关于rpm详细用法见: http://man.linuxde.net/rpm

9、关于查找
which主要用来查找可直接执行的命令,可以查找***别名***。通过which (命令别名),查找到命令的位置
whereis比which的搜索范围大了一些,同时可以查找源文件和man文件。这两个命令适用于查找安装好的命令
locate的查找范围更大,可以查找任意类型文件。适合快速查找指定文件。
find最强大也最慢。适合查找前几个命令找不到的文件。

关于四种命令的详细用法见:
http://blog.csdn.net/l1902090/article/details/24887997

10、重定向

[[ -e $FINAL_DIR/zenap-msb-apigateway ]] && (
        cd $FINAL_DIR/zenap-msb-apigateway;
        [[ -z $V ]] && ./shutdown.sh 2> /dev/null 1> /dev/null || ./shutdown.sh
);

-z $V 意思是执行脚本的时候如果给v加了一个变量,那么就会执行./shutdown.sh,把错误信息都输出到屏幕上。
/shutdown.sh 2> /dev/null 1> /dev/null和./shutdown.sh的区别:前者是不输出任何东西,都放到空文件并抛弃,后者是把输出信息打印到屏幕上。
另:0表示准备输入
1表示标准输出
2表示标准错误输出

docker ps | grep 容器名字
docker exec -it 容器id /bin/sh
docker restart 容器id

工作中遇到常用的Linux指令记录

查日志
less XX日志文件.log
然后
按 G 到日志最底部,?keyword  向上查找,n 向上匹配下一处匹配文本,N 向下匹配下一处匹配文本。
进入less模式后,键入F,即实时滚动文档,Ctrl + c  退出实时滚动模式,类似效果:tail -f XX日志文件.log

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值