首页 > 代码库 > Linux课程第二天学习笔记
Linux课程第二天学习笔记
5)vim 文本方式编辑文件
vim [filename] ##进入到命令模式
命令模式不能编辑文件,如果要编辑文件要进入插入模式
按"i"进入插入模式
如果完成编辑,按“Esc”退出插入模式,输入":wq",保存退出
vim [filename] 如果文件名字不存在,会自动创建
vim 没有操作对象直接打开,编辑文件后要输入":wq [filename]"
":q!"表示不保存,强制退出
":wq!"表示强制保存并退出
####################
以下为自己总结,不一定正确:
"i"表示进入插入模式
"a"表示向右移动一个字符,并且进入插入模式
"s"表示删除当前字符,并且进入插入模式
"S"表示删除整行字符,并且进入插入模式
"cc"表示删除整行字符,并且进入插入模式
"C"表示从光标处删除到行尾,并且进入插入模式
"o"表示向下插入一行,并且进入插入模式
"X"表示向左删除一个字符
"x"表示向右删除一个字符,如果后面没有字符,则向左删除一个字符
"D"表示从光标处删除到行尾,如果后面没有字符,则向左删除一个字符
"dd"表示删除整行
"p"撤销上一次删除
"u"撤销
"R"替换
"J"把行末回车变成空格
"h"表示以字符为单位向左移动
"l"表示以字符为单位向右移动
"b"表示以单词为单位向左移动,光标停留在下一个单词的第一个字符上
"B"表示以单词为单位向左移动,光标停留在下一个单词的第一个字符上
"e"表示以单词为单位向右移动,光标停留在下一个单词的最后一个字符上
"w"表示以单词为单位向右移动,光标停留在下一个单词的第一个字符上
"k"表示跳转到上一行相同的位置
"j"表示跳转到下一行相同的位置
"gg"表示跳转到起始第一个有效字符上
"H"表示跳转到起始第一个有效字符上
"G"表示跳转到末尾
"L"表示跳转到最后一行行首
"K"表示man [当前字符]
"ZZ"保存退出
####################
6)cd 切换工作目录
cd [directory] ##切换工作目录到指定目录
cd - ##切换工作目录到之前所在目录
cd ~ ##切换到自己的家目录
cd ~usernmae ##切换到指定用户家目录
cd .. ##进入到当前目录的上级目录
7)ls 列出目录或文件信息
ls ##如果后面没有目标那么默认目标为当前目录
ls direcory|filename ##列出文件或目录内容
ls -d direcotry ##列出目录本身
ls -l filename|dorectory ##列出文件或目录里面内容的属性
ls -ld directory ##列出目录本身属性
ls -a ##显示目录中的所有内容,包括以"."开头的隐藏文件
ls -R ##第归显示目录中的内容
####################
例如:
[root@foundation50 Desktop]# mkdir -p 111/222/
[root@foundation50 Desktop]# touch 111/222/333
[root@foundation50 Desktop]# touch 111/222/.444
[root@foundation50 Desktop]# ls -a 111
. .. 222 ##"."表示当前目录,".."表示当前目录上一级
[root@foundation50 Desktop]# ls -a 111/222
. .. 333 .444
[root@foundation50 Desktop]# ls -aR 111
111:
. .. 222
111/222:
. .. 333 .444
"ll" = "ls -l"
l. ##显示当前目录下所有隐藏文件
"l." = "ls -d .*"
例如:
[root@foundation50 Desktop]# cd 111/222
[root@foundation50 222]# l.
. .. .444
[root@foundation50 222]# ls -d .*
. .. .444
####################
8)cp 文件复制
cp是新建文件的过程
cp file file1 file2 ... directory ##把file file1 file2 复制到 directory中
cp file test ##建立test文件模板为file
cp -r directory direcotry1 ##复制目录
####################
[root@foundation50 Desktop]# touch file1
[root@foundation50 Desktop]# touch file2
[root@foundation50 Desktop]# mkdir 111/
[root@foundation50 Desktop]# mkdir 222/
[root@foundation50 Desktop]# cp file1 file2 111/ ##将法文件file1和文件file2复制到目录111中
[root@foundation50 Desktop]# vim file1 ##输入一串字符,保存退出
[root@foundation50 Desktop]# cp file1 file2 ##将文件file1中的内容复制到文件file2
cp: overwrite ‘file2’? y ##是否覆盖?YES
[root@foundation50 Desktop]# cp file1 test ##创建文件test,并复制文件file1中的内容
[root@foundation50 Desktop]# cp -r 111/ 222/ ##将目录111整个复制进目录222中,即222/111/[file1,file2]
[root@foundation50 Desktop]# cp -r 111/ 333/ ##创建目录333,并将目录111的文件复制进来,即333/[file1,file2]
####################
9)mv 移动或重命名
相同磁盘的mv是重命名,不同磁盘的mv是复制删除的过程
mv file file1 direcotry ##移动file和file1到directory中
mv 存在文件 不存在文件 ##重命名文件
mv westos/linux . ##把westos中的linux移动到当前目录 .代表当前目录
####################
[root@foundation50 Desktop]# touch 111
[root@foundation50 Desktop]# touch 222
[root@foundation50 Desktop]# mkdir 123/
[root@foundation50 Desktop]# mv 111 222 123/ ##将文件111和文件222移至目录123中
[root@foundation50 Desktop]# mv 123/111 123/222 . ##将目录123中的文件111和文件222移至当前目录
[root@foundation50 Desktop]# mv 111 333 ##将文件111重命名为文件333
####################
####################4.正则表达式####################
* ##匹配0到任意字符
? ##匹配单个字符
[[:alpha:]] ##匹配单个字母
[[:lower:]] ##匹配单个小写字母
[[:upper:]] ##匹配单个大写字母
[[:digit:]] ##匹配单个数字
[[:alnum:]] ##匹配单个数字或字母
[[:punct:]] ##匹配单个符号
[[:space:]] ##匹配单个空格
{}表示不存在的或者存在的
{1..9} ##1-9
{a..f} ##a-f
{1,3,5} ##135
{a,c,e} ##a c e
{1..3}{a..c} ##1a 2a 3a 2a 2b 2c 3a 3b 3c
[]表示存在的
[a-C] ##a或者A或者b或者B或者c或者C
[a-c] ##a或者A或者b或者B或者c
[abc] ##a或者b或者c
[1-3] ##1或者2或者3
[145] ##1或者4或者5
[^abc]|[!abc] ##除了a并且除了b并且除了c
~ ##当前用户家目录
~username ##指定的用户家目录
~+ ##当前目录
~- ##当前目录之前所在目录
. ##当前目录
.. ##当前目录的上一级
####################
{}既能创建又能删除
[]只能删除
touch fi" "le ##表示创建了一个名为"fi le"的文件
"cd ~-"等同于"cd -"
####################
######################
###### 第三单元 ######
######################
####################1. man####################
man ->>manual ##man是手册的缩写
man man ##查看man命令的帮助
man passwd ##查看passwd命令的帮助
man的级别
1 系统命令
2 系统接口
3 函数库
4 特殊文件,比如设备文件
5 文件
6 游戏
7 系统的软件包
8 系统管理命令
9 内核
man 5 passwd ##查看/etc/passwd文件的帮助
man 1 passwd ##查看passwd命令的帮助,1可以省略
man页面的快捷方式
上下键 ##向上或向下一行
pageup|pagedown ##向下一个屏幕或者向上一个屏幕
d|u ##向下或者向上半个屏幕
G|gg ##跳转页面到man最下面或最上面
/关键字 ##搜索关键字,关键字会高亮显示,n向下匹配,N向上
q ##退出帮助页面
####################
"passwd --help" = "/bin/passwd --help"
ll file ##查看文件的Modification time
[root@foundation50 Desktop]# touch file
[root@foundation50 Desktop]# touch -a file
[root@foundation50 Desktop]# stat file
File: ‘file’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 404876853 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-09-29 16:51:50.418866685 +0800
Modify: 2016-09-29 16:50:25.102868288 +0800
Change: 2016-09-29 16:51:50.418866685 +0800
Birth: -
[root@foundation50 Desktop]# ll file
-rw-r--r--. 1 root root 0 Sep 29 16:50 file
需求:让student用户在下次登陆时,强制更改密码
[root@localhost Desktop]# man 5 shadow
输入“/log”进行查找,找到需要的内容如下:
date of last password change ##文中第三个字段
......
The value 0 has a special meaning, which is that the user should
change her pasword the next time she will log in the system.
......
按“q”退出
[root@localhost Desktop]# vim /etc/shadow
kiosk:[太长省略]:16261:0:99999:7::: ##找到第三个字段"16261",将其修改为"0"
按“Esc”,输入“:wq!”
使用student用户重新登陆,发现验证成功后,被强制要求更换密码
####################
######################
###### 第四单元 ######
######################
####################1.管理输入输出####################
在linux系统中,正确输出的编号为1,错误输出编号为2
在系统中使用普通用户"student"执行以下命令:
find /etc -name passwd
因为"student"用户权限问题会有以下输出:
find: ‘/etc/pki/CA/private’: Permission denied ##权力受限,报错
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/audit’: Permission denied
/etc/passwd ##正确输出
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/selinux/targeted/modules/active’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/grub.d’: Permission denied
/etc/pam.d/passwd ##正确输出
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/named’: Permission denied
find /etc -name passwd > file ##重定向正确输出
find /etc -name passwd 2> file ##重定向错误输出
find /etc -name passwd &> file ##重定向所有输出
注意: >, 2> ,&> 都会覆盖源文件内容
>file ##清空file
find /etc -name passwd >> file ##追加正确输出
find /etc -name passwd 2>> file ##追加错误输出
find /etc -name passwd &>> file ##追加所有输出
注意:>>, 2>>, &>> 不会覆盖源文件内容,会把相应的输出字符方到文件的最后
"|" 管道符,管道符的作用是将管道前命令的输出变成管道后命令的输入
ls /bin|wc -l ##统计ls /bin 命令输出的行数
系统中错误的输出是无法通过管道符的。
用"2>&1"可以把错误的输出编号由2变成1
tee 复制输出到指定位置
date|tee file|wc -l ##tee命令将date命令的输出复制到file中,并统计输出行数
####################
输入的命令先到Memory,Memory再给到CPU,CPU将结果反馈给"/dev/pts/0",即终端的输出界面
"/dev/pts/0"默认用来保存终端输出,"0"指第一个终端,"1"指第二个终端,依次类推
date >/dev/pts/0 ##将date命令的输出复制到"/dev/pts/0"当中,即将输出显示在第一个终端的输出界面
[root@foundation50 Desktop]# >file ##清空file。如果file不存在,则创建file,内容为空
[root@foundation50 Desktop]# wc file ##统计file容量信息,什么都没有
0 0 0 file
[root@foundation50 Desktop]# echo >file ##输出一个空格到file
[root@foundation50 Desktop]# wc file ##统计file容量信息,1行0字1字节
1 0 1 file
[root@foundation50 Desktop]# echo 123 >file ##输出"123"到file
[root@foundation50 Desktop]# wc file ##统计file容量信息,1行1字4字节
1 1 4 file
[root@foundation50 Desktop]# cat file
123
注意:echo相当于c语言中printf
printf()是c语言中产生格式化输出的函数, 一般用于向标准输出设备按规定格式输出信息。
"cat -n"对所有输出的行数从1开始编号
"cat -b"和"cat -n"相似,区别是对空白行不进行编号
[kiosk@foundation50 ~]$ find /etc/ -name passwd | cat -b
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/selinux/targeted/modules/active’: Permission denied
find: ‘/etc/audit’: Permission denied
1 /etc/passwd ##发现仅对正确的输出进行了编号
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
2 /etc/pam.d/passwd
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
[kiosk@foundation50 ~]$ find /etc/ -name passwd 2>&1 | cat -b
1 find: ‘/etc/pki/CA/private’: Permission denied
2 find: ‘/etc/pki/rsyslog’: Permission denied
3 find: ‘/etc/dhcp’: Permission denied
4 find: ‘/etc/lvm/archive’: Permission denied
5 find: ‘/etc/lvm/backup’: Permission denied
6 find: ‘/etc/lvm/cache’: Permission denied
7 find: ‘/etc/selinux/targeted/modules/active’: Permission denied
8 /etc/passwd
9 find: ‘/etc/audit’: Permission denied
10 /etc/pam.d/passwd
11 find: ‘/etc/polkit-1/rules.d’: Permission denied
12 find: ‘/etc/polkit-1/localauthority’: Permission denied
13 find: ‘/etc/firewalld’: Permission denied
14 find: ‘/etc/grub.d’: Permission denied
15 find: ‘/etc/ipsec.d’: Permission denied
16 find: ‘/etc/audisp’: Permission denied
17 find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
18 find: ‘/etc/libvirt’: Permission denied
19 find: ‘/etc/cups/ssl’: Permission denied
20 find: ‘/etc/sudoers.d’: Permission denied ##对所有输出都进行了编号
注意:"2>&1"只有在有"|"的时候才起作用
例如:
[kiosk@foundation50 ~]$ find /etc/ -name passwd 2>&1 >file
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/selinux/targeted/modules/active’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
[kiosk@foundation50 ~]$ cat file
/etc/passwd
/etc/pam.d/passwd ##发现只有正确的输出重定向到了file,即"2>&1"没有生效
[root@foundation50 Desktop]# date | tee file ##将date命令的输出复制到file中,并在输出界面显示
Fri Sep 30 14:47:49 CST 2016
[root@foundation50 Desktop]# cat file
Fri Sep 30 14:47:49 CST 2016
[root@foundation50 Desktop]# date | tee file | wc -l
1
[root@foundation50 Desktop]# cat file
Fri Sep 30 14:48:18 CST 2016
[root@foundation50 Desktop]# date | tee /dev/pts/0 | wc -l
Fri Sep 30 14:54:07 CST 2016
1
####################
本文出自 “施超Linux学习笔记” 博客,谢绝转载!
Linux课程第二天学习笔记