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打印输出!(上一条命令的所有参数)的内容
-
^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