Linux常用命令和快捷键


一.bash的快捷键:

        Ctrl+a: 跳至命令行首

        Ctrl+e: 跳至命令行尾

        Ctrl+u: 删除命令行首至当前光标所在处的内容

        Ctrl+k: 删除当前光标所有处至命令行尾的内容

        Ctrl+l: 清屏,相当于clear命令

        Ctrl+c: 取消或终止;

        Ctrl+z: 将当前命令送至后台


        Ctrl+Shift+t: 创建新的标签页

        Ctrl+PageUp/PageDown: 切换标签页

        Ctrl+Shift+c: 复制选中的内容

        Ctrl+Shift+v: 粘贴

        Shift+PageUp/PageDown: 上下翻动屏幕


       空格键:向后翻一屏;

        b: 向前翻一屏;

       回车键:向后翻一行;

        k: 向前翻一行;

        Ctrl+d: 向后翻半屏;

        Ctrl+u: 向前翻半屏;

        G: 跳转至文件尾;

        1G: 跳转至文件首;

        q: 退出;

bash的快捷键:

        Ctrl+a: 跳至命令行首

        Ctrl+e: 跳至命令行尾

        Ctrl+u: 删除命令行首至当前光标所在处的内容

        Ctrl+k: 删除当前光标所有处至命令行尾的内容

        Ctrl+l: 清屏,相当于clear命令

        Ctrl+c: 取消或终止;

        Ctrl+z: 将当前命令送至后台


二.

       Ifconfig    显示登录地址,广播地址等信息                                        

startx & 切换到图形界面    startx -- :1 &

# basename PATH

例如#. basename /usr/share/doc显示基名 doc

# dirname PATH

例如 dirname /usr/share/doc  显示路径 /usr/share

# logout: 登出

# passwd修改用户密码   /etc/passwd可以查看所有用户的属性信息

# which COMMAND

# type COMMAND   查看命令类型是内建命令还是外部命令

# echo ${VAR_NAME}变量引用

# hash

# history 显示此前的命令

!#: 执行历史中的第#条;

!-#: 执行历史中的倒数第#条;

!!: 命令历史中的最后一条命令;

!string: 执行命令历史中最近一条以“string”开头的命令;

[]:可省略之内容

<>: 必须提供的内容

a|b: 二者选择一个

...: 前面的内容可重复出现多次

三.如何获取命令帮助:

内建命令:help COMMAND

外部命令:

1manual: 使用手册,   man COMMAND

2info: 信息页,  info COMMAND

3、简要使用帮助: COMMAND --help

4、官方文档:google

5、额外的文档:READMEINSTALLChangeLog/usr/share/doc/ls-VERSION

6、发行版官方文档,http://www.redhat.com/docs/

四.ls: 列出指定目录下的文件

-l:以长格式显示文件的详细属性 分别是(文件类型/属主、属组及其它用户的权限/文件被硬链接的次数/属主/属组/文件的大小/文件最近一次被修改的时间/文件名)

-a:显示所有文件,包括隐藏文件

-A:跟-a功能相同,但不显示...

.: 当前目录;

..: 上级目录;

-n: 以用户及组的id号排序;

-h: 文件大小会自动进行单位换算;

-r:文件名逆序显示;

-R:递归显示;

date: date +%s

显示天    -d

显示月    -m

显示年    -Y

显示小时   -H

显示年--  -F

显示小时:分钟:秒   -T

date mmddHHMM[CC[YY]][.SS]

hwclock

-w: 以系统时钟为准,将硬件时钟修改为系统时间

-s:以硬件时钟为准,将系统时间修改为硬件时间

目录相关命令:

cd /usr/share

家目录:cd ~

 cd

 cd ~USERNAME: 切换至USERNAME的家目录;

 cd -: 在上个目录和当前目录之间切换;

pwd: 显示当前目录;

dirname:显示指定路径的目录;

mkdir 创建新目录

-p:没有错误,如果现有的,根据需要父目录

-v: 显示创建过程

bash支持命令行展开:{}

例如a_b, a_dc_b, c_d

mkdir a_b a_d c_b c_d

mkdir {a,c}_{b,d}

五.文本文件相关的命令:

查看:

cat, tac

more: 向后翻,在翻至文件尾部之前允许向前翻

less: 向前翻

head: 文件的前n行;

tail: 文件的后n行;-n #  或   -#

文本查找:查找单词

