继续整理周末课程的Linux学习笔记。

vim编辑器

最受欢迎的是emacs,vim是vi的增强版本,特点是编辑内容时有颜色变化。命令:vim /etc/passwd

三种模式:
1. 普通模式-->可视模式
2. 编辑模式
  2.1 插入模式:按i即可进入编辑,在光标前开始插入,esc退出
  2.2 替换模式:
3. 命令行模式

   定位移动:
j:下
K:上
l:右
h:左
^:行首
0:行尾
H:页首
M:页中
L:页尾
gg:篇首
GG:篇尾
w:跳到下一单词(按特殊字符匹配)
b:上一单词(按特殊字符匹配)
W:跳到一单词(按空格匹配)
B:下一单词(按空格匹配)
e:下一单词尾
E:句尾
f+字母:向后查找
F+字母:向前查找
t:字符前一位---?
T:字符后一位---?
zt:将本行提屏首
zb:将本行提屏尾
zz:将本行提中间

按v进入可视模式,然后jklh选中某段或某行,然后zf创建折行,zc折叠,zo打开。

%跳到对应括号位置。

ctrl+u:向上移半屏
ctrl+f:向下移整屏
ctrl+b:向上整屏
ctrl+d:向下半屏
ctrl+o:跳到上次光标位置
ctrl+i:跳回
ctrl+":两次光标间切换

m+字母:创建标记
"+字母:返回创建的标记位置

 

简单搜索:/ -->输入命令,查到结果后
n:下一个单词
N:上一个单词


:noh  不高亮
支持正则表达式,如:ab..(通配符)以ab开头,*代表所有
/\<yum:以yum开头的单词
/\<yum\>:完全跟yum匹配的单词
/\>ed:以ed结尾


操作命令:
x:删除当前字符
u:还原删除
ctrl+r:重做上次操作
r:按一下,再输,可更换当前字符
R:进入替换模式
dw:删除下一个字符
d0:当前光标前面的全部删除
d^:删除到本行首
dd:删一行
D/d$:删除光标本行后面
cw和dw一样删除一单词,并进入插入模式 
y:复制(v然后jklh选定)
yy:复制一行
p:粘贴到当前光标之后
P:粘贴到当前光标之前
i:当前光标前开始编辑
I:当前光标行首开始编辑
a:当前光标后开始编辑
A:当前光标行尾开始编辑
.:重复上次命令操作,如79.,输入79次上次的操作
V:按行选定
v:按字选定
ctrl+v:按列选
xp:交换当前两个字符位置
s:删除当前光标位置字符开始插入
S:删除当前行开始插入
o:当前行下新建空行开始插入
O:当前行上新建空行开始插入

可结合使用,如可加计数器,例子:100dd:删除100行,命令可加数字,指定重复次数,33dd:删除33行;20j:向下移动20行。

file /bin/ls -l :可区分文件类型

命令行模式,输入:
w:保存
q:退出
wq:保存退出
q!:强制退出
w!:强制保存
wq!:强制保存并退出

ctrl+g:查看底部信息
set number:设行号,去除
set nonum:底部文件信息
set ruler:显示行位,列位,底部信息
set hlsearch:设置搜索时字符高亮
set incsearch:跟踪搜索
set tabstop=4:设置tab键空格数
set autoindent:自动对齐
set mouse:支持鼠标复制
set mouse=a:鼠标滚动
options:得到set帮助
!+命令:可看别的信息,如::! ls, 切换回屏,查看此命令信息
r!:cat /etc/shadow:把shell命令的结果显示到当前编辑窗口
qall:全部退出
wqall:全部保存退出
40:有行号的时候,如按40可跳到对应的行数
s/nologin/test:替换光标所在行的nologin为test
%s/nologin/test:替换全文的nologin为test
20,29 s/nologin/test:20-29行的nologin替换为test
vim /etc/vimrc:这个是vim配置文件,vim /usr/share/vim/vim70/plugin/gzip.vim /root/.vim/plugin  (.点开头表示隐藏文件)


同时打开两个文件 vim test2 /etc/passwd
:next

分屏
vsplit:竖分屏开
split:横屏
qall:退出全部
ctrl+ww:切换
ctrl+wjklh:上下左右换屏

 

2. 用户管理
root的uid=0,uid=1~499为用户,uid=500~ 为普通用户
useradd/adduser:创建用户
userdel:删除一个用户
userdel -r:强制删除用户
passwd a:为用户a设定密码
usermod:修改用户信息

vim /etc/passwd:vim查看用户信息,下图是对相应字段的解析


vim /etc/shadow:查看用户密码信息

关于下图,14991,上次修改密码的时间,计算方式为从1970年1月1日起到目前有几天。可通过这条命令计算得出:echo $(($(date +%s)/86400))。7,密码过期时间,30-7=23,表示密码过期前23天提示密码。


