01、shell语法命令

一、shell交互式环境

登录用户进入解释器bash的交互式环境,可以敲命令,交互式环境的命令式提示符如下:

[root@xxx ~]# 	#号代表超级管理员用户对应的命令行 
[root@xxx ~]$ 	$号代表普通用户对应的命令行 

root==>当前登录的用户 
@=====>分隔符 
xxx==>主机名 
~====>当前所在的路径 

// 创建普通系统用户 
useradd jason 
// 交互式设置密码 
passwod jason 
// 非交互式设置密码 
echo "123" | passwd --stdin jason

二、shell命令语法

1、三部分组成:

- 命令:要执行的操作(必选)
- 选项:如何具体执行操作,通常以 -, --, +开头(可选)
- 参数:具体操作的对象(可选)

# ps:unix认为命令运行完毕后没有提示便是结果正确

示例1:

[root@localhost ~]# date
Fri Nov 20 19:08:00 CST 2020
[root@localhost ~]# date +%F
2020-08-12
[root@localhost ~]# date -s 16:14:00
Fri Nov 20 16:14:00 CST 2020
[root@localhost ~]# date -s "2020-11-11 11:11:11"
Fri Nov 11 11:11:11 CST 2020

示例2:

[root@localhost /]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@localhost /]# uname -r
3.10.0-327.el7.x86_64
[root@localhost /]# uname -m
x86_64
[root@localhost /]# uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

三、bash解释器特性

1、命令和文件自动补全

注意:Tab只能补全命令和文件

