shell应用教程Linux

shell常用命令:

history  | wc -l   //查看当前用户记录的历史命令条数
history |  tail     //查看最近执行的10条命令

!12        //重新执行历史命令列表中的第12条操作

alias    cp='cp -i'   //别名定义

使用>重定向到文件

ls -ld  /etc/   > a.txt   //使用>重定向会将原有的内容覆盖掉,如有文件内用通常用>>追加重定向

2>     //将错误输出信息输出

2>>    //实现错误输出追加到文件

&>   //正确,错误都将输出

 |     //可以将前一个命令的输出交给另一条命令处理,在另一个命令中可以依次使用

例如:

ls -l /etc   |  wc -l  

shell脚本格式:

例如:

vim  /opt/bash.sh

#!/bin/bash

ceho "Hello World"

[root@shell~] bash /opt/bash.sh

Hello World

 

  1. [root@svr5 ~]# vim location.sh
  2. #!/bin/bash
  3. echo $0                                        //脚本的名称
  4. echo $1                                        //第一个参数
  5. echo $2                                        //第二个参数
  6. echo $*                                        //所有参数
  7. echo $#                                        //所有的综合
  8. echo $$                                        //当前进程的进程号
  9. echo $?                                        //上一个程序的返回状态码

[root@svr5 ~]# chmod +x location.sh 

 

环境变量PS1表示Shell环境的一级提示符,即命令行提示符(\u 用户名、\h 主机名、\W 工作目录、\$ 权限标识):

  1. [root@svr5 src]# echo $PS1                  //查看默认的一级提示
  2. [\u@\h \W]\$
  3. [root@svr5 src]#PS1='hehe#'                  //修改一级提示
  4. hehe#                                      //更改结果
  5. hehe# PS1='[\u@\h \W]\$ '                  //恢复原有设置
  6. [root@svr5 src]# 

环境变量PS2表示二级提示符,出现在强制换行、at任务编辑等场合:

  1. [root@svr5 ~]# echo $PS2                      //查看默认的二级提示
  2. >
  3. [root@svr5 src]# cd \                     //强制换行,观察提示符效果
  4. > /root/
  5. [root@svr5 ~]# PS2='=> '                      //手动修改二级提示
  6. [root@svr5 ~]# cd \                          //再次验证提示符效果
  7. => ~
  8. [root@svr5 ~]# PS2='> '                     //恢复原有设置

 

查看系统变量

使用env可查看所有环境变量:

  1. [root@svr5 src]# env
  2. HOSTNAME=svr5.tarena.com
  3. SHELL=/bin/bash
  4. HISTSIZE=1000
  5. SSH_CLIENT=192.168.4.110 59026 22
  6. OLDPWD=/root
  7. SSH_TTY=/dev/pts/0
  8. USER=root
  9. .. ..

 

一行执行多条命令的情况

  1. # A && B                        //仅当A命令执行成功,才执行B命令
  2. # A || B                        //仅当A命令执行失败,才执行B命令
  3. # A ;  B                        //执行A命令后执行B命令,两者没有逻辑关系
  4. # A && B || C                   //思考?

 

1)-eq 比较两个数是否相等。

  1. [root@svr5 ~]# X=20                          //定义一个测试变量
  2. [root@svr5 ~]# [ $X -eq 20 ] && echo "相等" || echo "不相等"
  3. 相等
  4. [root@svr5 ~]# [ $X -eq 30 ] && echo "相等" || echo "不相等"
  5. 不相等

2)-ne 比较两个数是否不相等。

  1. [root@svr5 ~]# X=20                          //定义一个测试变量
  2. [root@svr5 ~]# [ $X -ne 20 ] && echo "不等于" || echo "等于"
  3. 等于
  4. [root@svr5 ~]# [ $X -ne 30 ] && echo "不等于" || echo "等于"
  5. 不等于

3)-gt 比较前面的整数是否大于后面的整数。

  1. [root@svr5 ~]# X=20                          //定义一个测试变量
  2. [root@svr5 ~]# [ $X -gt 10 ] && echo "大于" || echo "否"
  3. 大于
  4. [root@svr5 ~]# [ $X -gt 20 ] && echo "大于" || echo "否"
  5. [root@svr5 ~]# [ $X -gt 30 ] && echo "大于" || echo "否"

4)-ge 比较前面的整数是否大于或等于后面的整数。

  1. [root@svr5 ~]# X=20                          //定义一个测试变量
  2. [root@svr5 ~]# [ $X -ge 10 ] && echo "大于或等于" || echo "否"
  3. 大于或等于
  4. [root@svr5 ~]# [ $X -ge 20 ] && echo "大于或等于" || echo "否"
  5. 大于或等于
  6. [root@svr5 ~]# [ $X -ge 30 ] && echo "大于或等于" || echo "否"

