学习终端命令的技巧:
- 不需要死记硬背, 对于常用命令, 记住语法是关键,在用的时候去查下参数选项,有的很常用的命令,用的多自然就记住了
- 不要尝试一次学会所有的命令, 有些命令是非常不常用的,临时遇到,就去根据语法找参数选项
用户管理
显示用户:
logname [选项]
--help 在线帮助。
--vesion 显示版本信息。
切换用户:
su 用户名
创建用户:
useradd [选项] 用户名
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
修改用户密码:
passwd [选项] 用户名
选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
修改用户名:
usermod [选项] 新用户名 旧用户名
选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
修改组群:
usermod -g 1002 [用户名]
删除用户名:
userdel [选项] 用户名
选项:
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件
增加用户组:
groupadd [选项] 用户组
选项:
-g GID指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
修改用户组:
groupmod [选项] 用户组
选项:
-g GID为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n 新用户组 将用户组的名字改为新名字
查询用户所属组:
groups 用户名
删除用户组:
groupdel 用户组
将用户添加到组:
gpasswd 是 Linux 下的管理工具,用于将一个用户添加到组或者从组中删除。
gpasswd [选项] 组名
选项:
-a:添加用户到组; gpassws -a 用户名 组名
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
查看用户组下所有用户:
grep 'group1' /etc/group
系统管理
date命令:
date 可以用来显示或设定系统的日期与时间
使用者权限:所有用户
date [参数选项]
参数
-d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u 显示GMT;
--help 在线帮助;
--version 显示版本信息
timedatectl命令:
用于控制系统时间和日期。可以用来查询和更改系统时钟于设定,同时可以设定和修改时区信息。
在实际开发过程中,系统时间的显示会和实际出现不同步;我们一般为了校正服务器时间、时区的时候会使用timedatectl命令。
使用者权限:所有使用者都可使用,设置时间需要管理员
timedatectl (status)
分别显示时区、CST时间和UTC时间,其中,RTC time就是硬件时钟的时间,硬件时间默认为UTC
查看所有可用的时区:
timedatectl list-timezones
设置本地时区:
timedatectl set-timezone "Asia/Shanghai"
禁用时间同步:
timedatectl set-ntp false
设置时间
timedatectl set-time "2019-03-11 20:45:00"
启用时间同步:
timedatectl set-ntp true
id命令:
id命令用于显示用户的ID,以及所属群组的ID。
id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
使用者权限:所有用户
id [选项] [用户名称]
选项:
-g或--group 显示用户所属群组的ID。
-G或--groups 显示用户所属附加群组的ID。
-n或--name 显示用户,所属群组或附加群组的名称。
-r或--real 显示实际ID。
-u或--user 显示用户ID。
--help 显示帮助。
--version 显示版本信息。
sudo命令:
sudo:控制用户对系统命令的使用权限,root允许的操作。
通过sudo可以提高普通用户的操作权限。
使用者权限:普通用户
sudo [选项]
选项:
-V 显示版本编号
-h 会显示版本编号及指令的使用方式说明
-l 显示出自己(执行 sudo 的使用者)的权限
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b 将要执行的指令放在背景执行
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 将环境变数中的 HOME 指定为要变更身份的使用者HOME目录(如不加 -u 参数就是系统管理者 root )
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
top命令:
用于实时显示 process 的动态。为了查看服务器上运行的程序占用的CPU情况以及占用内存情况,目的就是检测我们的程序是否在正常范围内运行。
top [选项]
选项:
-d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
-q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
-c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
-S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
-s : 安全模式,将交谈式指令取消, 避免潜在的危机
-i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
-n : 更新的次数,完成后将会退出 top
-b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
显示指定的进程信息,以下显示进程号为6972的进程信息,CPU、内存占用率:
top -p 6972
ps命令:
用于显示当前进程 (process) 的状态信息。
使用者权限:所有用户
显示当前正在运行的进程信息:ps
显示进程信息:ps -A
显示指定用户信息:ps -u 用户名
显示所有进程信息:ps -ef 或者 ps aux
kill命令:
用于删除执行中的程序或工作(可强制中断)。
使用者权限:所有用户
查看kill的选项:kill -l
杀死一个进程:kill 15642
强制杀死进程:kill -KILL 15642
彻底杀死进程:kill -9 15642
杀死指定用户所有进程:kill -9 $(ps -ef | grep [用户名])
kill -u [用户名]
关机命令:
shutdown命令用来进行关闭系统,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重启。
使用者权限:管理员用户
shutdown [选项] time message
选项:
-t seconds : 设定在几秒钟之后进行关机程序。
-k : 并不会真的关机,只是将警告讯息传送给所有使用者。
-r : 关机后重新开机。
-h : 关机后停机。
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机。
-c : 取消目前已经进行中的关机动作。
-f : 关机时,不做 fcsk 动作(检查 Linux 档系统)。
-F : 关机时,强迫进行 fsck 动作。
time : 设定关机的时间。
message : 传送给所有使用者的警告讯息。
立即关机:
shutdown -h now 或者 shudown
指定1分钟后关机,1分钟关机并显示警告信息:
shutdown +1 “System will shutdown after 1 minutes”
指定1分钟后重启,并发出警告信息
shutdown –r +1 “1分钟后关机重启”
重启命令:
reboot命令用于用来重新启动计算机。
使用者权限:管理员、普通(需要验证)用户
reboot [选项]
选项:
-n : 在重开机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
-f : 强迫重开机,不呼叫 shutdown 这个指令
-i : 在重开机之前先把所有网络相关的装置先停止
who命令:
用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等。
使用者权限:所有使用者都可使用
who [选项]
选项:
-H 或 --heading:显示各栏位的标题信息列;
-i 或 -u 或 --idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;
-m:此参数的效果和指定"am i"字符串相同;
-q 或--count:只显示登入系统的帐号名称和总人数;
-s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
-w 或-T或--mesg或--message或--writable:显示用户的信息状态栏;
--help:在线帮助;
--version:显示版本信息
显示明细(标题)信息:
who -H
clear命令:
用于清除屏幕。
使用者权限:所有使用者都可使用
clear
exit命令:
用于退出目前的shell。
执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。
exit [状态值]
状态值:
0表示成功(Zero - Success)
非0表示失败(Non-Zero - Failure)
2表示用法不当(Incorrect Usage)
127表示命令没有找到(Command Not Found)
126表示不是可执行的(Not an executable)
>=128 信号产生
目录管理
目录常用目录:
- ls: 列出目录
- pwd: 显示目前的目录
- cd: 切换目录
- mkdir:创建一个新的目录
- rmdir:删除一个空的目录
- rm: 移除文件或目录
- cp: 复制文件或目录
- mv: 移动文件与目录或修改文件与目录的名称
ls命令:
查看目录以及文件的明细。
ls [选项] 目录名称
选项:
-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
将根目录下的所有文件列出来(含属性与隐藏档):
ls -al ~
查看文件夹下文件的详细信息:
ls -l
从左到右 依次是:
权限(A区域), 第一个字符如果是 d 表示目录
硬链接数(B区域), 通俗的讲就是有多少种方式, 可以访问当前目录和文件
属主(C区域), 文件是所有者、或是叫做属主
属组(D区域), 文件属于哪个组
大小(E区域):文件大小
时间(F区域):最后一次访问时间
名称(G区域):文件的名称
总结:
ls 显示不隐藏的文件与文件夹
ls -l 显示不隐藏的文件与文件夹的详细信息
ls -al 显示所有文件与文件夹的详细信息
pwd命令:
pwd 是 Print Working Directory 的缩写,也就是显示目前所在当前目录的命令。
使用者权限:所有使用者都可使用
查看当前所在目录:pwd -P
cd命令:
cd [相对路径或绝对路径]
绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录
相对路径:
路径的写法,不是由 / 写起,例如:由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法
注意:
cd ~ 表示回到根(root)目录
'绝对路径':在输入路径时, 最前面是以 '/' 开始的, 表示从 '根目录' 开始的具体目录位置
'相对路径':在输入路径时, 最前面不是以 '/' 开始的 , 表示相对 '当前目录' 所在的目录位置
mkdir命令:
用于建立名称为 dirName 的子目录。
使用权限:于目前目录有适当权限的所有使用者
mkdir [选项] dirName
选项:
-p 确保目录名称存在,不存在的就建一个
在工作目录下的 aaa目录中,建立一个名为 bbb的子目录,若aaa目录原本不存在,则建立一个:
mkdir -p aaa/bbb
rmdir命令:
rmdir命令删除空的目录。
使用权限:于目前目录有适当权限的所有使用者
rmdir [选项] dirName
选项:
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
在工作目录下的aaa目录中,删除名为 bbb的子目录,若 bbb删除后,aaa目录成为空目录,则aaa同时也会被删除:
rmdir -p aaa/bbb
rm命令:
rm命令用于删除一个文件或者目录。
使用权限:于目前目录有适当权限的所有使用者
rm [options] name...
options:
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
注意:文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。
cp命令:
cp命令主要用于复制文件或目录。(Ctrl+C)
使用权限:于目前目录有适当权限的所有使用者
cp [options] source... directory
options:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r/R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
总结:
用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。
如果不加参数"-r"或者"-R",只复制文件,而略过目录。
mv命令:
mv 命令用来为文件或目录改名、或将文件或目录移入其它位置。(Ctrl+X)
mv [options] source... directory
options:
-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件
-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示
-n: 不覆盖已存在文件
注意:如果指定了-i、-f、-n 中的多个,仅最后一个生效。
chgrp命令:
chgrp命令用于变更文件或目录的所属群组。
文件或目录权限的拥有者由所属群组来管理。可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。
chgrp [选项] 用户组名 文件名
示例:
chgrp staff /u 将 /u 的属组更改为"staff"。
chgrp -hR staff /u 将 /u 及其子目录下所有文件的属组更改为"staff"。
chown命令:
Linux是多任务操作系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。
使用权限 : 管理员账户
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
将文件aaa的属主更改成root:
chown root aaa
注意:chown命令可以更改属主和属组
将aaa文件的拥有者与群组改回为lichee:
chown lichee:lichee aaa
示例:
chown root /u 将 /u 的属主更改为"root"。
chown :root /u 将 /u 的属组更改为"root"。
chown root:staff /u 和上面类似,但同时也将其属组更改为"staff"。
chown -hR root /u 将 /u 及其子目录下所有文件的属主更改为"root"。
chmod命令:
Linux的文件调用权限分为三级 : 文件属主、属组、其他。利用 chmod 可以控制文件如何被他人所调用。
Linux文件属性有两种设置方法,一种是数字,一种是符号。
使用权限 : 所有使用者
数字权限:
权限 | 英文 | 缩写 | 数字序号 |
---|---|---|---|
读 | read | r | 4 |
写 | write | w | 2 |
执行 | execute | x | 1 |
无权限 | - | 0 |
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= — = 0+0+0 = 0
格式:chmod [-R] xyz 文件或目录
示例:chmod -R 770 文件或目录
创建文件as.txt:
touch as.txt
将as.txt这个文件所有的权限都设定启用:
chmod -R 777 as.txt
符号权限:
我们可以使用 u(user 属主权限), g(group 属组权限), o(others 其他权限) 来代表三种身份的权限,此外,a 则代表 all,即全部的身份。
u | +(加入) | r |
---|---|---|
g | -(减去) | w |
o | =(设定) | x |
a |
示例:
将as.txt的权限设置为 -rwxr-xr-- :
chmod u=rwx,g=rx,o=r as.txt
将权限去掉,拿掉全部人的可读权限:
chmod a-r as.txt
文件管理
touch命令:
touch命令用于创建文件、修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
ls -l 可以显示档案的时间记录
使用者权限:所有权限用户
touch [选项] 文件或目录
选项:
-a 改变档案的读取时间记录。
-m 改变档案的修改时间记录。
-c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-r 使用参考档的时间记录,与 --file 的效果一样。
-d 设定时间与日期,可以使用各种不同的格式。
-t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。
创建空文件:
touch a.txt
创建批量空文件:
touch a{1..10}.txt
查看文件的详细信息:
stat a.txt
vi与vim命令:
vi是 visual interface
的简称, 是linux中最经典的文本编辑器。
vi的特点
- 只能是编辑 文本内容, 不能对字体、段落进行排版
- 不支持鼠标操作
- 没有菜单
- 只有命令
vim:是从 vi (系统内置命令)发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。
vim 则可以说是程序开发者的一项很好用的工具。
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后面插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
退出模式:
:q 当vim进入文件没有对文件内容做任何操作可以按"q"退出
:q! 当vim进入文件对文件内容有操作但不想保存退出
:wq 正常保存退出
:wq! 强行保存退出,只针对于root用户或文件所有人
文件查看:
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | cat 文件名 | concatenate | 查看小文件内容 |
02 | less -N 文件名 | less | 分频 显示大文件内容 |
03 | head -n 文件名 | 查看文件的前一部分 | |
04 | tail -n 文件名 | 查看文件的最后部分 | |
05 | grep 关键字 文件名 | grep | 根据关键词, 搜索文本文件内容 |
总结:
以上5个命令都可以查询文件的内容,他们的功能如下
通过 cat
会一次显示所有的内容, 适合 查看内容较少 的文本文件
less
命令适合查看 内容较多 的文本文件
通过 head
命令查看文档的前几行内容
通过 tail -10f 文件
命令 查看文档(日志)的后几行内容
通过 grep
命令 搜索存在 关键字 的行
cat命令:
cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名,如cat a.txt。
使用者权限:当前文件的权限用户
查看文件名为a.txt的内容(加入行号):
cat -n a.txt
查看所有用户:
cat /etc/passwd
查看密码:
cat /etc/shadow
查看组:
cat /etc/group
less命令:
less用于查看文件,但是less 在查看之前不会加载整个文件。
使用者权限:当前文件的权限用户
less [参数] 文件
查看命令历史使用记录并通过less分页显示:
history | less
1.全屏导航
- ctrl + F - 向前移动一屏
- ctrl + B - 向后移动一屏
- ctrl + D - 向前移动半屏
- ctrl + U - 向后移动半屏
2.单行导航
- j - 向前移动一行
- k - 向后移动一行
3.其它导航
- G - 移动到最后一行
- g - 移动到第一行
- q / ZZ - 退出 less 命令
tail命令:
tail 命令可用于查看文件的内容,有一个常用的参数 -f
常用于查阅正在改变的日志文件。
使用者权限:当前文件的权限用户
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
tail [参数] [文件]
显示 txtfile.txt 文件的最后 3 行:
tail -3 txtfile.txt
动态显示文档的最后内容,一般用来查看日志(Ctrl+C组合键停止显示):
tail -f txtfile.txt
动态显示最后4行,命令如下:
tail -4f txtfile.txt
显示文件txtfile.txt 的内容,从第 2 行至文件末尾:
tai -n+2 txtfile.txt
显示文件 txtfile.txt的最后 10 个字符:
tail -c 45 txtfile.txt
grep命令:
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
grep [选项] [范本样式] [文件或目录]
搜索存在关键字`aaa`的行的文件:
grep aaa a.txt
搜索存在关键字`aaa`的行且`显示行号`:
grep -n aaa a.txt
`忽略大小写`搜索存在关键字的行:
grep -i AAA a.txt
搜索`不存在关键字`的行:
grep -v 中国 a.txt
查找指定的进程信息(包含grep进程):
ps -ef | grep sshd
说明:除最后一条记录外,其他的都是查找出的进程;最后一条记录结果是grep进程本身,并非真正要找的进程
查找指定的进程信息(不包含grep进程):
ps aux | grep sshd | grep -v "grep"
查找进程个数(包含grep进程本身):
ps -ef | grep -c sshd
vim定位行:
vim 文件名 +行数
打开文件定位到第6行:
vim txtfile.txt +6
异常处理:
如果 vim异常退出,在磁盘上可能会保存有交换文件。
将后缀名为.swp的文件删除即可恢复:
rm -rf .txtfile.txt.swp
操作扩展
要熟练使用vi/vim
,首先应该学会怎么在命令模式下
快速移动光标
编辑操作命令 能够和移动命令一起使用
上 下 左 右
命令 | 功能 | 手指 |
---|---|---|
h | 向左 | 食指 |
j | 向下 | 食指 |
k | 向上 | 中指 |
l | 向右 | 无名指 |
也可以使用键盘上的上下左右箭头,这个更有方向感。
行内移动
命令 | 英文 | 功能 |
---|---|---|
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
0 | 行首 | |
^ | 行首, 第一个不是空白字符的位置 | |
$ | 行尾 |
行数移动
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件顶部 |
G | go | 文件末尾 |
数字gg | go | 移动到 数字 对应行数 |
数字G | go | 移动到 数字 对应行数 |
: 数字 | 移动到数字对应的 行数 |
屏幕移动
命令 | 英文 | 功能 |
---|---|---|
Ctrl + b | back | 向上翻页 |
Ctrl + f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | 屏幕底部 |
上一页和下一页:Shift + PageUp 和 Shift + PageDown
选中文本(可视模式)
命令 | 模式 | 功能 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视化模式 | 选中光标经过的完整行 |
Ctrl + v | 可视块模式 | 垂直方向选中文本 |
撤销和恢复撤销(保命指令)
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤销上次的命令(ctrl + z) |
Ctrl + r | uredo | 恢复撤销的命令 |
删除文本
命令 | 英文 | 功能 |
---|---|---|
x | cut | 删除光标所在的字符,或者选中的文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在行, 可以删除多行 |
D | delete | 删除至行尾 |
删除命令可以和移动命令连用, 以下是常见的组合命令(扩展):
命令 | 作用 |
---|---|
dw | 从光标位置删除到单词末尾 |
d} | 从光标位置删除到段落末尾 |
ndd | 从光标位置向下连续删除 n 行 |
复制和剪切
vi/vim 中提供有一个 被复制文本的缓冲区
- 复制 命令会将选中的文字保存在缓冲区
- 删除 命令删除的文字会被保存在缓冲区
- 在需要的位置, 使用 粘贴 命令可以将缓冲对的文字插入到光标所在的位置
命令 | 英文 | 功能 |
---|---|---|
yy | copy | 复制行 |
d(剪切命令) | delete | 剪切 |
dd(剪切) | delete | 剪切一行, 可以 ndd 剪切n行 |
p | paste | 粘贴 |
注意:vi中的文本缓冲区只有一个,如果后续做过 复制、剪切操作, 之前缓冲区中的内容会被替换。
vi中的 文本缓冲区 和 系统的 剪切板 不是同一个。所以在其他软件中使用 Ctrl + C
复制的内容, 不能再 vi
中通过 p
命令粘贴。
可以在 编辑模式 下使用 鼠标右键粘贴
替换
命令 | 英文 | 功能 | 工作模式 |
---|---|---|---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
R
命令可以进入 替换模式, 替换完成后, 按下ESC
, 按下ESC
可以回到 命令模式- 替换命令 的作用就是不用进入 编辑模式, 对文件进行 轻量级的修改
echo 命令:
使用者权限:所有用户
echo string
将字符串输出到控制台 , 通常和 重定向 联合使用
echo hello world
# 如果字符串有空格, 为了避免歧义 请增加 双引号 或者 单引号
echo "hello world"
重定向 >
(覆盖) 和 >>
(追加)
- 默认情况下 命令的结果 输出到 控制台
- 通过 重定向 可以将结果 输出到文件
命令 | 作用 |
---|---|
结果 > 文件名 | > 表示输出, 会覆盖文件的原有内容 |
将命令的成功结果`覆盖`指定文件内容:
echo 你好>a.txt
命令 | 作用 |
---|---|
命令 >> 文件名 | >> 表示追加, 会将内容追加到已有文件的末尾 |
将命令的成功结果`追加`指定文件的后面:
echo 世界 >> a.txt
命令 | 作用 |
---|---|
命令 &>> 文件 | &>> 表示不区分错误类型 都放到 日志中 |
将命令的失败结果`追加`指定文件的后面:
cat 不存在的目录 &>> error.log
总结
- 通过
命令 > 文件
将 命令的成功结果 覆盖 指定文件内容 - 通过
命令 >> 文件
将 命令的成功结果 追加 指定文件的后面 - 通过
命令 &>> 文件
将 命令的失败结果 追加 指定文件的后面
awk命令(了解):
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger 和 Brian Kernighan 的 Family Name 的首字符。
具体语法如下
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
1、数据准备:test.txt文本内容如下:
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46
2、搜索含有 zhang 和 li 的学生成绩:
cat test.txt | awk '/zhang|li/'
指定分割符, 根据下标显示内容
命令 | 含义 |
---|---|
awk -F ‘,’ ‘{print $1, $2, $3}’ 文件 | 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容 |
选项
选项 | 英文 | 含义 |
---|---|---|
-F ',' | field-separator | 使用 指定字符 分割 |
$ + 数字 | 获取第几段内容 | |
$0 | 获取 当前行 内容 | |
NF | field | 表示当前行共有多少个字段 |
$NF | 代表 最后一个字段 | |
$(NF-1) | 代表 倒数第二个字段 | |
NR | 代表 处理的是第几行 |
#查看文档内容
cat czbk-txt.txt
#直接输出
cat score.txt | awk -F ' ' '{print $1,$2,$3}'
指定分割符, 根据下标显示内容
命令 | 含义 |
---|---|
awk -F ’ ’ ‘{OFS="==="}{print $1, $2, $3}’ 1.txt | 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容 |
选项
选项 | 英文 | 含义 |
---|---|---|
OFS="字符" | output field separator | 向外输出时的段分割字符串 |
转义序列 | 含义 |
---|---|
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 制表符 |
# 按照 === 进行分割, 打印 第一段 第二段 第三段
cat czbk-txt.txt | awk -F ' ' '{OFS="==="}{print $1,$2,$3}'
# 按照 制表符tab 进行分割, 打印 第一段 第二段 第三段
cat czbk-txt.txt | awk -F ' ' '{OFS="\t"}{print $1,$2,$3}'
调用 awk 提供的函数
命令 | 含义 |
---|---|
awk -F ‘,’ ‘{print toupper($2)}’ 1.txt | 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容 |
常用函数如下:
函数名 | 含义 | 作用 |
---|---|---|
toupper() | upper | 字符 转成 大写 |
tolower() | lower | 字符 转成小写 |
length() | length | 返回 字符长度 |
# 打印第一段内容
cat czbk-txt.txt | awk -F ' ' '{print $1}'
# 将第一段内容转成大写 且 显示
cat czbk-txt.txt | awk -F ' ' '{print toupper($1)}'
求指定学科平均分
命令 | 含义 |
---|---|
awk ’BEGIN{初始化操作} {每行都执行} END{结束时操作}’ 文件名 | 固定语法 BEGIN{ 这里面放的是执行前的语句 } {这里面放的是处理每一行时要执行的语句} END {这里面放的是处理完所有的行后要执行的语句 } 文件名 |
查看test.txt 文件内容
cat czbk-txt.txt
查看总分
注意:这里计算的是第4列的总分
cat czbk-txt.txt| awk -F ' ' 'BEGIN{}{total=total+$4} END{print total}'
查看总分, 总人数
注意:这里计算的是第4列的
cat czbk-txt.txt| awk -F ' ' 'BEGIN{}{total=total+$4} END{print total, NR}'
查看总分, 总人数, 平均分
注意:这里计算的是第4列的
cat czbk-txt.txt | awk -F ' ' 'BEGIN{}{total=total+$4} END{print total, NR, (total/NR)}'
总结:
awk在使用过程中主要用作分析。
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
软连接:
软连接其实就类似于我们在Windows中的【快捷方式】
在Linux中 文件名 和 内容 是两个文件, 分开的。
因为某些文件和目录的 路径很深, 所以需要增加 软链接(快捷方式)。
使用者权限:所有用户
命令 | 英文 | 作用 |
---|---|---|
ln -s 目标文件绝对路径 快捷方式路径 | link | 给目标文件增加一个软链接, 通俗讲就是快捷方式 |
给home/aaa/bbb/ccc.txt文件增加软连接:
ln -s /home/aaa/bbb/ccc.txt ccctxt
find命令:
find命令类似与在Windows中全局查找。
find命令用来在指定目录下查找文件。
任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
find <指定目录> <指定条件> <指定内容>
将目前目录及其子目录下所有延伸档名是 gz 的文件查询出来:
(.表示当前文件夹下)
find . -name "*.gz"
将目前目录及其子目录下所有最近1天内更新过的文件查询出来:
find . -ctime -1
/代表是全盘搜索,也可以指定目录搜索:
find / -name 'aaa'
压缩
gzip命令:
压缩/解压缩文件,不能压缩目录。
.zip格式的文件在Windows和Linux下都能使用。
压缩文件,能节省磁盘空间,传输时能节省网络带宽。
gzip [参数] [文件或者目录]
压缩文件:
gizp a.txt
压缩当前目录下所有文件:
gzip *
解压文件并列出详细信息:
gzip -dv *
gunzip命令:
gunzip命令用于解压文件。
gunzip [参数] [文件或者目录]
gunzip a.gz
tar命令:
tar的主要功能是打包、压缩和解压文件。
tar本身不具有压缩功能。他是调用压缩功能实现的 。
使用者权限:所有用户
tar [必要参数] [选择参数] [文件]
参数:
-c 建立新的压缩文件
-v 显示指令执行过程
-f<备份文件> 指定压缩文件
-z 通过gzip指令处理压缩文件
-t 列出压缩文件中的内容
-x 表示解压
tar -cvf 打包文件名 文件名 打包文件并指定打包之后的文件名(仅打包不压缩)
tar -zcvf 压缩文件名 文件名/文件夹名 压缩文件或者文件夹并指定压缩文件名(打包压缩)
tar -ztvf 压缩文件名 查看压缩文件中有哪些文件
tar -zxvf 压缩文件名 解压
将 a.txt 文件打包(仅打包,不压缩):
tar -cvf a.tar a.txt
将 a.txt 文件打包压缩(打包压缩(gzip)):
tar -zcvf a.tar.gz a.txt
查看 tar 中有哪些文件:
tar -ztvf a.tar.gz
将 tar 包解压缩:
1.新建目录
mkdir Files
2.复制
cp a.tar.gz ./Files/
3.解压缩
tar -zxvf /home/lichee/Files/a.tar.gz
zip命令:
zip命令用于压缩文件。
zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。
使用者权限:所有用户
zip [必要参数] [选择参数] [文件]
参数:
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
压缩当前目录下所有文件和文件夹:
zip -q -r aaa.zip *
unzip命令:
Linux中unzip命令用于解压缩zip文件。
unzip为.zip压缩文件的解压缩程序。
使用者权限:所有用户
unzip [必要参数] [选择参数] [文件]
参数:
-l 显示压缩文件内所包含的文件。
-d<目录> 指定文件解压缩后所要存储的目录。
unzip -l 压缩文件名 查看这个压缩文件中有多少内容
unzip -d 指定文件夹 压缩文件 解压
查看压缩文件中包含的文件:
unzip -l aaa.zip
把文件解压到指定的目录下:
unzip -d ./Files aaa.zip
总结:
gz:由gzip压缩工具压缩的文件。
.tar:由tar打包程序打包的文件(tar没有压缩功能,只是把一个 目录合并成一个文件)
.tar.gz:可理解为先由tar打包,再由gz压缩。
.zip:可理解为由zip压缩工具直接压缩
网络与磁盘管理
ifconfig命令:
ifconfig是Linux中用于显示或配置网络设备的命令,英文全称是network interfaces configuring。
ifconfig命令用于显示或设置网络设备。
ifconfig可设置网络设备的状态,或是显示目前的设置。
使用者权限:所有(设置级别的需要管理员)用户
关闭网卡(需要切换到管理员账户):
ifconfig ens37 down
启用网卡(需要切换到管理员账户):
ifconfig ens37 up
// 配置ip地址
ifconfig ens37 192.168.23.199
// 配置ip地址和子网掩码
ifconfig ens37 192.168.23.133 netmask 255.255.255.0
ping命令:
ping命令用于检测主机。等价于Windows的ping命令。
执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
使用者权限:所有用户
ping [参数选项]
参数选项:
-c<完成次数> 设置完成要求回应的次数。
ping www.baidu.com 检测是否与百度连通
ping -c 2 www.baidu.com 指定接收包的次数
icmp_seq: ping序列,从1开始
ttl: IP生存时间值
time: 响应时间,数值越小,联通速度越快
netstat命令:
netstat命令用于显示网络状态。netstat指令可让得知整个Linux系统的网络情况。
使用者权限:所有用户
netstat [参数选项]
参数选项:
-a 显示所有连线中的Socket
-i 显示网卡列表
netstat -a 显示详细的连接状况
netstat -i 显示网卡列表
lsblk命令:
使用lsblk命令可以以tree的形式展示所有设备的信息。
lsblk命令的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。
使用者权限:所有用户
lsblk [参数选项]
参数选项:
-f 显示系统信息
NAME : 这是块设备名。
MAJ:MIN : 本栏显示主要和次要设备号。
RM : 本栏显示设备是否可移动设备。注意,在上面设备sr0的RM值等于1,这说明他们是可移动设备。
SIZE : 本栏列出设备的容量大小信息。
RO : 该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。
MOUNTPOINT : 本栏指出设备挂载的挂载点。
df命令:
df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。
使用者权限:所有用户
df [参数选项]
参数选项:
--total 显示所有的信息
-h, 换算成KB,MB,GB等形式进行展示(方便阅读)
df 显示整个硬盘使用情况
df 文件夹 显示文件夹使用情况
df -total 显示所有的信息
df -h 将结果变成KB,MB,GB形式展示,利于阅读
mount命令:
在Linux当中所有的存储设备如u盘、光盘、硬盘等,都必须挂载之后才能正常使用。
mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件。
使用者权限:所有用户,设置级别的需要管理员
mount [参数选项] 目录
注意:“挂载点”的目录需要以下几个要求:
目录事先存在,可以用mkdir命令新建目录;
挂载点目录不可被其他进程使用到;
挂载点下原有文件将被隐藏。
mkdir 文件夹 创建文件夹(也是创建一个挂载点)
mount -t auto /dev/cdrom 文件夹 开始挂载
umount 文件夹 卸载
创建挂载点:
mkdir -p aaa
开始挂载:
mount -t auto /dev/cdrom aaa
查看挂载点内容:
ls -l -a ./aaa
卸载cdrom:
umount ./aaa
软件安装
yum使用:
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
注意:必须联网
使用者权限:管理员
yum常用命令:
- 1.列出所有可更新的软件清单命令:yum check-update
- 2.更新所有软件命令:yum update
- 3.仅安装指定的软件命令:yum install <package_name>
- 4.仅更新指定的软件命令:yum update <package_name>
- 5.列出所有可安裝的软件清单命令:yum list
- 6.删除软件包命令:yum remove <package_name>
- 7.查找软件包 命令:yum search
- 8.清除缓存命令:
- yum clean packages: 清除缓存目录下的软件包
- yum clean headers: 清除缓存目录下的 headers
- yum clean oldheaders: 清除缓存目录下旧的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
安装tree:
yum -y install tree 安装tree
tree 执行tree,展示当前目录结构
yum remove tree 移除tree
yum查找:
找出以 tom 为开头的软件:
yum list tom*
yum源:
yum -y install wget 安装下载工具wget
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.back
备份/etc/yum.repos.d/CentOS-Base.repo文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
下载阿里云的Centos-7.repo文件
cat CentOS-Base.repo 查看下载的阿里云的Centos-6.repo文件
yum clean all 清理之前的缓存,并重新加载yum
yum makecache 建立一个缓存文件
yum search tomcat 查找软件,验证阿里云的yum源是否可以正常使用
rpm使用:
rpm(redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
rpm 只能安装已经下载到本地机器上的rpm 包。
yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是rpm 工具所不具备的。
补充命令:
比较两个文件:diff 文件名1 文件名2
比较其中两个文件,将其比较结果存放到第五个文件
diff file1 file2>file5
定时任务:
at 时间
at>命令
ctrl+D
at 时间 <<<“mkdir /home/www/my123”
at now+5 weeks<<EOF
rm -rf /home/www/mydoc
EOF
at -l 查看未执行任务
at -c 【编号】打印任务的内容
at -d 【编号】删除定时任务
crontab -e 编辑 保存退出:wq
关闭at服务:systemctl stop atd.service
启动at服务:systemctl start atd.service
root下查询周期任务日志:tail -f /var/log/cron
显示所有分区信息:fdisk -l
创建分区:fdisk /dev/[sdb/hdb] (b指第一个IDE硬盘分区)
格式化:mkfs -t [缺省为ext2/ext3/xfs] /dev/sdb1
手动挂载命令格式为:
mount [options] devicename mountpoint
卸载命令格式为:
umount [options] mountpoint devicename
自动挂载(系统启动时挂载,关闭时卸载):
使用vi /etc/fstab文件:
/dev/sdb1 /mnt/mysdb1 ext3 defaults 0 0
/dev/sdb2 /mnt/mysdb2 vfat defaults 0 0
显示系统文件类型:blkid /dev/[sdb1]
挂载点创建:mkdir /mnt/[mysdb1]
挂载:mount /dev/sdb1 /mnt/mysdb1
卸载:umount /mnt/mysdb1 /dev/sdb1
查看已经挂载的磁盘:df -T
查看内核是否支持磁盘配额:[root@localhost boot]# cat config-3.10.0-327.el7.x86_64 |grep CONFIG_QUOTA
查看是否安装磁盘配额工具:rpm -qa|grep quota
装载磁盘配额工具:yum install quota
启动磁盘配额:quotaon -avug
查看用户和组配额:repquota -avug
查询如何使用命令:man [命令]
查看文件的来源:yum provides 命令文件
显示yum仓库:显示所有仓库:yum repolist all
显示可用的仓库:yum repolist enabled
显示不可用的仓库:yum repolist disabled
网卡配置:vi /etc/sysconfig/network-scripts/ifcfg-ens-33
重启网卡:service network restart 或 systemctl restart network
systemctl status firewalld 查看当前防火墙状态
systemctl stop firewalld 关闭当前防火墙。
systemctl disable firewalld 开机防火墙不启动。