Linux基础入门和帮助

二 Linux基础入门和帮助

1 Linux基础入门
1.1 基本知识
  • 用户登录
    ——root用户
    Ubuntu不能用root登录
    sudu -i Ubuntu进入管理员模式
    除非必要,不要登录为root
    ——普通用户
    工作中用普通用户登录

  • 设备终端:键盘,鼠标,显示器
    终端类型 :
    控制台终端: /dev/console
    串行终端: /dev/ttyS#
    虚拟终端: tty:teletypewriters, /dev/tty#,可以有数个
    图形终端: startx,xwindows
    伪终端:pty,/dev/pts/# 如:SSH远程连接
    查看当前终端设备 tty

  • 交互式接口
    启动终端后,在终端设备附加一个交互式应用程序 etc目录相当于注册表,可以改配置
    /etc/motd 可以修改欢迎界面
    /etc/issue 可以修改登陆前提示

  1. 交互式接口类型
    GUI : Graphic User Interface 如KDE,GNOME,XFCE 生产环境中几乎不用
    CLI : Command Line Interface 如shell程序
  2. 什么是shell
    shell是Linux系统的用户界面,提供了用户和内核进行交互操作的一种接口。接收用户输入的命令并把它送入内核去执行。也称为命令解释器
  • 各种shell
    最常用的 bash : Bourne-Again Shell
    显示当前使用的shell :
    echo ${SHELL}
    显示当前系统使用的所有shell : cat /etc/shells
    列出系统中正在运行的所有程序 : ps aux

  • 执行命令

  1. 执行命令过程
    输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,由其分析后提交给内核分配资源把它运行起来
  2. shell中可执行的两类命令
    内部命令:shell自带
    外部命令:在文件系统路径下有对应的可执行程序文件
    type 判断命令类别
  3. 执行外部命令
    hash 列出外部命令执行的次数,当命令路径更改时,清除缓存即可 (hash -r 清理全部 -d 清理指定缓存)
    注:初始hash表为空,当外部命令执行时,默认会从PATH中寻找,找到后会记录到hash中,再次使用时,优先查看hash,大大提高效率
  4. 命令格式
    短选项:UNIX风格 如-a -h
    长选项:GNU风格 如-word -all
    BSD风格选项:(伯克利大学)一个字母 如ps a ,使用相对较少

注:
取消和结束命令 ctrl + c ,CTRL + d
多个命令可以用;符号分开
一个命令可以用\分成多行

1.2 常见命令

1,查看硬件信息

lscpu   可以查看CPU信息      cat /proc/cpuinfo 也可以看到
free    查看内存大小         cat /proc/meminfo
lsblk   查看硬盘和分区情况    cat /proc/partitions

2,查看系统版本信息

uname -r  查看内核版本 
cat /etc/redhat-release  查看操作系统发行版本
红帽 :cat /etc/redhat-release 或 /etc/os-release
Ubuntu :cat /etc/os-release

3, 时间和日期

date 显示和设置系统时间(由Linux内核通过CPU的工作频率进行)
clock 显示硬件时间(主板)
clock
-s , 以硬件时间为准,校正系统时间
-w , 以系统时间为准,校正硬件时钟

date +%F 显示年月日 /etc/localtime 显示时区
cal -y 显示日历

[root@centos7-E ~]#touch `date +%F_%H-%M-%S`.log
[root@centos7-E ~]#ls
2020-03-21_09-16-25.log  

[root@centos7-E ~]#date -d '-2 day'
Thu Mar 19 09:18:31 CST 2020
[root@centos7-E ~]#date -d now
Sat Mar 21 09:18:53 CST 2020

[root@centos7-E ~]#touch `date -d '-1 day' +%F`.log

4,设置主机名

hostname NAME 注意:主机名不要使用下划线 
hostnamectl set-hostname name   #主机名永久修改(内存和硬盘都改了,一步到位)仅支持7及以上版本

5,设置命令提示符prompt

 显示提示符格式: echo $PS1
 PS1="[\e[1;32m][\u@\h \W]\$[\e[0m]"
 提示符格式说明:
 `
 \e控制符
 \033 \u当前用户  
 \h主机名简称  
 \H主机名   
 \w当前工作目录  
 \W当前工作目录基名         
 \t24小时时间格式
 `     
永久保存提示符:
echo 'PS1="[\e[1;32m][\u@\h \W]\$[\e[0m]"' > /etc/profile.d/env.sh    #env代表环境,可随意取名

6,命令别名

