当前位置:首页 > IT技术 > 系统服务 > 正文

零基础领跑教科书式博文:DAY1---Linux基础
2021-10-21 23:08:01

Linux基础

jpeg

用户登陆

  • root 用户
    ♦ 一个特殊的管理帐户也被称为超级用户
    ♦ root已接近完整的系统控制,对系统损害几乎有无限的能力

  • 普通(非特权)用户
    ♦ 权限有限
    ♦ 造成损害的能力比较有限

终端

  • 设备终端
    ♦ 键盘鼠标显示器

  • 物理终端
    ♦ 控制台console

  • 虚拟终端
    ♦ tty 可有n个,Ctrl+Alt+F[1-6]

  • 图形终端
    ♦ CentOS 6: Ctrl + Alt + F7
    ♦ CentOS 7: 在哪个终端启动,即位于哪个虚拟终端

  • 串行终端
    ♦ ttyS

  • 伪终端
    ♦ pty, SSH远程连接

  • 查看当前的终端设备
    ♦ tty

  • 预登陆信息
    ♦ /etc/issue
    ♦ 示例

    Hostname is 
       主机
    Terminal is l   终端
    Time is 	       时间
    S
    Kernel 
     on an m

    ♦ /etc/gdm/custom.conf 系统自动登陆

    AutomaticloginEnable=true
    Automaticlogin=root
  • 登陆后信息
    ♦ /etc/motd

交互式接口

  • 交互式接口:启动终端后,在终端设备附加一个交互式应用程序
  • GUI:Graphic User Interface
    ♦ X protocol, window manager, desktop
    ♦ Desktop
    ♦ GNOME (C, 图形库gtk)
    ♦ KDE (C++,图形库qt)
    ♦ XFCE (轻量级桌面)
  • CLI:Command Line Interface
    ♦ shell程序:sh (bourn 史蒂夫·伯恩) csh tcsh ksh (korn) bash (bournagain shell)GPL zsh
  • 支持多个“标签”shell的图形化终端模拟器
    ♦ Ctrl-Shift-n 创建新窗口
    ♦ Ctrl-Shift-q 关闭当前窗口
    ♦ Ctrl-Shift-t 创建一个标签页
    ♦ Ctrl-Shift-w 关闭一个标签页
    ♦ Ctrl-PaUp/PgUn 切换到下一个/前一个标签页
    ♦ Ctrl-Shift-c 复制选中的文本
    ♦ Ctrl-Shift-v 把文本粘帖到当前光标处

shell介绍

  • Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
  • shell也被称为LINUX的命令解释器(command interpreter)
  • shell是一种高级程序设计语言
    ♦ 示图
    jpeg

bash shell

  • GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是Linux标准的shell,与sh兼容
  • CentOS默认使用
  • 显示当前使用的shell
    ♦ echo ${SHELL}
  • 显示当前系统使用的所有shell
    ♦ cat /etc/shells

命令提示符

  • 命令提示符:prompt

  • [root@localhost~]#
    ♦ # 管理员
    ♦ $ 普通用户

  • 显示提示符格式
    ♦ [root@localhost~]#echo $PS1

  • 修改提示符格式
    PS1="[e[1;5;41;33m][u@h W]\$[e[0m]"
    ♦ 修改颜色示例

    cat >> /root/.bashrc << EFO
    PS1="33[35;40m`echo $PS1`33[0m"
    EFO
    
    #!/bin/bash
    
    cat >> /root/.bashrc <<EFO
    PS1="33[32;40m$PS133[0m"
    EFO
    exec bash
    
    #vim不带颜色解决方案
    TERM=xterm
    export TERM

    ♦ e 33u 当前用户
    ♦ h 主机名简称H 主机名
    ♦ w 当前工作目录W 当前工作目录基名
    ♦ 24小时时间格式T 12小时时间格式
    ♦ ! 命令历史数 # 开机后命令历史数

执行命令

  • 输入命令后回车
    ♦ 提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来
  • 在shell中可执行的命令有两类
  • 内部命令
    ♦ 由shell自带的,而且通过某命令形式提供
    ♦ help 内部命令列表
    enable 列出内部命令
    ♦ enable cmd 启用内部命令
    ♦ enable –n cmd 禁用内部命令
    ♦ enable –n 查看所有禁用的内部命令
  • 外部命令
    ♦ 在文件系统路径下有对应的可执行程序文件
    查找外部命令路径:which -a |–skip-alias ; whereis
  • 区别指定的命令是内部或外部命令
    ♦ type COMMAND
    type -a cmd 查看命令的执行路径

命令格式

  • COMMAND [OPTIONS…] [ARGUMENTS…]
    ♦ 选项
     ➢ 用于启用或关闭命令的某个或某些功能
     ➢ 短选项:-c 例如:-l, -h
     ➢ 长选项:--word 例如:--all, --human-readable
    ♦ 参数
     ➢ 命令的作用对象,比如文件名,用户名等
  • 注意
    ♦ 多个选项以及多参数和命令之间使用空白字符分隔
    ♦ 取消和结束命令执行:Ctrl+c,Ctrl+d
    多个命令可以用;符号分开
    一个命令可以用分成多行
  • --help和-h选项
    ♦ 显示用法总结和参数列表
    ♦ 使用的大多数,但并非所有的
    ♦ 示例
     ➢ date --help
     ➢ x |y| z 的意思是“x 或y 或z “
     ➢ { } 表示分组

