二、Linux基础命令入门

本文详细介绍了Linux的shell概念及bash的基本特性,包括自动补全和快捷键。讲解了常见命令如su、uname、ls、pwd、cd、clear、reboot、shutdown、echo和cp的用法。此外,还探讨了hostnamectl和date命令来管理和查看主机名及时间。最后,学习了history、alias和man命令,用于查看命令历史、创建命令别名和查阅命令手册。

一、初识shell

1.1 shell概述

  • shell是系统的用户界面 ,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行

  • 实际上shell是一个命令解释器,它解释用户输入的命令并且把用户的意图传达给内核。(可以理解为用户与内核之间的翻译官角色)
    在这里插入图片描述

  • 我们可以使用shell实现对Linux系统单的大部分管理,例如:文件管理 、用户管理、权限管理、磁盘管理、软件管理、网络管理…

  • 使用shell的两种方式

    • 命令行一条条命令输入,效率较低
      • 适合少量的工作
    • shell script,shell脚本,效率高
      • 适合完成复杂,重复性工作
  • 查看shell解释器

[root@server1 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

# 常见的shell解释器
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

1.2 shell语法

  • 格式:命令 选项 参数
    • 命令:整条shell命令的主体
    • 选项:会影响会微调命令的行为,通常以-或者--开头
    • 参数:命令作用的对象(长参数、短参数)
  • bash提示符:[\u@\h \W]\$
    • bash就是shell解释器的一种
[root@server1 ~]# ls
anaconda-ks.cfg
[root@server1 ~]# ls -a
.  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  .tcshrc
[root@server1 ~]# ls -a /home
.  ..  zhangsan

1.3 bash基本特性

1.3.1 自动补全
[root@server1 ~]# yum install -y bash-completion
//按tab键可自动补齐
//两次tab键可显示所有可能的情况
1.3.2 快捷键

在这里插入图片描述

1.4 初始化配置

  • 安装bash-completion
yum install -y bash-completion
  • 安装vim工具
yum install -y vim
hostnamectl set-hostname server1
  • 关闭防火墙开机自动启动
systemctl disable firewalld
setenforce 0
  • 拍摄快照(后面每次练习崩了都可以直接恢复快照)

1.5 连接到xshell

  • 查看IP地址: ip a

在这里插入图片描述

  • xshell连接:ssh root@192.168.180.40

二、Linux常见指令

2.1 su切换用户

  • 语法:su - usernamesu username
  • 功能:切换用户(-同时切换用户家目录,推荐加上)
  • 示例
[root@server1 ~]# su - zhangsan <--超管切换普通用户不需要密码
[zhangsan@server1 ~]$ su - root <--普通用户切换超管或其他用户需要被切换用户的密码
密码:
上一次登录:日 88 15:53:32 CST 2021192.168.226.1pts/0 上
[root@server1 ~]# 
#加横杆表示切换用户的同时,切换用户的家目录

2.2 uname获取系统相关信息

  • 语法:uname [选项]
  • 功能:获取系统的相关信息
  • 示例
[root@server1 ~]# uname -a
Linux server1 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

选项说明:
-a :all,显示所有(类型、全部主机名、内核版本、发布时间、开源计划)

2.3 ls指令( list show)

  • 语法: ls [选项] [目录或文件]
  • 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
  • 常见选项说明:
选项说明
-a列出目录下的所有文件,包括以 . 开头的隐含文件
-d将目录象文件一样显示,而不是显示其下的文件。
-i输出文件的 i 节点的索引信息
-l列出文件的详细信息
-n用数字的 UID,GID 代替名称
-F在每个文件名后附上一个字符以说明该文件的类型,
“*”表示可执行的普通文件; “/”表示目录; “@”表示符号链接;
“|”表示FIFOs; “=”表示套接字(sockets)。(目录类型识别)
-r对目录反向排序
-t 以时间排序
-s在文件名后输出该文件的大小
-R列出所有子目录下的文件
-1一行只输出一个文件
-hhuman以人性化方式显示出来
-S按文件的Size排序

2.4 pwd指令(print working directory)

  • 语法: pwd
  • 功能:显示用户当前所在的目录
  • 常用选项:无
[root@server1 ~]# pwd
/root

2.5 cd指令(change directory)

  • Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件(下一节文件管理细讲)

在这里插入图片描述

  • 语法:cd 目录名
  • 功能:改变工作目录,将当前工作目录改变到指定的目录下。
  • 常用选项:
选项说明
cd. .返回上级目录
cd /home/zhangsan/test1/ 绝对路径:从根目录/下开始的路径
cd …/…test1相对路径 :从当前位置去往目标目录的路径
cd ~进入用户家目
cd -返回最近访问目录

2.6 clear清屏

  • 语法:clear
  • 功能:清屏,用于当前屏幕内容太多太乱
[root@server1 ~]# clear

2.7 reboot重启

  • 语法:reboot
  • 功能:用于重启系统
[root@server1 ~]#  reboot

2.8 shutdown关机

  • 语法:shutdown [选项]
  • 功能:用于指定何时关机
  • 常用选项:
# shutdown -h 0或now         <--立即关机
# shutdown -h 10            <--代表10分钟后,自动关机
# shutdown -c               <--取消关机(需要先按Ctrl + C)
选项说明:
-h :halt缩写,代表关机
  • 在Linux系统中,立即关机除了使用shutdown -h 0以外还可以使用halt -p或者poweroff命令

2.9 echo指令

  • 语法:echo [选项] 字符串
  • 功能:在显示器上显示一段文字,一般起到一个提示或测试的作用。一般和重定向符号一起使用进行覆盖和追加操作echo 字符串 >(覆盖) >>(追加) 文件
  • 说明:字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。
  • 常用选项:
    • echo -n:表示输出文字后不换行
    • echo -e:运行使用反斜杠进行转义

2.10 cp指令

  • 语法:cp [选项] 源文件或目录 目标文件或目录
  • 功能:复制文件或目录
  • 说明:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
  • 常用选项:
参数说明
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理
若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

三、hostnamectl&date

3.1 获取主机名

  • CentOS6中:hostname
  • CentOS7中:hostnamectl``(hostname + control) 。同时还能获取内核版本等信息
  • 即目前:获取内核版本的命令hostnamectluname -a两种(面试),后续还有其他方式
[root@server1 ~]# hostnamectl
   Static hostname: server1
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 162a3d843449473ab4b1f92fed2c6c2d
           Boot ID: 92a714529b65444bbbace8833ef1df3b
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-957.el7.x86_64
      Architecture: x86-64

3.2 设置主机名

  • Centos7中主机名分3类:
    • 静态static主机名:长久生效
    • 瞬态transient主机名:临时生效
    • 灵活pretty主机名:可以包含一些特殊字符
  • 更改主机名称并让其永久生效:
    • 使用静态主机名
    • 或更改配置文件/etc/hostname
  • 主机名称建议
    • 遵循 FQDN协议(功能+公司域名)
    • 自己的机子无所谓
3.2.1 瞬态主机名称(临时设置)
# hostnamectl --transient set-hostname 主机名
# su 立即生效
3.2.2 静态主机名称(永久生效)
# hostnamectl --static set-hostname 主机名 (--static也可以省略)
[root@server1 ~]# hostnamectl set-hostname server02
[root@server1 ~]# su
[root@server02 ~]# 
3.2.3 灵活主机名称(主机名称可以添加特殊字符)
# hostnamectl --pretty set-hostname 主机名(包含特殊字符)
查看灵活的主机名称
# hostnamectl --pretty

3.3 date获取系统当前时间

  • 语法:date +%时间格式
  • 功能:按指定的格式输出当前时间
  • 常用时间格式:(和开发那个还不一样)
时间格式说明
%F年-月-日
%T小时:分钟:秒
%YYear,年
%mmonth,月
%dday,日
%HHour,小时
%MMinute,分钟
%SSecond,秒
  • 示例
[root@server1 ~]# date
2021年 08月 21日 星期六 14:34:21 CST
[root@server1 ~]# date +%F
2021-08-21
[root@server1 ~]# date +%Y%m%d
20210821
[root@server1 ~]# date +%T
14:38:45

# 常用备份操作
[root@server1 ~]# cp a.txt $(date +%F).txt
[root@server1 ~]# ls
2021-08-21.txt  anaconda-ks.cfg  a.txt  dir1  dir2  video.mp4

四、history & alias & man

4.1 历史命令history

  • 查看历史命令:history
  • 命令历史文件:~/.bash_history 登录shell时会读取命令历史文件,并将后续操作命令添加到历史配置文件中
  • 常用参数
参数功能
-a 追加本次会话执行的命令历史列表至历史文件中
-d 删除历史中指定的命令
-c清空历史命令
  • 历史命令的常见操作
    • 光标上下键
    • ^R:搜索历史命令(输入一段某条命令的关键字:必须是连续的)
    • !220:执行历史命令中第220条命令
    • !字符串:搜索历史命令中最近一个以xxxx字符开头的命令,例如!ser
    • !$:引用上一个命令的最后一个参数 ,当上一个命令没有参数的时候,!$代表的是上一个命令本身
  • 示例
[root@server1 ~]# ls /root/home 
[root@server1 ~]# cd !$
[root@server1 ~]# mkdir !$ 
mkdir /root/home 
[root@server1 ~]# touch !$/file1 
touch /root/home/file1
[root@server1 ~]# systemctl restart crond 
[root@server1 ~]# ls 
anaconda-ks.cfg home 
[root@server1 ~]# date 
2019年 08月 21日 星期三 12:16:23 CST 
[root@server1 ~]# !sy 
systemctl restart crond

4.2 命令别名

4.2.1 临时别名
  • 语法:
    • 查看系统当前的别名:alias
    • 起别名:alias 别名='完整命令'
    • 取消别名:unalias 别名
  • 功能:给一些常用的命令起别名,通过别名直接使用此命令;
  • 示例
[root@server1 ~]# alias wl='cat/etc/sysconfig/networkscripts/ifcfg-ens33' 
# 建立别名(临时的,仅在当前shell生效) 
[root@server1 ~]# wl
[root@server1 ~]# unalias wl 
# 取消wl这个别名

[root@server1 ~]# alias  # 查看系统当前的别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@server1 ~]# type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
[root@server1 ~]# /bin/ls 
anaconda-ks.cfg home 
[root@server1 ~]# ls # 别名优先 
anaconda-ks.cfg home 
[root@server1 ~]# \ls # 跳过别名 
anaconda-ks.cfg home
[root@server1 ~]#
[root@server1 ~]# cp -rf /etc /tmp # 第一次 
[root@server1 ~]# cp -rf /etc /tmp # 第二次 
cp:是否覆盖"/tmp/etc/fstab"[root@server1 ~]# \cp -rf /etc /tmp
4.2.2 永久别名
  • 将别名写入此文件 /etc/bashrc
[root@server1 ~]# vim /etc/bashrc # 添加如下行 
alias wl='cat /etc/sysconfig/network-scripts/ifcfg-ens33'

4.3 man手册

4.3.1 man手册介绍
  • Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。

  • 语法: man [选项] 命令

  • 常用选项

    • -f:相当于whatis,简单来说就是查看命令的作用
    • -k:根据关键字搜索联机帮助
    • num:只在第num章节找,例如man 5 passwd
    • -a:将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
4.3.2 中文man手册
  • 执行下面命令后,使用cman查看中文man手册
yum -y install man-pages-zh-CN.noarch 
echo "alias cman='man -M /usr/share/man/zh_CN'" >> .bashrc 
source .bashrc
4.3.3 man的各个章节介绍

在这里插入图片描述

  • 章节说明

    • 1 是普通的命令
    • 2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
    • 3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
    • 4 特殊文件设备文件
    • 5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
    • 6 是给游戏留的,由各个游戏自己定义
    • 7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
    • 8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
  • 一般情况下不需要使用章节号

[root@server1 ~]# man ls
[root@server1 ~]# man man
[root@server1 ~]# man useradd
[root@server1 ~]# man setfacl
  • 按章节查询
[root@server1 ~]# man -f passwd 
sslpasswd (1ssl)   - compute password hashes 
passwd (1)         - update user's authentication tokens 
[root@server1 ~]# man 1 passwd 
[root@server1 ~]# man 5 passwd
  • 在所有章节中查询
[root@server1 ~]# man -a passwd
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值