alias 命令别名,临时性定义,修改.bashrc可永久保存(仅对当前用户),优先级高于内部命令 所有用户有效:/etc/bashrc 
范例 : echo "alias free='free -h'" >> .bashrc
编辑配置后新配置不会立即生效 source.

7, 关机和重启

关机:halt和poweroff
重启:reboot 关机或重启:shutdown
-r: reboot
-h: halt
-c:cancel

8, 用户登录信息查看命令

who      查看哪些用户登陆了终端
whoami   显示当前用户身份
who am i 当前用户登陆情况

9,会话管理 screen 和 tmux
实现会话管理,如新建会话,共享会话
同步协助 后台运行

常见用法:

创建新会话 -S name
加入新会话 -x name

10, 输出信息echo

echo命令可以将后面跟的字符进行输出

echo -E (默认)不支持\解释功能
-n 不自动换行
-e 启用\字符分解释功能
显示变量:
echo "$变量" #变量会被替换,弱引用
echo '$变量' #变量不会被替换,强引用,只要在单引号里,都认为是普通符号或字符串

范例:

[09:18:04 root@centos8 data]#echo "This system's name is $(hostname)"
This system's name is centos8.magedu.org
  
[09:18:04 root@centos8 data]#echo "This system's name is $(hostname)"
This system's name is centos8.magedu.org

启用命令选项-e,字符串中有以下字符时特别加以处理

\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\e escape,相当于\033
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
\xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

1.3 字符集和编码

1 ASCII
美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定,即ASCII码(American Standard Code for Information Interchange)
一共规定了128个字符的编码,占用了一个字节的后七位,最前面的一位统一规定为零
查看ASCII码:“dnf -y install man-pages”
man ascii

2 Unicode (万国码)
Unicode 仅仅只是一个字符集,规定了每个字符对应的二进制代码
Unicode编码方案:

  • UTF-8:变长,1到4个字节
  • UTF-16:变长,2或4个字节
  • UTF-32:固定长度,4个字节
1.4 命令行扩展和被括起来的集合

1 命令行扩展: $( ) 和 ``
把一个命令的输出打印给另一个命令的参数(用一个命令调用另一个命令的显示结果时)

$(COMMAND)`CMD` 反向单引号

反向单引号里放命令可以被执行
反向单引号不能嵌套,$()可以嵌套

比较’’ , " " ,``的区别 结论:

  • 单引号:六亲不认变量和命令都不识别,都当成普通的字符串
  • 反向单引号:变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续
  • 双引号:不能识别命令,可以接受变量(介于两者之间)
    范例:
[root@centos7-E ~]#echo "My hostname is $HOSTNAME"
My hostname is centos7-E
[root@centos7-E ~]#echo 'My hostname is $HOSTNAME'
My hostname is $HOSTNAME
[root@centos7-E ~]#echo "My hostname is hostname"
My hostname is hostname
[root@centos7-E ~]#echo "My hostname is `hostname`"
My hostname is centos7-E

创建一个带日期的文件:
[root@centos7-E ~]#touch `date +%F`.txt
[root@centos7-E ~]#ls
2020-03-20.txt
[root@centos7-E ~]#touch `hostname`_`date +%F`.txt
[root@centos7-E ~]#ls
2020-03-20.txt   centos7-E_2020-03-20.txt

2 括号扩展: { }
{}可以打印重复字符串的简化模式
范例:

[root@centos7-E ~]#echo user{1,3,5}
user1 user3 user5
[root@centos7-E ~]#echo file{1,3,5}.txt
file1.txt file3.txt file5.txt
[root@centos7-E ~]#echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@centos7-E ~]#echo {20..10..2}
20 18 16 14 12 10
[root@centos7-E ~]#echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@centos7-E ~]#echo {000..10..2}
000 002 004 006 008 010
[root@centos7-E ~]#echo file{1..10}.{txt,log}  笛卡尔乘积
file1.txt file1.log file2.txt file2.log file3.txt file3.log file4.txt file4.log file5.txt file5.log file6.txt file6.log file7.txt file7.log file8.txt file8.log file9.txt file9.log file10.txt file10.log
1.5 tab键补全

tab键可以实现命令及路径等补全,提高输入效率,避免出错

1 命令补全
bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令
注意:用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表
2 路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果惟一:则直接补全
否则:再次Tab给出列表

3 双击tab键
command 2tab 所有子命令或文件补全
string 2tab 以string开头命令
/ 2tab 显示所有根目录下一级子目录,包括隐藏

1.6 命令行历史

当执行命令后,系统默认把执行过的命令记录在内存的缓存区中
当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中