执行外部命令

  • 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 清除缓存

命令扩展与集合

  • 命令行扩展:$( )`<br/>♦ 把一个命令的输出打印给另一个命令的参数<br/>♦ echo “Thissystem’s name is $(hostname) “<br/>♦ This “system’s name isserver1.example.com”<br/>♦ echo “iamwhoami` “
  • 括号扩展:{ }
    ♦ 打印重复字符串的简化形式
    ♦ echo file{1,3,5} 结果为:file1 file3 file5
    ♦ rm -f file{1,3,5}
    ♦ echo {1..10}
    ♦ echo {a..z}
    ♦ echo {01..20..2}

tab键

  • 命令补全
    bash-completion 包名称
    ♦ 内部命令
    ♦ 外部命令: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个命令

  • !u 最后一条以u开头的命令

  • !?tn 最近包含tn的命令

  • 录像小方法

    录像命令
    开始script -t 2> time.log -a cmd.session
    结束exit
    播放
    scriptreplay time.log  cmd.session

相关环境变量

  • HISTSIZE:命令历史记录的条数

  • HISTFILE:指定历史文件,默认为~ /.bash_history

  • HISTFILESIZE:命令历史文件记录历史的条数

  • HISTTIMEFORMAT=“%F %T “显示时间
    ♦ 示例

    HISTTIMEFORMAT="%F %T `whoami` "
    cat >> /etc/profile.d/his.sh <<EOF
    HISTTIMEFORMAT="%F %T `whoami` "
    EOF
    exec bash
  • HISTIGNORE=“str1:str2*:…“忽略str1命令,str2开头的历史

  • 控制命令历史的记录方式
    ♦ 环境变量:HISTCONTROL
    ♦ ignoredups 默认,忽略重复的命令,连续且相同为“重复”
    ♦ ignorespace 忽略所有以空白开头的命令
    ♦ ignoreboth 相当于ignoredups, ignorespace的组合
    ♦ erasedups 删除重复命令

  • export 变量名="值“
    export HISTTIMEFORMAT="%F %T"

  • 存放在/etc/profile 或~ /.bash_profile

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 + N 提示输入指定字符后,重复显示该字符N次
    Alt 100 a 100个a
    ♦ 注意:Alt组合快捷键经常和其它软件冲突

简单命令

