Linux基础篇--linux基础和帮助用法
本章概要
用户登录
终端
Shell介绍
执行命令
简单命令
Tab键补全
命令行历史
bash快捷键
使用gnome-terminal
whatis
command--help
manandinfo
本地帮助文档/usr/share/doc/
官网在线文档
其它网站和搜索
用户登录
root用户
  一个特殊的管理帐户
  也被称为超级用户
  root已接近完整的系统控制
  对系统损害几乎有无限的能力
  除非必要,不要登录为root
普通用户
  权限有限
  造成损害的能力比较有限
终端类型terminal
设备终端
  键盘鼠标显示器
物理终端(/dev/console )
  控制台console
虚拟终端(tty:teletypewriters,/dev/tty# #为[1-6])
  tty可有n个,Ctrl+Alt+F[1-6]
图形终端(/dev/tty7 )startx, xwindows
  CentOS 6: Ctrl + Alt + F7
  CentOS 7: 在哪个终端启动,即位于哪个虚拟终端
串行终端(/dev/ttyS# )
  ttyS
伪终端(pty:pseudo-tty,/dev/pts/# )
  pty, SSH远程连接
查看当前的终端设备命令:#tty
交互式接口
交互式接口:启动终端后,在终端设备附加一个交互式应用程序
GUI:Graphic User Interface
  X protocol, window manager, desktop
  Desktop:
    GNOME (C, 图形库gtk),
    KDE (C++,图形库qt)
    XFCE (轻量级桌面)
CLI:Command Line Interface
  shell程序:sh(bourn 史蒂夫·伯恩)cshtcshksh(korn)bash (bourn again shell)GPL zsh
shell
Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
也被称为LINUX的命令解释器(command interpreter)
shell是一种高级程序设计语言
bash shell
GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是Linux标准的shell,与sh兼容
CentOS默认使用
显示当前使用的shell
   ${SHELL}
显示当前系统使用的所有shell
  cat /etc/shells
[root@centos7 ~]#echo $SHELL
/bin/bash
[root@centos7 ~]#cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
命令提示符
命令提示符:prompt
 [root@localhost~]#
  # 管理员$ 普通用户
显示提示符格式
  [root@localhost~]#echo $PS1
修改提示符格式
  PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
  \e \033 \u 当前用户
  \h 主机名简称 \H 主机名
  \w 当前工作目录 \W 当前工作目录基名
  \t 24小时时间格式 \T 12小时时间格式
  \! 命令历史数 \# 开机后命令历史数
执行命令
输入命令后回车
  提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来
在shell中可执行的命令有两类
 内部命令:由shell自带的,而且通过某命令形式提供
  help 内部命令列表
  enable cmd启用内部命令
  enable –n cmd禁用内部命令
  enable –n 查看所有禁用的内部命令
 外部命令:在文件系统路径下有对应的可执行程序文件
  查看路径:which -a |--skip-alias; whereis
区别指定的命令是内部或外部命令
 type COMMAND
执行外部命令
Hash缓存表
  系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。利用hash缓存表可大大提高命令的调用速率
hash常见用法
  hash 显示hash缓存
  hash –l 显示hash缓存,可作为输入使用
  hash –p path name 将命令全路径path起别名为name
  hash –t name 打印缓存中name的路径
  hash –d name 清除name缓存
  hash –r 清除缓存
注意:如果在将外部命令执行过一次的情况下,把该命令的路径进行更改,那么该命令将无法执行。
原因:因为在执行命令,shell会首先查看hash缓存,会根据缓存中的路径执行该命令,但此时该命令的路径已经改变,因此会发生错误。
解决方法:清除缓存即可
命令别名
显示当前shell进程所有可用的命令别名
  alias
定义别名NAME,其相当于执行命令VALUE
  alias NAME='VALUE'
在命令行中定义的别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
  仅对当前用户:~/.bashrc
  对所有用户有效:/etc/bashrc
编辑配置给出的新配置不会立即生效
bash进程重新读取配置文件
  source /path/to/config_file
  . /path/to/config_file
撤消别名:unalias
  unalias[-a] name [name ...]
  -a 取消所有别名
如果别名同原命令同名,如果要执行原命令,可使用
  \ALIASNAME
  “ALIASNAME”
  ’ALIASNAME’
  command ALIASNAME
  /path/commmand
注意:别名、内部命令、外部命令优先级:从大到小分别是别名、内部命令、外部命令
命令格式
COMMAND [OPTIONS...] [ARGUMENTS...]
 选项:用于启用或关闭命令的某个或某些功能
  短选项:-c 例如:-l, -h
  长选项:--word 例如:--all, --human-readable
 参数:命令的作用对象,比如文件名,用户名等
注意:
 多个选项以及多参数和命令之间使用空白字符分隔
[root@centos7 ~]#ls /etc/fstab /etc/issue
 取消和结束命令执行:Ctrl+c,Ctrl+d
 多个命令可以用;符号分开
[root@centos7 ~]#ls /etc/fstab;cat /etc/issue
/etc/fstab
\S
Kernel \r on an \m
 一个命令可以用\分成多行
[root@centos7 ~]#host\
> na\
> me
centos7.localdomain
日期和时间date
linux系统的两种时钟
  系统时钟:由Linux内核通过CPU的工作频率进行的
  硬件时钟:主板
相关命令:
 date 显示和设置时间和日期
  date -u 显示格林尼治时间
  date 月日时分年秒(时间格式) 设置时间
  date +%Y%m%d或+%F 显示年月日
  date +%H%M%S或+%T 显示时分秒
  date +“%F %T” 选项带有空格,需用引号
  date -d ‘-2 day’ 显示前天时间
  date -d ‘2 day’ 显示后天时间
  date -d ‘-2 day’ +%F 只显示前天的年月日
  date -d ‘-2 day’ +%a(或%u) 只显示前天是星期几
  date -f 文件 批量处理文件
  date -d “具体日期” +%s 将1970年1月1日到该具体日期的时间转换为秒 date -d @秒数 +“%F %T” 把秒数转换为时间和日期
 clock,hwclock 显示硬件时间
  -s 以硬件时间为准,更改系统时间
  -w 以系统时间为准,更改硬件时间
时区:/etc/localtime
 cat /etc/localtime 查看时区
 设置时区:
 timedatectl set-timezones (centos7系统)
 tzselect (centos6系统)
cal 显示日历
  -m 显示当月日历
  -y 显示当年日历
知识扩展:
更改数量较多设备的时间
ntpdate 时钟服务器ip地址 校准服务器时间
时钟服务器需要做配置才能使用ntpdate命令,在后面会提到这方面内容
linux趣事:
cal 09 1752 1752年9月份少了12天
[root@centos7 ~]#cal 09 1752
September 1752
Su Mo Tu We Th Fr Sa
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
简单命令
关机:halt,poweroff
重启:reboot
  -f:强制重启,不调用shutdown
  -p:切断电源
关机或重启:shutdown
用法:
 shutdown [OPTIONS...] [TIME] [WALL...]
 即shutdown 选项 关机时间 关机提示
  -r:reboot
  -h:halt
  -c:cancel 取消关机
  TIME:无指定,默认相当于+1,单位为分钟
    now:立刻关机,相当于+0
    +m:相对时间表示法,几分钟之后;例如+3
    hh:mm:绝对时间表示,指明具体关机时间
如:shutdown -h 18:30 “the system will be halt”
系统在18:30关机并发出提示“the system will be halt”
备注:系统提示(“the system will be halt”)只有在关机前15分钟内才会出现。
用户登录信息查看命令:
  whoami:显示当前登录有效用户
  who:系统当前所有的登录会话
  w:系统当前所有的登录会话及所做的操作
nano文本编辑
screen命令:
  创建新screen会话
    screen –S [SESSION]
  加入screen会话
    screen –x [SESSION]
  退出并关闭screen会话
    exit
  剥离当前screen会话
    Ctrl+a,d
  显示所有已经打开的screen会话
    screen -ls
  恢复某screen会话
    screen -r [SESSION]
知识扩展:
使用screen命令解决断网中断正在操作的程序或命令问题
screen 开启会话
screen -r 恢复某会话 此命令只对单个会话有用,即当前会话没有加入其它用户
以下命令针对两个用户连接到同一台机器上才能使用
screen -S [session](会话名) 创建新会话
[root@centos7 ~]#screen -S help
screen -ls 查看当前开启的全部会话
[root@centos7 ~]#screen -ls
There is a screen on:
3485.help (Attached)
1 Socket in /var/run/screen/S-root.
screen -x [session](会话名) 加入会话
当连接在同一台设备上的两个用户加入同一个会话以后,两个终端显示画面一致。
ctrl+a,d 剥离当前会话
exit 退出并关闭screen会话
echo 显示字符
用法:echo [-neE][字符串]
说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号
选项:
 -E:(默认)不支持\解释功能
 -e:启用\字符的解释功能
 -n:不自动换行
显示变量
 echo “$环境变量”
‘ ’(单引号) 既不识别变量,又不识别命令 最傻
" "(双引号) 只能识别变量,不识别命令 一般
` `(反向单引号)相当于$() 既识别变量,又识别命令 最聪明
启用命令选项-e,即echo -e ,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
 \a 发出警告声
 \b 退格键
 \c 最后不加上换行符号
 \n 换行且光标移至行首
 \r 回车,即光标移至行首,但不换行
 \t 插入tab
 \\插入\字符
 \0nnn 插入nnn(八进制)所代表的ASCII字符
  echo -e '\033[43;31;5mmagedu\033[0m'
 \xHH插入HH(十六进制)所代表的ASCII字
命令行扩展、被括起来的集合
命令行扩展:$( ) 或`  把一个命令的输出打印给另一个命令的参数  echo "This system's name is $(hostname) "  This system's name is server1.example.com  echo "i am \whoami` "
 i am root
括号扩展:{ }
 打印重复字符串的简化形式
 echo file{1,3,5}
  file1 file3 file5
 rm -f file{1,3,5}
 echo {1..10} 显示1到10
 echo {a..z} 显示a到z
 echo {000..20..2} 以三位数显示0到20,并且以2递增
tab键
命令补全
  内部命令:
  外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令
  用户给定的字符串只有一条惟一对应的命令,直接补全
  否则,再次Tab会给出列表
路径补全
  把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
  如果惟一:则直接补全
  否则:再次Tab给出列表
双击tab键
command 2Tab 所有子命令或文件补全
string2Tab 以string开头命令
/2Tab 显示所有根目录下一级目录,包括隐藏目录
./2Tab 当前目录下子目录,包括隐藏目录
*2Tab 当前目录下子目录,不包括隐藏目录
~2Tab 所有用户列表
$2Tab 所有变量
@2Tab /etc/hosts记录(centos7不支持)
=2Tab 相当于ls –A (centos7不支持)
命令行历史
保存你输入的命令历史。可以用它来重复执行命令
登录shell时,会读取命令历史文件中记录下的命令~/.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中
重复前一个命令,有4种方法
 重复前一个命令使用上方向键,并回车执行
 按!! 并回车执行
 输入!-1 并回车执行
 按Ctrl+p并回车执行
!:0 执行前一条命令(去除参数)
Ctrl + n 显示当前历史中的下一条命令,但不执行
Ctrl + j 执行当前命令
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
!string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p仅打印命令历史,而不执行
!$:p 打印输出!$ (上一条命令的最后一个参数)的内容
!*:p打印输出!*(上一条命令的所有参数)的内容
^string删除上一条命令中的第一个string
^string1^string2将上一条命令中的第一个string1替换为string2
!:gs/string1/string2将上一条命令中所有的string1都替换为string2
使用up(向上)和down(向下)键来上下浏览从前输入的命令
ctrl-r来在命令历史中搜索命令
 (reverse-i-search)`’:
Ctrl+g:从历史搜索模式退出
要重新调用前一个命令中最后一个参数
 !$ 表示
 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 开头的命令,并获取它的所有参数
命令history
history 查看历史命令
用法:history [-c] [-d offset] [n]
 history -anrw [filename]
 history -ps arg [arg...]
常用选项:
  -c: 清空命令历史
  -d offset: 删除历史中指定的第offset个命令
  n: 显示最近的n条历史
  -a: 追加本次会话新执行的命令历史列表至历史文件
  -r: 读历史文件附加到历史列表
  -w: 保存历史列表到指定的历史文件
  -n: 读历史文件中未读过的行到历史列表
  -p: 展开历史参数成多行,但不存在历史列表中
  -s: 展开历史参数成一行,附加在历史列表后
命令历史相关环境变量
HISTSIZE:命令历史记录的条数
HISTFILE:指定历史文件,默认为~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
HISTTIMEFORMAT=“%F %T “ 显示时间
HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2开头的历史
控制命令历史的记录方式:
 环境变量:HISTCONTROL
  ignoredups 默认,忽略重复的命令,连续且相同为“重复”
  ignorespace 忽略所有以空白开头的命令
  ignoreboth 相当于ignoredups, ignorespace的组合
  erasedups 删除重复命令
export 变量名="值“
存放在/etc/profile 或~/.bash_profile
bash的快捷键
bash常用快捷键
Ctrl + l清屏,相当于clear命令
Ctrl + o执行当前命令,并重新显示本命令
Ctrl + s阻止屏幕输出,锁定
Ctrl + q允许屏幕输出
Ctrl + c终止命令
Ctrl + z挂起命令
Ctrl + a光标移到命令行首,相当于Home
Ctrl + e光标移到命令行尾,相当于End
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 + N提示输入指定字符后,重复显示该字符N次
备注:当使用xshell或secureCRT远程连接时,alt功能键会有冲突,需要在软件中进行设置以后才能使用alt快捷键功能
gnome-terminal
应用程序->附件->终端
支持多个“标签”shell的图形化终端模拟器
 Ctrl-Shift-n 创建新窗口
 Ctrl-Shift-q关闭当前窗口
 Ctrl-Shift-t 创建一个标签页
 Ctrl-Shift-w 关闭一个标签页
 Ctrl-PaUp/PgUn切换到下一个/前一个标签页
 Ctrl-Shift-c 复制选中的文本
 Ctrl-Shift-v 把文本粘帖到当前光标处
获得帮助
获取帮助的能力决定了技术的能力!
通过帮助查询一个命令如何使用
  步骤:先查看是内部还是外部命令 type
  如果是内部命令,使用help 内部命令
  如果是外部命令,使用whatis查看该命令在man帮助第几章节
  然后man 章节号 command
多层次的帮助
 whatis
 command--help
 manandinfo
 /usr/share/doc/
 Red Hat documentation
 其它网站和搜索
whatis
显示命令的简短描述
使用数据库,系统刚安装后不可立即使用
需执行以下命令makewhatis| mandb制作数据库
使用示例:whatis cal或man -f cal
命令帮助
内部命令
帮助用法:
  help command
  man bash 查看所有内部命令帮助,可通过关键字查询
外部命令
帮助用法:
(1) COMMAND --help
 COMMAND -h
(2) 使用手册(manual)
 man COMMAND
(3) 信息页
 info COMMAND
(4) 程序自身的帮助文档
 README
 INSTALL
 ChangeLog
(5) 程序官方文档
 官方站点:Documentation
(6) 发行版的官方文档
(7) Google
--help和-h选项
显示用法总结和参数列表
大多数命令都可以使用此帮助格式,但并非所有的命令都支持
如: --help
用法:
  date[OPTION]... [+FORMAT]
  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
符号说明:
  []表示可选项
  CAPS或表示变化的数据
  ...表示一个列表
  x |y| z的意思是“x或y或z“
    -abc的意思是-a -b –c
  { } 表示分组
练习:
1、显示当前时间,格式:2016-06-18 10:20:30
date +“%F %T”或date +“%Y-%m-%d %H:%M:%S”
2、显示前天是星期几
date -d “-2 day” +%a(或%u)
3、设置当前日期为2019-08-0706:05:10
date 080706052019.10
man命令
提供命令帮助的文件
手册页存放在/usr/share/man
几乎每个命令都有man的“页面”
man页面分组为不同的“章节”
统称为Linux手册
man命令的配置文件:/etc/man.config| man_db.conf
  MANPATH /PATH/TO/SOMEWHERE: 指明man文件搜索位置
man -M/PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示
中文man需安装包man-pages-zh-CN
man章节
1: 用户命令
2: 系统调用
3: C库调用
4: 设备文件及特殊文件
5: 配置文件格式
6: 游戏
7: 杂项
8: 管理类的命令
9:Linux 内核API
备注:作为运维工程师,只需关注1(用户命令)、5(配置文件格式)、8(管理类的命令)章节
man帮助段落说明
 NAME 名称及简要说明
 SYNOPSIS 用法格式说明
  []可选内容
   必选内容
  a|b二选一
  { }分组
  ...同一内容可出现多次
 DESCRIPTION 详细说明
 OPTIONS 选项说明
 EXAMPLES 示例
 FILES 相关文件
 AUTHOR 作者
 COPYRIGHT版本信息
 REPORTING BUGS bug信息
 SEE ALSO 其它帮助参考
man帮助
查看man手册页
  man [章节] keyword
列出所有帮助
  man –a keyword
搜索man手册
  man -kkeyword列出所有匹配的页面
  使用whatis数据库
相当于whatis
  man –f keyword
打印man帮助文件的路径
  man –w [章节] keyword
man搜索
/KEYWORD:
  以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;
  n: 下一个
  N:上一个
?KEYWORD:
  以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
  n: 跟搜索命令同方向,下一个
  N:跟搜索命令反方向,上一个
练习
1、在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间
在/etc/issue文件中写入以下内容
hostname is \n
time is \t
tty is \l
解题思路:
(1)先查看issue章节号 whatis issue
[root@centos7 ~]#whatis issue
issue (5) - prelogin message and identification file
(2)man 5 issue 发现没有先关信息,在查看SEE ALSO内容
SEE ALSO
motd(5), agetty(8), mingetty(8)
(3)man 8 agetty,发现issue文件用法
l Insert the name of the current tty line.
m Insert the architecture identifier of the machine. Same as `uname -m'.
n Insert the nodename of the machine, also known as the hostname. Same as
`uname -n'.
o Insert the NIS domainname of the machine. Same as `hostname -d'.
O Insert the DNS domainname of the machine.
r Insert the release number of the OS. Same as `uname -r'.
t Insert the current time.
u Insert the number of current users logged in.
U Insert the string "1 user" or " users" where is the number of
current users logged in.
2、今天18:30自动关机,并提示用户
shutdown -h 18:30 “the system will be halt”
info
man常用于命令参考,GNU工具info适合通用文档参考
没有参数,列出所有的页面
info 页面的结构就像一个网站
每一页分为“节点”
链接节点之前*
info [命令]
导航info页
方向键,PgUp,PgDn导航
Tab键移动到下一个链接
d 显示主题目录
Home 显示主题首部
Enter进入选定链接
n/p/u/l进入下/前/上一层/最后一个链接
s文字文本搜索
q退出info
通过本地文档获取帮助
System->help(centos6)
Applications -> documentation->help(centos7)
  提供的官方使用指南和发行注记
/usr/share/doc目录
 多数安装了的软件包的子目录,包括了这些软件的相关原理说明
 常见文档:README INSTALL CHANGES
 不适合其它地方的文档的位置
  配置文件范例
  HTML/PDF/PS 格式的文档
  授权书详情
通过在线官方文档获取帮助
第三方应用官方文档
  http://www.nginx.org
  http://tomcat.apache.org
  http://httpd.apache.org
  http://www.python.org
通过发行版官方的文档光盘或网站可以获得
 安装指南、部署指南、虚拟化指南等
 红帽知识库和官方在线文档
  http://kbase.redhat.com
  http://www.redhat.com/docs
  http://access.redhat.com
搜索引擎
  google搜索引擎
  搜索格式:Openstack filetype:pdf
  rhcasite:redhat.com/docs
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com