/keyword: 从当前光标所在行开始,向文件尾部查找;

?keyword: 从当前光标所在行开始,向文件首部查找;

n: 跟当前查找命令相同方向的下一个匹配;

N:跟当前查找命令相反方向的下一个匹配;

tail -f: 查看一个文件尾部内容后,不退出,等待并显示新增的行;退出使用Ctrl+C

创建文本:

nano  

touch: 修改文件时间戳;

-a: 访问时间

-m: 修改时间

-t STAMP: 指定时间,格式[CC]YYMMDDhhmm.ss

复制:

cp 要复制的文件路径 ...  目标

-r: 递归复制

-a: 递归复制

-i: 交互式,覆盖前提醒确认

             -v:解释要做什么

移动:

mv 要移动的文件 ... 目标

-i: 覆盖前提醒确认;

删除:

rm

-i: 提醒

-f: 强行删除;

-r: 递归删除目录及其内部的所有文件;

-rf 删除目录及其内部的所有文件不会提醒确认

文本处理命令:

wc [options] FILE

-l: 只显示行数;

-w  只显示单词数

-c  只显示字符数

tr: translate

tr [options] '原来的字符集合' '转换为的字符集合'

-d '字符集合':把出现的文件中的,属于字符集合中的字符统统删除;

cut: 文本切割,

cut [options] FILE

-d: 默认分隔符为空白,-d:

-f 后面直接写所要取得段数

join: cut相反。组合内容

通配符:

*:任意长度的任意字符;

?: 任意单个字符;

[]: 指定范围内的任意单个字符;

[^]:脱字符,取反,指定范围外的任意单个字符,

字符集合:

[:digit:] : 所有数字, 相当于0-9

[:lower:]:所有的小写字母相当于a-z

[:upper:]:所有的大写字母相当于A-Z

[:alpha:]: 所有的字母相当于a-zA-Z

[:alnum:]:所有的字母和数字。 相当于[0-9a-zA-Z]

[:space:]: 空白字符

[:punct:]:所有标点符号

判断普通文件的内容的类型,使用file命令;

# file FILE

文件相关:

touch:

access time: -a   最后一次的访问时间

modify time: -m   最后一次的修改时间

change time       最后一次的改变时间

stat FILE    查看文件的一次的访问时间一次的修改时间一次的改变时间等内容

-t [CC]YYMMDDhhmm.ss     修改为指定时间

六.添加用户:

useradd, adduser

# useradd USERNAME

定制用户属性:

-u UID,

-g GID, 有效范围已有的GID

-G GID, 有效范围为已有的GID;可以有多个,用逗号分隔;

-c COMMENT    注释信息

-d /path/to/somewhere    指定路径

-s /path/to/shell_command

-r: 创建系统用户, ID号范围为1-499之间的用户;系统用户的家目录不会被真正创建;

-M: 不为用户创建家目录;

-m: 必须为用户创建家目录;

转换用户:

su (switch user)

su USERNAME

su - USERNAME

管理员su到普通用户,不需要密码;反之,不可以

创建组:groupadd

groupadd GRPNAME

/etc/group:

组名:密码占位符:GID:以此组为额外组的用户列表,用户间用逗号分隔;

-g GID: 创建组的时候为其指定GID

-r: 创建系统组;

修改用户属性:

usermod:

-u UID

-g GID

-a -G GID: -G修改额外组时会覆盖原有的额外组,同时使用则能保留原有的额外组;

-c COMMENT     注释信息

-s /PATH/TO/SHELL

-l NEW_NAME: 改用户的登录名称;

-m -d /path/to/somewhere-d只修改家目录指向,同时使用-m选项则可实现将原来家目录移动为新的家目录;

密码管理:

passwd: 修改自己的密码;

passwd USERNAME: 修改指定用户的密码

-l: 锁定用户帐号

-u: 解锁

groupmod: 修改组属性

-g GID

-n NEW_NAME

useradd密钥属性的修改:

passwd

-e

-n: 密码最短使用天数;

-x:最长使用天数;

-w: 警告天数;

-i: 非活动时长;

chage

-d: 修改密码的最近一次修改时间

-m, --mindays MIN_DAYS:最短使用期限;

-M, --maxdays MAX_DAYS:最长使用期限;

-W, --warndays WARN_DAYS:警告天数;

-I, --inactive INACTIVE:非活动天数;

-E, --expiredate EXPIRE_DATE:过期时间;

usermod

