Mark blog

知行合一 划水归档

用户登录

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 史蒂夫·伯恩) csh tcsh ksh (korn) bash (bourn again shell)GPL zsh


什么是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\]"

\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进程所有可用的命令别名

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


简单命令

关机:halt, poweroff

重启:reboot

-f: 强制,不调用shutdown 

-p: 切断电源 

关机或重启:shutdown

shutdown [OPTION]… TIME [MESSAGE]

-r: reboot 

-h: halt 

-c:cancel 

TIME:无指定,默认相当于 +1

now: 立刻,相当于+0 

+m: 相对时间表示法,几分钟之后;例如 +3 

hh:mm: 绝对时间表示,指明具体时间 

用户登录信息查看命令:

whoami : 显示当前登录有效用户

who : 系统当前所有的登录会话

w : 系统当前所有的登录会话及所做的操作

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;5mmagedu\033[0m' 

\xHH插入HH(十六进制)所代表的ASCII字 

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

命令行扩展:$( ) 或 ``

把一个命令的输出打印给另一个命令的参数

echo "This system's name is $(hostname) "

This system's name is server1.example.com

括号扩展:{ }

打印重复字符串的简化形式

echo file{1,3,5}

生成 file1 file3 file5

rm -f file{1,3,5}

echo {1..10}

echo {a..z}

echo {000..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 [-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的快捷键

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组合快捷键经常和其它软件冲突


获得帮助

多层次的帮助

whatis

command –help

man and info

/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选项

显示用法总结和参数列表

使用的大多数,但并非所有的

示例:

date --help 

Usage: date [OPTION]... [+FORMAT] or: date \[-u|--utc|-- universal]\[MMDDhhmm\[\[CC]YY]\[.ss]]

[] 表示可选项 

CAPS或 <> 表示变化的数据 

... 表示一个列表 

x |y| z 的意思是" x 或 y 或 z " 

-abc的 意思是-a -b –c 

{ } 表示分组 

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

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 -k keyword 列出所有匹配的页面 

使用 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搜索

/KEYWORD:

以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区 分字符大小写; 

n: 下一个 

N:上一个 

?KEYWORD: 以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字 符大小写;

n: 跟搜索命令同方向,下一个 

N:跟搜索命令反方向,上一个 

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 格式的文档

授权书详情