-x
参数运行 bash 脚本时,会显示执行的语句# 也能够在 demo.sh 中加上 set -x bash -x demo.sh
export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
参考php
输入关键词以后,连续使用ctrl+r
快速切换html
Ctrl+p/n
向上/向下 显示缓存命令linux
须要远程到其余节点上执行一些 shell 命令,示例:git
#! /bin/sh set -x ssh root@192.168.3.43 > /dev/null 2>&1 << EOF cd /tmp touch test.txt exit EOF echo done
参考:github
echo "Start Datetime:" $(date +"%Y-%m-%d %H:%M:%S") for i in {1..3} do echo $i git pull --all if [ $? -ne 0 ] then echo "不成功" # 睡眠2s sleep 2 else break fi done echo "End Datetime:" $(date +"%Y-%m-%d %H:%M:%S")
参考:shell
判读字符串(\(str)是否包含另外一个字符串(\)str1):centos
方法1:缓存
if [ `echo $str | grep -e '$str1'` ] ; then echo yes fi
方法2(若是$str1
在判断中直接使用字符串而不是变量,则不能加引号,如if [[ $str =~ ^dx ]]
判读字符串$str
是否以dx
开头,^dx
不能加引号):bash
if [[ $str =~ $str1 ]] ; then echo yes fi
比较两个字符串是否相等的办法是:ssh
if [ "$test"x = "test"x ]; then
这里的关键有几点:
"$test"x
最后的x
,这是特地安排的,由于当$test为空的时候,上面的表达式就变成了x = testx
,显然是不相等的。而若是没有这个 x
,表达式就会报错:[: =: unary operator expected
参考:
默认去除url的最后斜线:
url=http://xxx/patch/xxx/xxxx/ tar_name=$(echo ${url%*/}|awk -F '/' '{print $NF}')
if [[ $tar =~ tar.gz ]];then echo "包含";fi
-xe
表示什么意思-e
使shell当即退出,某些东西会返回一个错误(这一般在shell脚本中用做故障保护机制),
-x
容许详细执行脚本,你能够看到发生了什么
https://blog.csdn.net/miyatang/article/details/8077123
var='pwd' # 或者 var=$(pwd)
echo -n "Enter var:";read var
符号 | 意义 |
---|---|
* | 表明0个到无穷多个任意字符 |
? | 表明必定有一个任意字符 |
[] | 一样是表明必定有一个在中括号内的字符(非任意字符)。例如,[abcd]表明必定有一个字符,多是这四个中的一个 |
[-] | 若减号在括号内,表明在编码顺序内的全部字符。例如,[0-9]表明0-9之间全部数字,由于数字的语系编码是连续的 |
[^] | 若中括号第一个字符是^ ,表示原向选择,例如[^abc]表明必定有一个字符,只要是非a,b,c的其余字符就接收 |
/etc/
目录下文件夹名字恰好有5个字母的文件名:ll -d /etc/?????
/etc/
下面文件名含有数字的的文件名:ll -d /etc/*[0-9]*
/etc/
下面文件名开头非小写字母的文件名:ll -d /etc/[^a-z]*
/tmp
中:`符号 | 内容 |
---|---|
# | 注释符号 |
\ | 转义符号,将特殊字符或通配符还原成通常字符 |
竖线 | 管道 |
; | 连续命令执行分隔符,连续命令的界定 |
~ | 用户的主文件夹 |
$ | 使用变量的前导符 |
& | 做业控制,将命令变成背景下工做 |
! | 逻辑运算意义上的“非” |
>,>> | 数据流重定向,输出导向,分别是“替换”与“累加” |
<,<< | 数据流重定向,输入导向 |
'' | 单引号,不具备变量置换的功能 |
"" | 具备变量置换的功能 |
`` | 两个重音符中间为能够先执行的命令,也可使用$() |
() | 中间为子shell的起始与结束 |
{} | 中间为命令块的组合 |
fdisk -l #查看磁盘状况,发现有磁盘没有分区,好比是/dev/xvde fdisk /dev/xvde #进行磁盘分区的操做
fdisk
磁盘分区时,能够输入m
,会有提示:
Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)
我依次这么输入的:
add a new partition:n partion type:p Partion number:分区个数 1 First sector默认值:Enter Lase sector默认值:Enter print the partion table:p write table to disk and exit:w
分区完成以后,须要格式化
mkfs -t ext4 /dev/xvde1
将新建分区挂载到/data目录下:
mkdir /data mount /dev/xvde /data
挂载完毕,输入df -hT
能够查看到新建的分区
设置文件系统的自动挂载
vi /etc/fstab
添加/dev/xvde1 /data ext4 defaults 0 1
在 fstab 配置文件中加入挂载点以后其实就已是开机自动挂载了,不须要用 mount 命令挂载。可是仍是用 mount 实在,由于最后仍是须要写入/etc/fstab
第一段能够用分区名,也能够用 blkid
的方式获取 UUID
的值
参考:
只将不带注释的内容提取出来,做为配置文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
-v 参数表示反选
lsb_release -a # 适用于全部Linux系统 cat /etc/os-release #推荐 cat /etc/redhat-release # 仅适用于Redhat系列的Linux系统 uname -a # 查看Linux内核 cat /proc/version # 查看Linux内核
set -x
若是想隐藏某一行的内容:
set -x xxxx set +x yyyy set -x
[root@centos7.4 software]# netstat -apn 查看当前运行的全部进程的端口使用状况 [root@centos7.4 software]# netstat -apn | grep 端口号 查看指定端口使用状况 [root@centos7.4 software]# kill 指定端口的pid号 杀死指定进程(端口号对应的pid)
head -n X | tail -n 1
显示你的环境变量PATH,一个目录一行:
echo $PATH | tr : \\n
ls -l
查看文件是,显示的就是 mtime;利用 stat file_name
能够查看文件 「amc」time 。
echo "hello" >> issue
写文件操做(>>
方式)不会致使 atime(访问时间)的修改,可是 mtime 和 ctime 会发生修改。mtime 修改了咱们能够理解的,毕竟咱们修改了文件的,
那为什么ctime也修改了呢, 仔细能够发现咱们文件的大小发生了变化,也就是元数据发生了变化,因此ctime也是要变化的
参考:
/dev/xvda1
占满