目录
@
-x
参数运行 bash 脚本时,会显示执行的语句# 也可以在 demo.sh 中加上 set -x
bash -x demo.sh
export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
参考
输入关键词之后,连续使用ctrl+r
快速切换
Ctrl+p/n
向上/向下 显示缓存命令
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")
参考:
判读字符串(\(str)是否包含另一个字符串(\)str1):
方法1:
if [ `echo $str | grep -e '$str1'` ] ; then
echo yes
fi
方法2(如果$str1
在判断中直接使用字符串而不是变量,则不能加引号,如if [[ $str =~ ^dx ]]
判读字符串$str
是否以dx
开头,^dx
不能加引号):
if [[ $str =~ $str1 ]] ; then
echo yes
fi
比较两个字符串是否相等的办法是:
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目录下:
cd /home
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 占满
原文:https://www.cnblogs.com/michael-xiang/p/10465703.html