-e YYYY-MM-DD: 指定帐号过期期限;

-i #: 非活动天数;

gpasswd: 为组设定密码;

newgrp GROUP: 临时设定指定的组为自己的基本组;

权限:

r: read,     文件可读

w: write,   文件可写

x: execute, 文件可发起为进程,目录表示可ls -l, cd

改变文件权限:属主 u       属组 g     其它 o     所有的a

chmodchange mode

权限定义方式:

1、同时修改三类用户的权限: 8进制数字方式

2、修改某一类或某些类用户的权限:u=,g=  

3、只操作某类用户的某位或某些位权限:u+xu-x

选项:

-R: 递归修改权限;

--refernce=/path/to/somefile FILE

修改文件的属主和属组:

chown [选项] 用户 文件

chgrp [选项] 组 文件

-R: 递归修改权限;

--refernce=/path/to/somefile FILE

chown 用户:组 文件

chown 用户.组 文件

删除用户:

userdel:

userdel [options] USERNAME

-r 不保留用户的家目录

删除组:

groupdel

groupdel GRPNAME

命令补齐:

Tab会搜索PATH环境变量所指定的路径下的所有可执行文件,如果“命令的部分字符”能惟一表示某命令,则直接补全为那个命令;

如果不能惟一表示,则再敲一次tab键,会显示所有以“命令的部分字符”开头的命令

七.基本正则表达式:

^:锚定行首的符合条件的内容,用法格式“^pattern”;

$: 锚定行尾的符合条件的内容,用法格式“pattern$”;

^pattern$:

^$: 空白行

.: 匹配任意单个字符

*:匹配紧挨在其前面的字符任意次;

.*: 匹配任意长度的任意字符

[]:匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

[:lower:]

[:upper:]

[:digit:]

[:alpha:]

[:alnum:]

[:space:]

[:punct:]

\?: 匹配紧挨在其前面的字符0次或1次;

\{m,n\}: 匹配其前面的字符至少m次,至多n次;

\{0,n\}: 至多n次;0-n次;

\{m,\}:至少m

\{m\}: 精确匹配m次;

\<: 锚定词首,用法格式:\<pattern

\>: 锚定词尾,用法格式:pattern\>

\<pattern\>:锚定单词

\(\): 分组,用法格式: \(pattern\)

ab任意字符abab.*ab

a.b任意字符a.b: \(a.b\).*\1

grep的选项:

--color=auto 有颜色显示

-v: 反向选取,只显示不符合模式的行;

-o: 只显示被模式匹配到的字串,而不是整个行;

-i: 不区分字符大小写;

-A #:显示匹配到的行时,顺带显示其后面的#个行;

-B #:前面的#行;

-C #:前后的#行;

-E: 使用扩展的正则表达式grep -E = egrep

扩展正则表达式: egrep

.: 任意单个字符

[]: 匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

*

+: 匹配其前面的字符至少1次;

?:

{m,n}: 至少m次,至多n次;

():分组,支持引用\1, \2;

a|b: 二选一;

\<:锚定词首

\>:锚定词尾

^  锚定行首的符合条件的内容

$  锚定行尾的符合条件的内容

    | :表示或者的意思

sort: 排序

-f: 忽略字符大小写;

-n: 以数值大小进行排序;

-r: 降序;

-u: 移除重复的行,具有相同内容的行只保留一个;

-R: 随机排序;

uniq:

-c:统计每行重复的次数;

-u:只显示没有重复的行

-d: 只显示重复过的行;

八.输出重定向:

>:覆盖重定向;

set -C: 避免覆盖已经存在的文件中的内容;

强制覆盖:>|

set +C: 关闭上述功能;

>>:追加重定向;

/dev/null: 数据黑洞,bit bucket

错误输出重定向:

2>: 覆盖重定向;

2>>: 追加重定向;

同时重定标准输出和错误输出:

例如:COMMAND > /path/to/stdout  2> /path/to/error

标准输出和错误输出定向至一个文件:

   COMMAND &> /path/to/somewhere

   COMMAND > /path/to/somewhere 2>&1

输入重定向:

<COMMAND < /from/somewhere

<<Here Document,此处创建文档

cat > /path/to/somefile << EOF

abc

hello

EOF

通常用于脚本中生成文档

cat << EOF

abc

hello

EOF

通常用于脚本中向用户输出大段信息;

管道:|

COMMAND1 | COMMAND2 | COMMAND3 | ...