[root@localhost ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33

2、快捷键

^c 终止前台运行的程序
^d 退出 等价exit
^l 清屏
^a 光标移到命令行的最前端
^e 光标移到命令行的后端
^r 搜索历史命令,利用关键词
Alt+. 引用上一个命令的最后一个参数,等价于!$

3、历史命令

// 1、查看历史命令
[root@xxx ~]# history

// 2、清空历史命令
[root@xxx ~]# history -c

// 3、历史命令保存文件:cat ~/.bash_history

// 4、历史命令默认保存1000条,可以修改/etc/profile中的HISTSIZE=2000

// 5、查找历史命令并运行
(1)光标上下键
(2)^r //搜索历史命令(输入一段某条命令的关键字:必须是连续的)
(3)!220 //执行历史命令中第220条命令
(4)!字符串 //搜索历史命令中最近一个以xxxx字符开头的命令,例如!ser
(5)!$ //引用上一个命令的最后一个参数
[root@xxx home]# ls /root /home
[root@xxx home]# cd !$
cd /home
[root@xxx home]# ls /root /home
[root@xxx home]# touch !$/file1
touch /home/file1

4、别名

# alias //查看系统当前的别名
ll='ls -l --color=tty'
# alias jj='ls /etc/sysconfig/network-scripts/' //建立别名
# unalias jj
[root@xxx ~]# grep root /etc/passwd // 默认有颜色
[root@xxx ~]# alias grep
alias grep='grep --color=auto'

四、命令查找优先级

bash shell查找命令顺序:
==>以路径(绝对路径,相对路径)开始命令,例如:/bin/ls 或 cd /bin; ./ls
	==> alias
		==> Compound Commands
            ==> function
                ==> build_in,如cd,killpwd、alias、echo等,可以用"type -a 命令"查看
                    ==> hash
                        ==> $PATH,环境变量,查看环境变量echo $PATH,例如/bin/ls
                        	==> error: command not found
复合命令例如
for((i=0;i<=3;i++))do echo 123;done
函数例如
function f(){ echo 123; },注意{}左右两边有空格

# ps:查看命令的位置:which 命令
	查看登录者的信息:who
	查看文件/文件夹/命令的位置:whereis

五、查看帮助信息

1、man手册

// 1、简单使用
man 命令
// 2、详解如下
man 手册名,例如man ls
搜索:/-h n N
技巧一:按章节来查找,常用的是1(命令用法),5(文本规范),8(系统管理命令)
/usr/bin/passwd 命令,修改用户密码 man 1 passwd
/etc/passwd 保存用户信息的文件 man 5 passwd
/etc/exports man exports man 5 exports
技巧二:按关键字检索(适合记不住手册的全名时使用)
man -k "_selinux" //手册名或手册描述中包含关键字_selinux
注:从whatis数据库里找(# makewhatis)
技巧三:在所有章节中查询
# man -a passwd
# man -f passwd

2、–help、help命令

命令 --help
help 命令

// 示例
[root@xxx ~]# ls --help
用法:ls [选项]... [文件]...

ls 常见选项
-a all,查看目录下的所有文件,包括隐藏文件
-l 长列表显示
-h human 以人性化方式显示出来
-d 只列出目录名,不列出其他内容
-t 按修改时间排序
-r 逆序排列
-i 显示文件的inode号(索引号)

3、info 详细显示命令的说明信息

[root@localhost /]# info cat

4、官方手册

https://man.linuxde.net/

linux.web3.xin

5、百度、谷歌搜索

六、常用命令

  • 设置主机名
[root@localhost /]# hostnamectl set-hostname handsome
// 退出重新登录就可以看到主机名已经被修改
  • 设置默认启动级别
[root@handsome ~]# systemctl set-default graphical.target  // 图形界面
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.

[root@handsome ~]# systemctl set-default multi-user.target  //字符终端
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
  • 查看ip地址
ifconfig  # 也可以执行ip address 或者ip addr 或者简写成ip a
ifconfig eno16777736 # 等同于ip a show eno16777736
  • 设置时间
# 查看时间
[root@handsome ~]# date "+%Y-%m-%d %H:%M:%S"
2020-11-20 21:34:14

# 设置时间
[root@handsome ~]# date -s"2020-11-11 11:11:11"
或者
[root@handsome ~]# timedatectl set-time '2020-11-11 11:11:11'

# date设置的是系统时间,实际上时间分为硬件时钟与系统时钟两种
#1、硬件时钟:硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟,硬件时间存放于
CMOS中。
#2、系统时钟:系统时钟则是指kernel中的时钟,当Linux启动时
ps:硬件时间默认比系统时间慢8个小时

硬件时钟与系统时钟的关系是:
Linux操作系统将时间从CMOS中读到系统时间变量中,之后系统时钟即独立运作。所有Linux相关指令与函数
都是读取系统时钟的设定。
linux系统设置硬件时钟时,提供两种时区选择,一种为本地时区,此时硬件时间与系统时间相同;另一种为
UTC时区,此时硬件时间存的是UTC时间,系统初始化时会转换为本地时间后再设置为系统时钟的时间。
以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统
时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重
起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。
如果要确保修改生效可以执行如下命令。
#hwclock –w
这个命令强制把系统时间写入CMOS。

  • hwclock命令
hwclock命令,与clock命令是同一个命令,主要用来查询和设置硬件时钟(query and set the
hardware clock (RTC))。RTC=Real Time Clock,也就是硬件时钟。在Linux中有硬件时钟与系统
时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指
kernel中
的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟,那么它们之间就会
存在差异。根据不同参数设置,hwclock命令既可以将硬件时钟同步到系统时钟,也可以将系统时钟同步到硬
件时钟。
// hwclock命令的参数
-r, --show 读取并打印硬件时钟
-s, --hctosys 将硬件时钟同步到系统时钟
-w, --systohc 将系统时钟同步到硬件时钟
  • 时间服务器
注意:要使系统时间准确,最好还是使用ntp方式,即将Linux系统时钟同步到远程NTP服务器,ps:
centos7用chrony替换ntp

NTP即Network Time Protocol(网络时间协议),是一个互联网协议,用于同步计算机之间的系统时钟。
timedatectl实用程序可以自动同步你的Linux系统时钟到使用NTP的远程服务器。
注意,你必须在系统上安装NTP以实现与NTP服务器的自动时间同步。
使用ntpdate命令从网络同步时间,再同步到硬件时钟
ntpdate命令是使用NTP协议来从网络同步时间的命令。NTP=Network Time Protocol 网络时间协议。

#系统中默认没有ntpdate命令,需要自行下载安装
[root@localhostt ~]# yum install ntpdate -y

# 与网络时间服务器同步时间
[root@localhost ~]# ntpdate 0.cn.pool.ntp.org
12 Aug 21:04:14 ntpdate[10099]: step time server 203.107.6.88 offset
-7826995.450514 sec
[root@localhost ~]# date
[root@localhost ~]# hwclock -w
# 注意:
1、必须有 root 权限才能在主机上运行这个命令。
2、如果NTP服务器守护程序在当前主机上运行,命令将拒绝ntpdate设置日期
3、让系统自动同步时间,只需添加一条定时任务即可,后期会介绍到
# ps: 阿里云提供了7个NTP时间服务器也就是Internet时间同步服务器地址
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com
要开始自动时间同步到远程NTP服务器,在终端键入以下命令。
# timedatectl set-ntp true
要禁用NTP时间同步,在终端键入以下命令。
# timedatectl set-ntp false
  • 重启时间失效
关闭默认的时间同步,然后再进行设置
# timedatectl set-ntp no
  • 设置时区
# 查看
[root@handsome ~]# timedatectl status
      Local time: Fri 2020-11-20 21:50:49 CST
  Universal time: Fri 2020-11-20 13:50:49 UTC
        RTC time: Wed 2020-11-11 03:23:10
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

# 列出可用时区
timedatectl list-timezones

# 设置上海时区
# timedatectl set-timezone "Asia/Shanghai"
# 格林尼治时间
# timedatectl set-timezone UTC
  • 设置重启
shutdown -r 10 // 10分钟后重启
shutdown -r 0 // 立即重启
shutdown -r now // 立即重启
shutdown -r 11:30 // 定点重启
init 6 // 立即重启
reboot // 立即重启
  • 关机命令
shutdown -h 10 // 10分钟后关机
shutdown -h 0 // 立刻关机
shutdown -h now // 立刻关机
shutdown -h 11:30 // 定点关机
halt // 立即停止系统,需要人工关闭电源
poweroff // 立即停止系统,并且关闭电源
  • 取消正在进行的关机或者重启
showdown -c
  • 注销登录的账号
exit
logout
Ctrl+D
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值