-c: 清空命令历史
-s:假冒历史
[root@centos7-E ~]#history -s rm -rf /
[root@centos7-E ~]#history
    1  rm -rf /
    2  history
[root@centos7-E ~]#export HISTTIMEFORMAT="%F %T `whoami` "  #命令前显示年月日时分秒和用户
[root@centos7-E ~]#history
    1  2020-03-20 22:13:25 root rm -rf /
    2  2020-03-20 22:13:39 root history
    3  2020-03-20 22:15:46 root echo $HISTFILE
    4  2020-03-20 22:16:21 root echo $HISTTIMEFORMAT
    5  2020-03-20 22:18:32 root export HISTTIMEFORMAT="%F %T `whoami` "
    6  2020-03-20 22:18:38 root history
[root@centos7-E ~]#echo $HISTFILE
/root/.bash_history
[root@centos7-E ~]#nano .bash_profile    #永久保存,把export HISTTIMEFORMAT="%F %T `whoami` " 写进文件里
[root@centos7-E ~]#. .bash_profile    #立即生效
1.7 调用命令行历史

不留痕迹的清理命令历史:先删文件.bash_history,在清内存history -c
#要重新调用前一个命令中最后一个参数

!$ 表示
Esc, . 点击Esc键后松开,然后点击 . 键
Alt+ . 按住Alt键的同时点击 .command !^ 利用上一个命令的第一个参数做cmd的参数
command !$ 利用上一个命令的最后一个参数做cmd的参数
command !* 利用上一个命令的全部参数做cmd的参数
command !:n 利用上一个命令的第n个参数做cmd的参数
command !n:^ 调用第n条命令的第一个参数
command !n:$ 调用第n条命令的最后一个参数
command !n:m 调用第n条命令的第m个参数
command !n:* 调用第n条命令的所有参数
command !string:^从命令历史中搜索以string开头的命令,并获取它的第一个参数
command !string:$ 从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数
command !string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数
command !string:* 从命令历史中搜索以 string 开头的命令,并获取它的所有参数
1.8 bash的快捷键
Ctrl + l 清屏,相当于clear命令
Ctrl + o 执行当前命令,并重新显示本命令
Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出
Ctrl + c 终止命令
Ctrl + z 挂起命令
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + f 光标向右移动一个字符
Ctrl + b 光标向左移动一个字符
Alt + f 光标向右移动一个单词尾
Alt + b 光标向左移动一个单词首
Ctrl + xx 光标在命令行首和光标之间移动
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r 删除当前整行
Ctrl + w 从光标处向左删除至单词首
Alt + d 从光标处向右删除至单词尾
Ctrl + d 删除光标处的一个字符
Ctrl + h 删除光标前的一个字符
Ctrl + y 将删除的字符粘贴至光标后
Alt + c 从光标处开始向右更改为首字母大写的单词
Alt + u 从光标处开始,将右边一个单词更改为大写
Alt + l 从光标处开始,将右边一个单词更改为小写
Ctrl + t 交换光标处和之前的字符位置
Alt + t 交换光标处和之前的单词位置
Alt + #提示输入指定字符后,重复显示该字符#次

注意:Alt组合快捷键经常和其它软件冲突

2 获得帮助

获取帮助的能力决定了技术的能力!多层次的帮助
whatis command --help
man and info
/usr/share/doc/
Red Hat documentation 、Ubuntu documentation
软件项目网站
其它网站
搜索

2.1 whatis

显示命令的简短描述
刚安装后不能立即使用,要制作数据库
centos7以后 mandb
centos6以前 makewhatis
范例:

[root@centos7-E ~]#whatis cal
cal (1)              - display a calendar
cal (1p)             - print a calendar
[root@centos7-E ~]#man -f cal
cal (1)              - display a calendar
cal (1p)             - print a calendar
2.2 查看命令的帮助

内部命令: help COMMAND
man bash

[root@centos7-E ~]#echo -e '\E[31mwelcome\e[0m'    #字体加颜色
welcome
[root@centos7-E ~]#help echo 
echo: echo [-neE] [arg ...]   # arg... 代表可以加多个参数
[root@centos7-E ~]#echo i love you
i love you
2.3 --help或-h选项

外部:CMD --help | -h

2.4 man命令

man页面:运维工程师常用以下四个章节

1 用户命令
4 设备文件及特殊文件
5 配置文件格式
8 管理类的命令
不写章节号,默认显示最小章节号
whatis来查命令属于哪个章节

man -k 实现搜索

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值