Linux02-初识shell之系统命令基础

一 shell介绍

Shell 中文意思贝壳,寓意类似内核的壳。Shell是指一 种应用程序,这个应用程序提供了一个界面,用户通过 这个界面访问操作系统内核的服务,简而言之就是只要 能够操作应用程序的接口都能够称为SHELL。狭义的 shell指的是命令行方面的软件,广义的SHELL则包括图 形界面。

在这里插入图片描述
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语 言。
所以说,shell可以指代两层意思:
1、命令解释器
python语言 <------------------> shell命令
python解释器<------------------>shell解释器
操作系统<------------------>操作系统
计算机硬件<------------------>计算机硬件

sh(Bourne Shell)是一个早期的重要shell,1978年 由史蒂夫·伯恩编写,并同Version 7 Unix一起发布。
bash(Bourne-Again Shell)是一个为GNU计划编写的 Unix shell。1987年由布莱恩·福克斯创造。主要目标是 与POSIX标准保持一致,同时兼顾对sh的兼容,是各种 Linux发行版标准配置的Shell,在Linux系统 上/bin/sh往往是指向/bin/bash的符号链接。
dash (Debian Almquist shell)一种 Unix shell。它比 Bash 小,只需要较少的磁盘空间,但是它 的对话性功能也较少。它由 NetBSD版本的Almquist shell (ash)发展而来,于1997年由赫伯特·许 (Herbert Xu)移植到Linux上,于2002年改名为 dash。
//sh 遵循POSIX规范:“当某行代码出错时,不继续往下 解释”。bash 就算出错,也会继续向下执行。
//sh 跟bash的区别,实际上是bash有没开启POSIX模式 的区别。 //简单说,sh是bash的一种特殊的模式,sh就是开启了 POSIX标准的bash, /bin/sh 相当于 /bin/bash -- posix。 //在Linux系统上/bin/sh往往是指向/bin/bash的符号 链接
// ln -s /bin/bash /bin/sh
我们可以SHELL实现对Linux系统的管理例如:
1. 文件管理
2. 用户与权限管理 3. 进程管理
3. 磁盘管理
4. 网络管理
5. 软件管理

2、shell脚本

	Shell 脚本(shell script)是一种为 shell 编写的 脚本程序。常说的shell通常都是指 shell 脚本,但 shell和shell script是两个不同的概念。通常 说“shell编	程”都是指 shell 脚本编程,不是指开发 shell 自身。

二 shell交互式环境

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

[root@xxx ~]# 命令行 [root@xxx ~]$
root==>当前登录的用户 @=====>分隔符 xxx==>主机名 ~====>当前所在的路径
// 创建普通系统用户 useradd egon
// 交互式设置密码 passwod egon
#号代表超级管理员用户对应的 $号代表普通用户对应的命令行
// 非交互式设置密码
echo "123" | passwd --stdin egon

三 shell命令语法

三部分组成

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

ps:unix认为命令运行完毕后没有提示便是最好的提 示,即结果正确,linux继承unix的优良传统

ls
ls /root
ls -l /root
[root@localhost ~]# date
2020年 08月 12日 星期三 16:13:08 CST 
[root@localhost ~]# date +%F
2020-08-12
[root@localhost ~]# date -s 16:14:00 2020年 08月 12日 星期三 16:14:00 CST 
[root@localhost ~]# date -s "2022-11-11 11:11:11"
2022年 11月 11日 星期五 11:11:11 CST
[root@egon ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@egon ~]# uname -r
3.10.0-1127.13.1.el7.x86_64
[root@egon ~]# uname -m
x86_64
[root@egon ~]# uname -a
Linux egon.xxx.com 3.10.0-
1127.13.1.el7.x86_64 #1 SMP Tue Jun 23
15:46:38 UTC 2020 x86_64 x86_64 x86_64
GNU/Linux
[root@egon ~]#

