1.命令替换
把命令中某个子命令替换为其执行结果
$()
echo "The current directory is $(pwd)."
touch ./file$(date +%H-%M-%S).txt
``
echo "The current directory is `pwd`"
echo 'The current directory is `pwd`'
bash支持的引号
`` 反引号,命令替换
"" 双引号,可以实现变量替换
'' 强引用,不完成变量替换
2.vim 文本编辑器 非常重要
vi 文本编辑 vim 交互式
命令模式 执行操作命令
插入模式 输入内容
末行模式 做一些操作 保存退出 导入文本
命令模式
删除:
d 进入删除状态
d 删除当前行
$ 删除光标所在字符到行尾,包含光所在字符
^ 删除光标所在字符到行首,不包含光标所在字符
gg 删除光标所在行到文档首部
G 删除光标所在行到文档尾部
w 删除光标所在字符往后一个单词,,而是同类字符
x 在命令行按字符进行往右删除
s 删除光标所在处的字符并进入插入模式
r 替换光标所在处的字符
光标的跳转:
$ 跳转到行尾
^ 跳转到行首
gg 跳转到文档首行行首
G 跳转到文档末行行首
line_num G 跳转到 line_num 数字行号的行首
w 按单词往右跳转
h 光标往左移动
j 光标往下移动
k 光标往上移动
l 光标往右移动
其他指令:
u 撤销之前的操作 1 2 3 3 2 1
Ctrl + r 重做 1 2 3 3 2 2 3
line_count yy 复制光标所在行之后的 line_count 数量的行
yy 表示复制当前行
p 表示粘贴复制的行
line_count cc 剪切光标所在行之后的 line_count 数量的行
cc 表示剪切当前行 直接进入插入模式
p 表示粘贴剪切的行
末行模式:
:w
:q
:wq
:w filename
:q! 强制退出不保存
:set nu 显示行号
:set nonu 取消显示行号
:r /dir1/dir2/filename 表示读取指定文件的内容到当前文件
:line_num 表示直接跳转到指定行行首
查找替换
:%s/被替换内容/替换后的内容 表示查找当前文件中所有的 被替换内容 替换成 替换后的内容,但是每行匹配到的只替换第一个匹配到的
:%s/被替换内容/替换后的内容/g 表示替换所有被匹配到的关键字 g 表示全局
:%s/被替换的关键字//g 表示删除匹配到的所有关键字
查找字符串:
/关键字 表示在文档中查找关键字
n 在所有匹配到的关键字之间往后循环切换
N 在所有匹配到的关键字之间往前循环切换
?关键字 表示在文档中查找关键字
n 在所有匹配到的关键字之间往前循环切换
N 在所有匹配到的关键字之间往后循环切换
3.文本排序
sort 默认根据字符在ASCII码中的升序排序
-n 按数值排序
-r reverse,逆序排
-t 指定字段分隔符
-k key,指定字段进行排序
-u unique,去重
-f 排序时忽略字符大小写
uniq 等同于sort -u,报告重复的行,注意,重复的行必须相邻
-d 只显示重复的行
-D 显示所有重复的行
-c 显示重复行重复的次数
4.文本统计
wc word count,显示顺序为 行-单词数-字节数
-w 单词
-c 字节
-l(小写字母l) 行
-m 字符
-L 最长的一行有多少宽度
date 输出和更改日期时间
更改日期的格式 月日时分年.秒 ntp 时间同步
date -s //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20160813 //设置成20160813,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s “01:01:01 2016-08-13″ //这样可以设置全部时间
date -s “01:01:01 20160813″ //这样可以设置全部时间
date -s “2016-08-13 01:01:01″ //这样可以设置全部时间
date -s “20160813 01:01:01″ //这样可以设置全部时间
clock 查看时间 硬件
hwclock 查看硬件时间
-r or hwclock --show
-w or hwclock --systohc
-s or hwclock --hctosys
cal 查看日历,如果只有一个参数则表示年份,如果有两个则表示月份,年份
cal [参数]
-1 显示一个月的月历
-3 显示系统前一个月,当前月,下一个月的月历
-s 显示星期天为一个星期的第一天,默认的格式
-m 显示星期一为一个星期的第一天
-j 显示在当前年份中的第几天
-y 显示当前年份的日历
5.用户和组 创建、删除和修改
创建用户
useradd userName 表示创建 userName 为名称的用户
id userName 表示查看 userName 名称的用户是否存在
如果存在,则默认显示用户的相关信息 ,,
uid 表示的是用户的数字编号
gid 用户组的数字编号。 g
roups 表示该用户属于哪个用户组
passwd 修改用户密码
如果是root用户执行该操作,则:
如果passwd 指令后 带参数 用户名 ,则直接修改指定用户名的密码
如果没有带参数,,则 修改root用户的密码
其他用户:则只能修改自己的密码,且不能指定用户
root用户在修改密码时,默认可以修改成任何密码
如果是其他用户,则密码必须符合密码复杂型规则要求
root用户修改任何用户的密码,都不需要原密码。
su 用来切换用户 su switch user
如果需要切换用户环境则使用su - username,如果不需要切换用户环境,则直接用su切换即可
root用户切换任何用户都不需要密码,其他任何用户切换任何用户都需要切换到的用户的密码
exit 切换到某个用户之后,用完以后,退出该用户
创建用户组
groupadd groupname 创建 groupname用户组
创建用户时,如果没有指定让用户所属哪个组,那么会自动创建一个与用户名相同的组。
如果指定让用户所属哪个组,则使用 -g 选项 ,选项后 跟上 组名,而且组名必须存在
etc下的几个主要文件
[root@localhost ~]# ll /etc/passwd
-rw-r--r--. 1 root root 2632 Jan 16 15:15 /etc/passwd
[root@localhost ~]# ll /etc/group
-rw-r--r--. 1 root root 1012 Jan 16 15:11 /etc/group
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1395 Jan 16 15:15 /etc/shadow
[root@localhost ~]# ll /etc/gshadow
----------. 1 root root 814 Jan 16 15:11 /etc/gshadow
/etc/passwd
haha:x :1001:1001::/home/lala:/bin/bash
lala: 用户名
x: 密码占位符
1001: 该用户的uid
1001: 该用户所属组的gid
: 昵称或描述
/home/haha: 用户的家目录
/bin/bash: 用户的shell
什么是shell? 中间 shell 多个shell
系统默认是/bin/bash
/sbin/nologin 不允许登录
/etc/group
weijianglong:x :1002:
weijianglong: 组名称
x: 密码占位符
1002: 组的gid
: 该组作为附加组的用户
附加组: 用户除了基本组之外的其他的所属组。
基本组: 当用户在创建时自动创建的和用户名一样的组,当创建用户时指定-g 的组为 基本组
/etc/shadow
redhat: 用户名
$6 加密算法
$NQb.pJ6PUCD0Bo90
$IIMJUCKuizRT4RPBbZBv66hIUaeE2ZDfZ/u0ixu14xKmX19WUk1EBdyx8/8oPBchfxHaJ8LE/qU7BQ9LBG0Lj0: 密文
19008: 自动1970年1月1日开始到上一次修改密码的时间所经历的天数
0: 密码最短使用期限 为0表示不限制
99999: 密码最长使用期限 密码使用多长时间之后必须要改密码,99999表示可不更改 100*365=36500
7: 密码过期警告时间 密码过期前多少天进行警告,提示用户改密码,但是不锁定用户
:密码过期宽限期限 密码过期后必须改密码的时间,如果还没改,锁定用户,就只能找网管了
: 账号过期精确时间 如果为99999,意味着永不过期
: 保留字段
/etc/gshadow
zhangsan: 组名称
6
6
6fXxkaFG/e$wFrtezmR.cPVQ3mnWBwnErUQNSotaeeldDbcYiX0uhzsvzGtouhDCB2xUHa3vOueS1011KGmDm6z7.wvX2qiI/ 密文
:
:
/etc/login.defs 创建用户时使用的一些配置信息。
/etc/skel 有默认四个隐藏文件,该隐藏文件会在创建用户时,自动复制到用户所在的家目录
当创建一个用户时,做了些什么:
1、/etc/passwd
2、/etc/shadow
3、/etc/group
4、/etc/gshadow
5、/home/
6、/var/spool/mail
6.实验:创建用户(weijianglong)的步骤:
[root@localhost ~]# vim /etc/passwd
[root@localhost ~]# id weijianglong
[root@localhost ~]# vim /etc/group
[root@localhost ~]# id weijianglong
[root@localhost ~]# cd /home
[root@localhost home]# mkdir weijianglong
[root@localhost home]# chown 1002:1002 weijianglong
[root@localhost spool]# cd mail/
[root@localhost mail]# touch weijianglong
[root@localhost mail]# chown weijianglong:mail weijianglong
[root@localhost mail]# cd
[root@localhost ~]# cd /home/weijianglong/
[root@localhost weijianglong]# cp /etc/skel/.bash* .
[root@localhost weijianglong]# cp -r /etc/skel/.mozilla/ .
已经好了,查看一下
[root@localhost weijianglong]# cd
[root@localhost ~]# su - weijianglong
[weijianglong@localhost ~]$ id
[weijianglong@localhost ~]$ id weijianglong
Exit
[root@localhost ~]# history 查看所有敲的命令
1 vim /etc/passwd
2 id weijianglong
3 vim /etc/group
4 id weijianglong
5 cd /home
6 ll
7 mkdir weijianglong
8 ll
9 chown 1002:1002 weijianglong
10 ll
11 cd /var/spool/
12 ll
13 cd mail/
14 ll
15 mkdir weijianglong
16 ll
17 rm -rf weijianglong/
18 touch weijiannglong
19 ll
20 chown weijianglong:mail weijianglong
21 rm -rf weijiannglong
22 touch weijianglong
23 chown weijianglong:mail weijianglong
24 ll
25 cd
26 cd /home/weijianglong/
27 cp /etc/skel/.bash* .
28 ls -A
29 cp -r /etc/skel/.mozilla/ .
30 ls -A
31 ls -lA
32 cd
33 su - weijianglong
34 history
中间的命令仅供参考!!!