5)-lt 比较前面的整数是否小于后面的整数。

  1. [root@svr5 ~]# X=20                          //定义一个测试变量
  2. [root@svr5 ~]# [ $X -lt 10 ] && echo "小于" || echo "否"
  3. [root@svr5 ~]# [ $X -lt 20 ] && echo "小于" || echo "否"
  4. [root@svr5 ~]# [ $X -lt 30 ] && echo "小于" || echo "否"
  5. 小于

6)-le 比较前面的整数是否小于或等于后面的整数。

  1. [root@svr5 ~]# X=20                          //定义一个测试变量
  2. [root@svr5 ~]# [ $X -le 10 ] && echo "小于或等于" || echo "否"
  3. [root@svr5 ~]# [ $X -le 20 ] && echo "小于或等于" || echo "否"
  4. 小于或等于
  5. [root@svr5 ~]# [ $X -le 30 ] && echo "小于或等于" || echo "否"
  6. 小于或等于

 

1)-e 判断对象是否存在(不管是目录还是文件)

  1. [root@svr5 ~]# [ -e "/usr/" ] && echo "存在" || echo "不存在"
  2. 存在
  3. [root@svr5 ~]# [ -e "/etc/fstab" ] && echo "存在" || echo "不存在"
  4. 存在
  5. [root@svr5 ~]# [ -e "/home/nooby" ] && echo "存在" || echo "不存在"
  6. 不存在

2)-d 判断对象是否为目录(存在且是目录)

  1. [root@svr5 ~]# [ -d "/usr/" ] && echo "是目录" || echo "不是目录"
  2. 是目录
  3. [root@svr5 ~]# [ -d "/etc/fstab" ] && echo "是目录" || echo "不是目录"
  4. 不是目录
  5. [root@svr5 ~]# [ -d "/home/nooby" ] && echo "是目录" || echo "不是目录"
  6. 不是目录

3)-f 判断对象是否为文件(存在且是文件)

  1. [root@svr5 ~]# [ -f "/usr/" ] && echo "是文件" || echo "不是文件"
  2. 不是文件
  3. [root@svr5 ~]# [ -f "/etc/fstab" ] && echo "是文件" || echo "不是文件"
  4. 是文件
  5. [root@svr5 ~]# [ -f "/home/nooby" ] && echo "是文件" || echo "不是文件"
  6. 不是文件

4)-r 判断对象是否可读

此测试对root用户无效,无论文件是否设置r权限,root都可读:

  1. [root@svr5 ~]# cp /etc/hosts /tmp/test.txt          //复制一个文件做测试
  2. [root@svr5 ~]# chmod -r /tmp/test.txt              //去掉所有的r权限
  3. [root@svr5 ~]# [ -r "/tmp/test.txt" ] && echo "可读" || echo "不可读"
  4. 可读                                              //root测试结果仍然可读

切换为普通用户,再执行相同的测试,结果变为“不可读”:

  1. [zengye@svr5 ~]$ [ -r "/tmp/test.txt" ] && echo "可读" || echo "不可读"
  2. 不可读

5)-w 判断对象是否可写

此测试同样对root用户无效,无论文件是否设置w权限,root都可写:

  1. [root@svr5 ~]# chmod -w /tmp/test.txt             //去掉所有的w权限
  2. [root@svr5 ~]# ls -l /tmp/test.txt              //确认设置结果
  3. ---------- 1 root root 33139 12-11 10:43 /tmp/test.txt
  4. [root@svr5 ~]# [ -w "/tmp/test.txt" ] && echo "可写" || echo "不可写"
  5. 可写

切换为普通用户,可以正常使用-w测试:

  1. [zengye@svr5 ~]$ ls -l /tmp/test.txt
  2. ---------- 1 root root 33139 12-11 10:52 /tmp/test.txt
  3. [zengye@svr5 ~]$ [ -w "/tmp/test.txt" ] && echo "可写" || echo "不可写"
  4. 不可写

6)-x 判断对象是否具有可执行权限

这个取决于文件本身、文件系统级的控制,root或普通用户都适用:

  1. [root@svr5 ~]# chmod 644 /tmp/test.txt          //重设权限,无x
  2. [root@svr5 ~]# ls -l /tmp/test.txt              //确认设置结果
  3. -rw-r--r-- 1 root root 33139 12-11 10:52 /tmp/test.txt
  4. [root@svr5 ~]# [ -x "/tmp/test.txt" ] && echo "可执行" || echo "不可执行"
  5. 不可执行
  6. [root@svr5 ~]# chmod +x /tmp/test.txt          //添加x权限
  7. [root@svr5 ~]# [ -x "/tmp/test.txt" ] && echo "可执行" || echo "不可执行"
  8. 可执行

 

下次再分享相关shell基础的操作命令,希望能帮助大家谢谢

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值