groupadd:添加用户组
groupdel:删除用户组
groupmod:修改用户组信息


vim /etc/group/
vim /etc/gshadow

gpasswd -a b root:将b加入root组
gpasswd -d b root:将b从root组删除
newgrp root:将当前用户加入root组
id a:查用户a的属什么组
su - b:完全切换到b用户


#grub-md5-crypt:使用md5设密码


ls -l

drwxr-xr-x 3 root root  4096 Jan 17 21:36 Desktop

-:一般文件
l:链接文件
d:目录文件
b:块设备文件
c:字符型设备文件
s:网络类型文件
p:管道文件

r:只读
w:可写
x:可执行
-:无权限


对应的2进制,如下图:


修改用户权限
chmod +x 2.txt:将2.txt赋予可执行权限
chmod -x share:文件夹去除执行权限
chmod 777 share:文件夹加读/写/执行的权限
chmod u=rx- aa:为aa加读写的用户权限
chmod u=rwx,g=rx:用户权限读/写/执行,组权限读/执行
chmod 755 /share/ -R:将share下所有文件及目录权限改成755

 

umask:默认=0022,及0777-0022=0755,默认新建文件权限为755,可通过umask 0222来修改这个默认值。

每个终端都有独立的配置文件,更改只对当前终端生效。


手动创建用户的过程,=useradd

1. vim /etc/passwd
2. vim /etc/shadow
3. vim /etc/group
4. vim /etc/gshadow
5. mkdir home/a
6. cp /etc/share/.bash*/home/a
7. chown a:a /home/a/ -R
8. chmod 700 /home/a/ -R
9. touch /var/mail/a
10. chown a:mail /var/mail/a
11. chmod 664 /var/mail/a

 

一些常用的快捷方式:

Ctrl+c:退出
ctrl+Z:后台暂停
ctrl+a:直接返回本行首字母
ctrl+e:返回尾字母
ctrl+f:一个个字母往下
ctrl+u:删除光标前所有字符
ctrl+k:删除光标后所有字符
ctrl+l:清屏


which passwd:查找文件passwd的目录位置

ls -l /usr/bin/passwd


设置特权位,给某些用户加特权
chmod u+s ls:针对用户uid设
chmod a:a ls:针对名设
chmod g+s ls:针对组设置


查权限时,若发现:
-r-s-- (有s表示有特权位,大写S表示无权限执行,小s表示有权限执行)


粘贴位,防止别的用户删除权限(文件+文件夹设置权限)
chmod o+t bb:一般针对目录设置
chmod 777 bb

查权限时,若发现:
rwxrwxrwt (t表示无法删除用户,小t有执行,大T无权执行)


a属性,可往里面追加,
chattr +a:无法删,无法改,但可追加


i属性无法删除
chattr +i ddd
lsattr:查看是否有加特权属性

 

环境变量
启动 /etc/bashrc
         /profile


查看环境变量:
set
env | grep aa
export aa:将私有环境变量导出,使env也能看

echo $LANG=en_US.UTF-8:英文

cp ../dir/aa .:(..上一级目录,.当前目录)

help alias:能查看即是内部命令
typr alias:能查看即是内部命令

命令别名:
alias ping='ping 1.2.3.4':将ping命名为ping1.2.3.4,设置后只对当前终端生效
unalias ping:取消别名

改了后要其生效,重新打开,或./root/.bashrc或source ./root/.bashrc

长存命令别名的几个文件:
/root/.bashrc
     /.bash_profile
     /.bash_logout
     /.bash_history


查看输入过的命令:history

输出:echo 'date' >> /var/log/test


uname -r / -s / -m / -a:查看当前系统的所有信息
cal:日历
bc:计算器,退出q
echo:打印结果
echo -n:输出结果无换行符
echo -n test ; echo ddd :同一终端执行多条命令 (写脚本时有用)
ls ddd && echo hello:&&符表示前面若有错误,后面不执行
echo $((30+20)):计算

date +%Y:输出年,date +%Y:%M, date +%Y%m%d
mkdir `date +%F` :按当前日期创建文件夹(反引号,tab键上面)


关机命令:
reboot
halt
poweroff:关机很快,不保存
init 0:关机 /1:关用户 /2:不带网络的文本模式 /3:带网络的文本模式 /4: /5:图形模式  /6:重启

runlevel:查看当前运行级别

shutdow -r -h -p


终端乱码: 执行reset,例:cat /bin/ls   cat /etc/issue


sync:同步数据,如u盘等时用,防止数据没copy完,在使用cp或cat命令之后


运行命令:./:当前目录下,/mnt/sahre/test:相对路径下


gedit:gedit &:程序改后台运行,ctrl+c退出,ctrl+z暂停,jobs查看暂停程序,fg返回,fg %1/2/3:指定启动哪个暂停的 程序