Linux入门

96 阅读3分钟

Linux 入门

  • 用户登录

    • root用户 一个特殊的管理帐户,也被称为超级用户;root 已接近完整的系统控制;对系统损害几乎有无限的能力;除非必要,不要登录为 root
    • 普通(非特权)用户 权限有限;造成损害的能力比较有限
  • 终端

    • 设备终端:键盘鼠标显示器
    • 物理终端(/dev/console ):控制台console
    • 虚拟终端(tty: teletypewriters,/dev/tty# #为[1-6]):tty 可有 n 个,Ctrl+Alt+F[1-6]
    • 图形终端(/dev/tty7 ) startx ,xwindows CentOs6: Ctrl + Alt + F7 CentOS7: 在哪个终端启动,即位于哪个虚拟终端
    • 串行终端(/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 lnterface shell程序: sh (bourn 史蒂夫·伯恩)csh tcsh ksh (korn) bash (bournagain shell)GPL zsh

  • shell

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

    • 命令提示符: 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 l --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进程所有可用的命令别名: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>

      • 参数: 命令的作用对象,比如文件名,用户名等

    • 注意:

      多个选项以及多参数和命令之间使用空白字符分隔 取消和结束命令执行:Ctrl+c,Ctrl+d 多个命令可以用;符号分开 一个命令可以用\分成多行

  • 日期和时间

    • Linux的两种时钟 系统时钟:由Linux内核通过CPU的工作频率进行的硬件时钟:主板
    • 相关命令 date显示和设置系统时间:date +%s date -d @1509536033 hwclock,clock:显示硬件时钟:-s, --hctosys 以硬件时钟为准,校正系统时钟 -w, --systohc以系统时钟为准,校正硬件时钟
    • 时区:/etc/localtime
    • 显示日历: cal -y

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删除当前整行

简单命令

  • 简单命令

    • 用户登录信息查看命令: 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]

    • echo命令 功能:显示字符 语法: echo [-neE][字符串] 说明: echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号 选项:

    • -E (默认)不支持\解释功能

    • -n不自动换行

    • -e启用\字符的解释功能

    显示变量 echo "$VAR_NAME”变量会替换,弱引用 echo '$VAR_NAME’变量不会替换,强引用

    • 启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成—般文字输出

      \a发出警告声

      \b 退格键

      \c最后不加上换行符号

      \n换行且光标移至行首

      \r回车,即光标移至行首,但不换行

      \t插入tab

      \ 插入\字符

      \0nnn 插入nnn (八进制)所代表的ASCII字符 echo -e '\033[43;31;5test\033[0m' \xHH 插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

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

    • history [-c] [-d offset] [n]

    • history -anrw [filename]

    • history -ps arg [arg...] -c:清空命令历史 -d offset:删除历史中指定的第offset个命令 n:显示最近的n条历史 -a:追加本次会话新执行的命令历史列表至历史文件 -r:读历史文件附加到历史列表 -w:保存历史列表到指定的历史文件 -n:读历史文件中未读过的行到历史列表 -p:展开历史参数成多行,但不存在历史列表中 -S:展开历史参数成一行,附加在历史列表后

    • man 查看man手册页 man[章节] keyword列出所有帮助 man -a keyword 搜索man手册 man -k keyword列出所有匹配的页面 使用whatis数据库 相当于whatis man -f keyword 打印man帮助文件的路径 man -w [章节] keyword

    • info man常用于命令参考,GNU工具info适合通用文档参考 没有参数列出所有的页面 info页面的结构就像一个网站 每一页分为“节点” 链接节点之前* info [命令]

  • 字符集和编码

    • ASCII码!计算机内部,所有信息最终都是一个二进制值。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。ASCII码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为0
    • Unicode:用于表示世界上所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode是一个很大的集合,现在的规模可以容纳100多万个符号。Unicode仅仅只是一个字符集,规定了每个字符对应的二进制代码,至于这个二进制代码如何存储则没有规定
    • Unicode编码方案:UTF-8:变长,1到4个字节 UTF-16:变长,2或4个字节 UTF-32:固定长度,4个字节
    • UTF-8是目前互联网上使用最广泛的一种 Unicode编码方式,可变长存储。使用1–4个字节表示一个字符,根据字符的不同变换长度。编码规则如下:对于单个字节的字符,第一位设为0,后面的7位对应这个字符的Unicode码。因此,对于英文中的0- 127号字符,与ASCII码完全相同。这意味着ASClI码的文档可用UTF-8编码打开;对于需要使用N个字节来表示的字符(N> 1),第一个字节的前N位都设为1,第N+1位设为0,剩余的N-1个字节的前两位都设位10,剩下的二进制位则使用这个字符的Unicode码来填充
  • --help和-h选项

    • 显示用法总结和参数列表
    • 使用的大多数,但并非所有的
    • 示例: date --help Usage: date [OPTION]... [+FORMAT] or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] []表示可选项 CAPS或<>表示变化的数据 ...表示一个列表 x ly|z的意思是“x或y或z“ -abc的意思是-a -b -c {}表示分组
  • 导航info页

    方向键,PgUp,PgDn导航 Tab键移动到下一个链接 d显示主题目录 Home显示主题首部 Enter进入选定链接 n/p/u/I进入下/前/上一层/最后一个链接 s 文字文本搜索 q退出info

命令行

  • 命令行扩展、被括起来的集合

    • 命令行扩展:$()或`` 把一个命令的输出打印给另一个命令的参数
    • 括号扩展:{} 打印重复字符串的简化形式
  • 命令行历史

    • 保存你输入的命令历史。可以用它来重复执行命令

    • 登录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打印输出!(上一条命令的最后一个参数)的内容

    • !: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键的同时点击﹒键)

  • 命令历史相关环境变量

    • 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