shell一些日常用到的命令

shell中的一些命令:


:<<

:<<EOF
这个命令相当于idea中的/ /,中间的内容相当于被注释掉
也可以换成别的字符,只要上下保持一致
EOF

文件标识符(fd)

linux中一切都是文件
要对打开的文件进行追踪的话就要对文件进行标识(都是数字0-9)
比如:
‘0’代表标准输入,在前台输入
‘1’代表正确输出,打印在控制台
‘2’代表错误输出,打印到控制台
其他的数字自定义用来进行文件的重定向等功能

1>$2 或者2>$1
这两个命令的理解如下:
在shell中
‘0’代表标准输入,在前台输入
‘1’代表正确输出,打印在控制台
‘2’代表错误输出,打印到控制台
‘>’代表重定向(覆盖)
'>>'代表重定向(追加)
执行shell命令打印到控制台的正确内容就是‘1’输出
执行shell命令打印到控制台的报错信息就是‘2’输出
echo 1>a.txt 2>b.txt 的意思是将正确内容覆盖到a.txt 将错误内容覆盖到b.txt
1>&2 正确返回值传递给2输出通道 &2表示2输出通道
如果此处错写成 1>2, 就表示把1输出重定向到文件2中.
2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道.
& 是一个描述符,如果1或2前不加&,会被当成一个普通文件。


exit :退出程序

约定0正确
约定大于0的错误,一般用1


删除文件内容:

true >文件名  

# 注意>与文件名之间不可有空格
# 或者 vim进入编辑器后 :0,&d

command < file
#是命令的输入源从file中读取
command > file
#是命令的结果输出到文件之中
command >> file
# \>是覆盖,>>是追加到文件末尾

mkfifo命令

# mkfifo [options] file...
# 有名管道+无名管道=管道
# 有名管道(FIFO文件):就是 有文件名的管道, 可以用于任意两个进程间的通信
# 无名管道(pipe文件):就是没有文件名的管道, 只能用于父子进程之间的通信
# mkfifo命令创建一个FIFO特殊文件,是一个命名管道(可以用来做进程之间通信的桥梁)

exec

#不改变pid的情况下启动新的进程来执行任务
#查询文件大于100M的文件

ll  /home/tangjiawei | awk '{if($5>104857600)print$9}'|sed '/^$/d'
#或者
ls -lh /home/tangjiawei | awk '$5 ~ /M|G|T/{print$9}'|sed '/^$/d'

xargs

#-p                          当每次执行一个分隔符(默认的xargs分隔符是空格)的时候询问一次用户。
#-n num                  num为个数,表示命令在执行的时候一行用的分隔符的个数,默认是用所有的。选项指定要传递给命令的参数个数。xargs根据需要多次运行指定的命令,直到所有参数都用完为止。
#-t                           表示先打印,然后再执行。
#-i                           一行一行赋值给 {},默认是单行。
#-r                          当xargs的输入为空的时候则停止xargs,不用再去执行了。
#-L num                 从标准输入一次读取 num 行送给 command 命令。
#-l 同 -L。
#-d delim               delim分隔符,这里修改的是xargs的分隔符。

vim

#删除全部内容 删除某行开始将开始行号替换0
:0,$d
#设置行号
:set number
:set nonu
#查找 下一个n 上一个N
/

方法

#定义:
funName (){
#代码块
#参数 为$1,$2
aa=$1
bb=$2
#返回值 返回字符串或者变量用echo 返回整数用return
return 1
echo ${aa}
}
#使用 方法名 参数...
#可以将返回值保留为变量
cc=`funName 10 20`

ssh

#远程执行命令
ssh user@ip "命令1;命令2"
#远程杀死进程 需要先查出进程号保存变量再次远程杀掉进程
pid=$(ssh user@ip "ps -ef | grep ${地址} | grep -v 'grep' | awk '{print $2}'" |awk '{print $2}')
ssh user@ip "kill -9 ${pid};sleep 5"
#远程启动进程 需要cd 到相应目录 再执行 否则可能线程启动实际任务没有启动
ssh user@ip "cd path/ && ./start.sh"

split

#split -b使用大小切割 -d 使用数字作为后缀 -a 后缀是3位
# && ls | grep ${lines}_ | xargs -n1 -i{} mv {} {}.tar.gz 为文件添加扩展名
split -b 100M ${lines}.tar.gz -d -a 3 ${lines}_ && ls | grep ${lines}_ | xargs -n1 -i{} mv {} {}.tar.gz
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值