四 bash 解释器特性

  1. 命令和文件自动补全 注意:Tab只能补全命令和文件
[root@localhost ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33
  1. 快捷键
^c 终止前台运行的程序
^d 退出 等价exit
^l 清屏
^a 光标移到命令行的最前端
^e 光标移到命令行的后端
^r 搜索历史命令,利用关键词
Alt+. 引用上一个命令的最后一个参数,等价于!$
  1. 历史命令
// 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
  1. 别名
# alias //查看系统当前的别名 
	ll='ls -l --color=tty'
# alias egon='ls /etc/sysconfig/network- scripts/' //建立别名
# unalias egon
[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,kill,pwd、
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 命令 whereis 命令

六 查看帮助信息

1、man手册

// 1、简单使用 man 命令
// 2、详解如下
man 手册名,例如man ls
搜索:/-h 表示查找 -h参数,按n查找下一个,N查找上 一个
技巧一:按关键字检索(适合记不住手册的全名时使用)
man -k "_selinux" //手册名或手册描述中 包含关键字_selinux
注:从whatis数据库里找(# makewhatis)
技巧二:在所有章节中查询
# man -a passwd
# man -f passwd

2、–help或者help命令

命令 --help help 命令
// 例1
[root@xxx ~]# ls --help 用法:ls [选项]... [文件]...
ls
-a
-l
-h
-d
-t
-r
-i
常见选项 all,查看目录下的所有文件,包括隐藏文件
长列表显示
human 以人性化方式显示出来 只列出目录名,不列出其他内容
按修改时间排序 逆序排列
显示文件的inode号(索引号)

3、info 非常详细的显示命令的说明信息 4、官方手册
5、baidu, google
https://man.linuxde.net/

七 常用命令

  • 设置主机名
[root@iZm5e59rizbgmmp4net6zbZ ~]# hostnamectl set-hostname aliyun // 退出重新进 入即可看到
  • 设置默认启动级别
[root@iZm5e59rizbgmmp4net6zbZ ~]# systemctl set-default graphical.target // 图形界面 
[root@iZm5e59rizbgmmp4net6zbZ ~]# systemctl set-default multi-user.target // 字符终端
  • 查看ip地址(设置ip地址会在网络配置章节里详细介 绍)
# 查看
ifconfig #ifconfig为centos6版本使用,centos7 以上的版本执行ip address或者简写ip a
ifconfig eth0 #ifconfig为centos6版本使用, centos7以上的版本执行ip a show eth0
  • 设置时间
[root@aliyun ~]# date --help 查看时间
   # date "+%Y_%m_%d  %H-%M-%S"
设置时间
   #date -s "2018-05-17 09:51:50"
或者
    # timedatectl set-time '16:10:40 2022-
11-12 13:14:15'
// =============》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,此处暂作了解: https://www.cnblogs.com/linhaifeng/articles /13471989.html
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
  • 重启时间失效
关闭默认的时间同步,然后再进行设置
# timedatectl set-ntp no
  • 设置时区
查看
timedatectl status
列出可用时区
timedatectl list-timezones 设置
# timedatectl set-timezone "Asia/Shanghai"
更新当前系统时间
# ntpdate ntp1.aliyun.com
将更新的时间保存到系统始终
# hwclock -w
  • 重启
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
  • 补充命令:
1.cp命令 复制
例: cp 1.txt /usr/local/
2.mv命令 移动或重命名
例: 
mv 1.txt /usr/local/ (表示将1.txt文 件移动到/usr/local/目录下)
mv 1.txt 2.txt (表示将1.txt文件重命名 为2.txt)
3.mkdir命令 创建目录
例:
mkdir test (表示在当前所处位置创建一个test的 文件夹)
4.rm命令 删除
例:
rm 1.txt 弹出确认)
rm -f 1.txt 弹出确认)
rm -rf test
(表示删除1.txt文件,执行过程中会 (表示强制删除1.txt文件,不会 (表示删除test目录)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值