echo

  • 功能:显示字符

  • 语法:echo [-neE][字符串]

  • 说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号

  • 选项
    ♦ -E (默认)不支持 解释功能
    ♦ -n 不自动换行
    ♦ -e 启用 字符的解释功能

  • 显示变量
    ♦ echo “$VAR_NAME“ 双引号:变量会替换,弱引用
    ♦ echo ‘$VAR_NAME‘ 单引号:变量不会替换,强引用
    ♦ 示例

    echo 'echo $USER'  输出 echo $USER
    echo "echo $USER"  输出 echo root
    echo `echo $USER`  输出 root
  • 启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
    ♦ a 发出警告声
    ♦  退格键
    ♦ c 最后不加上换行符号
    ♦ 换行且光标移至行首
    ♦ 回车,即光标移至行首,但不换行
    ♦ 插入tab
    ♦ 插入字符
    ♦ nnn 插入nnn(八进制)所代表的ASCII字符
    ♦ echo -e ‘33[43;31;5centos33[0m’
    ♦ xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

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 清除缓存

history

  • 常见选项
    -c: 清空命令历史
    -d offset: 删除历史中指定的第offset个命令
    ♦ n: 显示最近的n条历史
    ♦ -a: 追加本次会话新执行的命令历史列表至历史文件
    ♦ -r: 读历史文件附加到历史列表
    -w: 保存历史列表到指定的历史文件
    ♦ -n: 读历史文件中未读过的行到历史列表
    ♦ -p: 展开历史参数成多行,但不存在历史列表中
    ♦ -s: 展开历史参数成一行,附加在历史列表后
    ♦ hisotry -s “rm -rf /*“

alias

  • 显示当前shell进程所有可用的命令别名
    alias
  • 定义别名NAME,其相当于执行命令VALUE
    ♦ alias NAME=’VALUE’
    alias cdnet="cd /etc/sysconfig/network-scripts"
  • 在命令行中定义的别名,仅对当前shell进程有效
  • 如果想永久有效,要定义在配置文件中
    ♦ 仅对当前用户:~ /.bashrc
    ♦ 对所有用户有效:/etc/bashrc
  • 编辑配置给出的新配置不会立即生效
  • bash进程重新读取配置文件
    ♦ source /path/to/config_file
    ♦ . /path/to/config_file
  • 撤消别名:unalias
    ♦ unalias[-a] name [name …]
    unalias cdnet
    ♦ -a 取消所有别名
  • 如果别名同原命令同名,如果要执行原命令,可使用
    ♦ ALIASNAME
    ♦ “ALIASNAME”
    ♦ ‘ALIASNAME’
    ♦ command ALIASNAME
    ♦ /path/commmand
  • 优先级
    别名 &gt; 内部命令 &gt; hash &gt; 外部命令

date

  • Linux的两种时钟
    ♦ 系统时钟:由Linux内核通过CPU的工作频率进行的
    ♦ 硬件时钟:主板

  • 系统时间
    ♦ date +%s
    ♦ date -d @1509536033

  • 硬件时间
    ♦ hwclock,clock
    ♦ -s, –hctosys 以硬件时钟为准,校正系统时钟
    ♦ -w, –systohc 以系统时钟为准,校正硬件时钟

  • 时区:/etc/localtime

  • 显示日历:cal –y

  • 同步时间
    ♦ ntpdate IP

  • 任意时间换算
    date -d "2008-08-08 20:00:00" +%s
    date -d @时间戳 +%F%T

  • 设置时区
    ♦ 操作系统:Centos7
     ➢ timedatectl list-timezones 列出时区
     ➢ timedatectl set-timezone centos7
     ➢ ls -l /etc/localtime

    ♦ 操作系统:Centos6
     ➢ tzselect

shutdown

  • 关机
    ♦ halt
    ♦ poweroff

  • 重启
    ♦ reboot
     ➢ -f: 强制,不调用shutdown
     ➢ -p: 切断电源

  • 关机或重启:shutdown
    ♦ -r: reboot
    ♦ -h: halt
    ♦ -c:cancel

    ♦ TIME:无指定,默认相当于+1(CentOS7)
     ➢ now: 立刻,相当于+0
     ➢ +m: 相对时间表示法,几分钟之后;例如+3
     ➢ hh:mm: 绝对时间表示,指明具体时间
     ➢ shutdown -r 18:30
     ➢ shutdown -r +30

who

  • 用户登录信息查看命令
    ♦ whoami: 显示当前登录有效用户
    ♦ who: 系统当前所有的登录会话
    ♦ w: 系统当前所有的登录会话及所做的操作
    ♦ 查看运行级别
     ➢ who -r
     ➢ runlevel

scree

  • 创建新screen会话
    ♦ screen –S [SESSION]
  • 显示所有已经打开的screen会话
    ♦ screen -ls
  • 加入screen会话
    ♦ screen –x [SESSION]
  • 退出并关闭screen会话
    ♦ exit
  • 剥离当前screen会话
    ♦ Ctrl+a,d
  • 恢复某screen会话
    ♦ screen -r [SESSION]
  • 实际应用、远程备份时间长环境
    ♦ 第一步: screen 创建会话
    ♦ 第二步: screen -ls
    ♦ 第三步: screen -r 恢复

whatis

  • 显示命令的简短描述
  • 使用数据库
  • 刚安装后不可立即使用
  • makewhatis| mandb制作数据库
    ♦ whatis cal 或 man -f cal

wall

  • 发送广播
    ♦ wall “system will shutdown at 23:00:00”

info

  • man常用于命令参考,GNU工具info适合通用文档参考
  • 没有参数,列出所有的页面
  • info 页面的结构就像一个网站
  • 每一页分为“节点”
  • 链接节点之前 *
  • info [ 命令]
    ♦ info ls
info导航页
  • 方向键,PgUp,PgDn 导航
  • Tab键移动到下一个链接
  • d 显示主题目录
  • Home 显示主题首部
  • Enter进入选定链接
  • n/p/u/l 进入下/前/上一层/最后一个链接
  • s 文字文本搜索
  • q 退出info

man命令

man介绍
  • 提供命令帮助的文件
  • 手册页存放在/usr/share/man
  • 几乎每个命令都有man的“页面”
  • man页面分组为不同的“章节”
  • 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
帮助段落说明
  • 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命令
  • man命令的操作方法:使用less命令实现
    ♦ space, ^v, ^f, ^F: 向文件尾翻屏
    ♦ b, ^b: 向文件首部翻屏
    ♦ d, ^d: 向文件尾部翻半屏
    ♦ u, ^u: 向文件首部翻半屏
    ♦ RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行y or ^Y or ^P or k
    or ^K:向文件首部翻一行
    ♦ q: 退出
    ♦ #:跳转至第#行
    ♦ 1G: 回到文件首部
    ♦ G:翻至文件尾部
  • 参见用法
    man ascii
    man bash
man搜索
  • /KEYWORD
    ♦ 以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区
    分字符大小写
    ♦ n: 下一个
    ♦ N:上一个
  • ?KEYWORD
    ♦ 以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区
    分字符大小写
    ♦ n: 跟搜索命令同方向,下一个
    ♦ N:跟搜索命令反方向,上一个

命令帮助

本文摘自 :https://blog.51cto.com/u