Linux基础
用户登陆
- 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是一种高级程序设计语言
♦ 示图
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$PS1 33[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 “iam
whoami` “ - 括号扩展:{ }
♦ 打印重复字符串的简化形式
♦ 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;5centos 33[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 - 优先级
♦别名 > 内部命令 > hash > 外部命令
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:跟搜索命令反方向,上一个
命令帮助
-
多层次的帮助
♦ whatis
♦ command --help
♦ man and info
♦/usr/share/doc/
♦ Red Hat documentation
♦ 其它网站和搜索 -
内部命令
♦ help COMMAND 或man bash -
外部命令
♦ COMMAND –help
♦ COMMAND -h♦ 使用手册(manual)
♦ man COMMAND♦ 信息页
♦ info COMMAND♦ 程序自身的帮助文档
♦ README
♦ INSTALL
♦ ChangeLog♦ 程序官方文档
♦ 官方站点:Documentation♦ 发行版的官方文档
♦ Google - 官方文档
♦ 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 - 网站搜索
♦ http://tldp.org
♦ http://www.slideshare.net
♦ http://www.google.com
➢ Openstackfiletype:pdf
➢ rhcasite:redhat.com/docs
本文摘自 :https://blog.51cto.com/u