工作中常用的 Shell 命令及技巧

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012593290/article/details/86188194

快速输入历史命令

输入关键词之后,连续使用ctrl+r快速切换

Ctrl+p/n 向上/向下 显示缓存命令

for循环

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")

从URL截取字段

默认去除url的最后斜线:

url=http://xxx/patch/xxx/xxxx/
tar_name=$(echo ${url%*/}|awk -F '/' '{print $NF}')

shell判断字符串包含

if [[ $tar =~ tar.gz ]];then echo "包含";fi

Bash 加 -xe 表示什么意思

-e 使shell立即退出,某些东西会返回一个错误(这通常在shell脚本中用作故障保护机制),
-x 允许详细执行脚本,你可以看到发生了什么

Shell 中的引号

https://blog.csdn.net/miyatang/article/details/8077123

Shell定义变量和给变量赋值

将命令的执行结果赋值给变量:

var='pwd'
# 或者
var=$(pwd)

将 Bash 的内置命令 read 读入的内容赋值给变量:

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中:`

bash中的特殊符号

符号 内容
# 注释符号
|转义符号,将特殊字符或通配符还原成一般字符
竖线 管道
; 连续命令执行分隔符,连续命令的界定
~ 用户的主文件夹
$ 使用变量的前导符
& 作业控制,将命令变成背景下工作
! 逻辑运算意义上的“非”
>,>> 数据流重定向,输出导向,分别是“替换”与“累加”
<,<< 数据流重定向,输入导向
‘’ 但因哈,不具有变量置换的功能
“” 具有变量置换的功能
`` 两个“`”中间为可以先执行的命令,也可以使用$()
() 中间为子shell的起始与结束
{} 中间为命令块的组合

给Linux新增硬盘之后的操作

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 参数表示反选

修改主机名

查看Linux系统版本

lsb_release -a # 适用于所有Linux系统
cat /etc/os-release #推荐
cat /etc/redhat-release # 仅适用于Redhat系列的Linux系统
uname -a # 查看Linux内核
cat /proc/version # 查看Linux内核

显示 shell 执行过程

set -x

如果想隐藏某一行的内容:

set -x
xxxx
set +x
yyyy
set -x

查看端口占用

[[email protected] software]# netstat -apn                查看当前运行的所有进程的端口使用情况
[[email protected] software]# netstat -apn | grep 端口号   查看指定端口使用情况
[[email protected] software]# kill 指定端口的pid号          杀死指定进程(端口号对应的pid)

打印第X行

head -n X | tail -n 1 

显示 Path 环境变量

显示你的环境变量PATH,一个目录一行:

echo $PATH | tr : \\n 

FAQ

Q:Linux各目录的作用

Q:http://blog.csdn.net/u011109356/article/details/54928955

/dev/xvda1 占满

Linux好文

猜你喜欢

转载自blog.csdn.net/u012593290/article/details/86188194