shell简单使用
vim test.sh
for i in {1..100}
do
useradd test$i
echo "create test$i"
done
bash test.sh
Shell提示符
$ = 普通用户, # = root用户(超级管理员)
[root@lqz ~]#
root:当前登录用户
@ :没有意义
lqz:主机名称,如果很长会显示不全,通过hostname查看
~:当前用户所在家目录
[root@web01 ~]# useradd jack
[root@web01 ~]# passwd jack
Changing password for user jack.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
Shell基础语法
#命令 选项 参数
command [-options] [arguments]
[root@lqz ~]# ls #命令
[root@lqz ~]# ls -a #命令+选项
[root@lqz ~]# ls -a /home/ #命令+选项+参数
ls -a -l
ls -la
ls --all
ls --list
ls -c
ls --color
ls -a /tmp
#命令: 整条shell命令的主体
#选项: 用于调节命令的输出效果
#以 “-”引导短格式选项(单个字符),例如“-l”
#以“--”引导长格式选项(多个字符),例如“--color”
#多个短格式选项可以写在一起,只用一个“-”引导,例如“-al”
#参数: 命令操作的对象,如文件、目录名等
# 选项和参数可以出现位置调换,命令,选项,参数之间要至少有一个空格
# 命令必须开头, 选项和参数位置可以发生变化
命令补全
yum provides ifconfig
yum install net-tools
#查看ip时忘记具体了命令
[root@lqz ~]# ifcon
#按下tab键会自动补全
[root@lqz ~]# ifconfig
#按一下tab键没有反应, 按两下tab键列出所有if开头的命令
[root@lqz ~]# if
if ifconfig ifenslave ifrename
ifcfg ifdown ifnames ifup
#linux目录较深,经常使用tab键进行补全, 如果路径出错是没有办法补全(带斜线表示是目录(window叫文件夹))
[root@lqz ~]# ls /etc/sysconfig/network-scripts/
# 安装选项补全
yum install bash-comple*
yum install bash-completion
# ls -- Tab建,空格上下翻
常用命令快捷键
Ctrl + a #光标跳转至正在输入的命令行的首部
Ctrl + e #光标跳转至正在输入的命令行的尾部
Ctrl + c #终止前台运行的程序
Ctrl + d #在shell中,ctrl-d表示推出当前shell。
Ctrl + z #将任务暂停,挂至后台
Ctrl + l #清屏,和clear命令等效。
Ctrl + k #删除从光标到行末的所有字符
Ctrl + u #删除从光标到行首的所有字符
Ctrl + r #搜索历史命令, 利用关键字,Tab建选中
Ctrl + w #按单词或空格进行向前删除
Ctrl + 左右建 #按单词或空格进行向前向后跳
#在命令行前加面加 "#" 则该命令不会被执行
历史命令History
"""
-w 保存命令历史到历史文件
-c 清空命令历史记录, 不会情况文件
-d 删除命令历史的第 N 条行
"""
#1.使用双 !! 可执行上一条执行过的命令
[root@lqz ~]# ls
lqz.com
[root@lqz ~]# !!
ls
lqz.com
#2.输入!6, 执行history命令历史中第 6 行命令
[root@lqz ~]# !6
touch lqz.com
#使用!cat, 调用history命令历史最近一次执行过的cat命令
[root@lqz ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
[root@lqz ~]# !cat # 最近一次
cat /etc/sysconfig/network-scripts/ifcfg-eth0
[root@lqz ~]# ls /etc/passwd
#调用上一条命令的最后参数或选项, 按下ESC松开, 然后按下 "."
[root@lqz ~]# cat
[root@lqz ~]# cat /etc/passwd
#第二种方式, 输入!$
[root@lqz ~]# ls !$
ls /etc/passwd
/etc/passwd
# history -d 100 删除第100条历史记录
# history -c 清空记录(保存到文件中的还有)
# history -w 保存历史集合,保存到当前用户的家目录 .bash_history
# > .bash_history 清空文件的保存(操作完,不让别人看你执行的命令)
命令别名
命令别名将用户经常使用的复杂命令简单化, 可以用alias 别名名称=命令
命令创建属于自己的命令别名, 若要取消一个命令别名,则是用unalias 别名名称命令
。
#1.定义临时别名, wk为查看eth0网卡别名
[root@lqz ~]# alias wk='ifconfig'
# alias 查看一下是否成功,发现系统内置了很多
[root@lqz ~]# wk
# 取消别名(都是临时的)
[root@lqz ~]# unalias wk
#2.如果定义命令本身, 会执行什么?
[root@lqz ~]# alias ifconfig='ifconfig eth0'
#绝对路径执行, 调用命令本身
[root@lqz ~]# /sbin/ifconfig
#通过转义字符, 调用命令本身
[root@WebServer ~]# ifconfig
#3.取消别名
[root@lqz ~]# unalias ifconfig
#4.永久生效,/etc/bashrc
[root@lqz ~]# echo "alias ifconfig='ifconfig eth0'" >> /etc/bashrc
帮助命令
[root@lqz ~]# ls --help
用法: ls [选项]...[文件]...
#ls 常见选项
-a #查看目录下的所有文件,包括隐藏文件
-l #以长格式的方式显示文件的详细内容
-h #以人性化的方式显示内容,配合-l使用
-d #只列出目录名,不列出目录以下的内容
-t #按修改时间进行排序
-i #显示文件的inode(该文件在该分区的一个编号)
[root@lqz ~]# date --help
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
[root@lqz ~]# date +%F #查看日期
2019-03-28
[root@lqz ~]# date -s 12:00 #修改时间
#时间不是用来查看,而是有其他的用途
[root@web01 ~]# touch `date +%F`_file.txt
[root@web01 ~]# ls
2019-03-28_file.txt
man ls #查看ls命令的手册