Linux常用命令总结
帮助:
可以通过 type 查看命令是内部还是外部命令:type cp
- 内部命令可以通过:help 命令 例子: help cd
- 外部命令可以通过:命令 --help 例如:ls --help
- 可以通过man命令获取命令帮助: 例如: man cd whatis 查看都有哪些man章节 不分内部和外部命令
Ls
-h:做单位转换
-a: 显示以.开头的隐藏文件 命令:mv 1.txt .1.txt(将文件隐藏)
. 表示当前目录
.. 表示父目录
-d: 显示目录自身属性
-i: index node, inode 显示该目录有多少文件
-r: 逆序显示
-R: 递归(recursive)显示
ls -l:长格式,长格式查看结果
cat /proc/cpuinfo
查看cpu信息
cat /proc/meminfo
查看内存信息
free
查看内存使用情况
uptime
监控CPU情况
cat /etc/redhat
release
查看发行版信息
hostname
查看主机名
ip addr
查看ip信息
ifconfig
查看ip信息
netstat
查看网络连接信息、路由表等,常用来查看端口
打开情况
fdisk -l
查看硬盘信息
df
查看设备挂载信息
touch 创建文件
echo 将用户输入的内容,显示在屏幕上。通常结合着“>”重定向符号,用来在文本文件中,添加数据,“>>” 表示追加。
cat 用来显示文件的内容
[root@localhost ~]# cat > testfile << EOF
> Hello World!
> welcome to china
> EOF
tac 倒序查看文件内容
more 显示文件内容,每次显示一屏
less 分屏上下翻页浏览文件内容,用PageUp键向上翻页,用PageDown键
向下翻页
head 显示文件开头,默认开始10行
tail 显示文件结尾,默认结尾10行
-f 监控某个文件变化
wc 统计文件的行数\单词数\字符数
-l 行数
-w 单词数
-c 字符数
du 统计文件和目录的大小
-s 汇总显示大小
-h 易读形式显示
ls 查看目录内容
cd 切换目录
pwd 查看当前目录位置
mkdir 创建目录、
-p 创建多级目录
rmdir 删除空目录
rm 可以删除一个目录中的一个或多个文件或目录
-f 强制删除
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
mv 用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
cp 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。
-f:强行复制文件或目录,不论目标文件或目录是否已存在
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
vim :
三种模式:命令模式、插入模式、末行模式
i I a A o O 进入到插入模式
i: 在光标当前位置插入
I: 在光标所在行首插入
a: 在光标所在位置后插入
A: 在光标所在行尾插入
o: 光标所在行下方另起一行插入
O: 光标所在行上方另起一行插入
末行模式 w 保存 q 退出 wq保存并且退出 !: 强制 三者可以结合使用 (ZZ: 保存并且推出)
命令行模式: dd 删除[剪切] yy 复制 [n]yy 多行复制 p 粘贴
vim windows linux文件格式转换
:set ff? #显示当前文件格式
:set ff=unix #设置成unix格式
:set ff=dos #设置成dos格式
命令模式下的操作:
行间快速跳转 1G或者gg 跳转到文件的首行
G 跳转到文件的末尾行
#G 跳转到文件中的第#行
行号显示 :set nu 在编辑器中显示行号
:set nonu 取消编辑器中的行号显示
删除 x或Del 删除光标处的单个字符
dd 删除当前光标所在行
#dd 删除从光标处开始的#行内容
d^ 删除当前光标之前到行首的所有字符
d$ 删除当前光标处到行尾的所有字符
复制 yy 复制当前行整行的内容到剪贴板
#yy 复制从光标处开始的#行内容
粘贴 p 小写 将缓冲区中的内容粘贴到光标位置处之后
P 大写 粘贴到光标位置处之前
查找 /word 从上而下在文件中查找字符串“word”
?word 从下而上在文件中查找字符串“word”
n 定位下一个匹配的被查找字符串
N 定位上一个匹配的被查找字符串
取消操作 u 按一次取消最近的一次操作
多次重复按u键,恢复已进行的多步操作
U 用于取消对当前行所做的所有编辑
保存退出 ZZ 保存当前的文件内容并退出vi编辑器
末行模式的操作:Shift + :
1、保存文件 :w 保存修改的内容
:w /root/newfile 另存为其它文件
2、退出vi :q 未修改退出
:q! 放弃对文件内容的修改,并退出vi
3、保存文件退出vi :wq 保存修改的内容并退出
4、打开新文件 :e ~/install.log 打开新的文件进行编辑
5、读入其它文件内容 :r /etc/filesystems 在当前文件中读入其他文件内容
6、替换 :s /old/new 将当前行中查找到的第一个字符“old” 串替换
为“new
:% s/old/new/g 在整个文件范围内替换所有的字符串“old”
为“new”
Zip
默认后缀名.zip
# zip test.zip test.txt
解压缩 : unzip
-d 指定解压路径
# unzip test.zip -d /tmp/
gzip
# gzip 1.txt
默认后缀名为 .gz
默认会删除源文件
-# 指定压缩比(1~9)
1级别最低,速度最快,压缩率最低;9级别最高,速度最慢,压缩最高。
解压 gunzip
# gunzip 1.txt
bzip2
# bzip2 1.txt
默认会删除源文件
默认后缀名为 .bz2
-#:指定压缩比
-k: 保留原文件
解压缩:bunzip2
# bunzip2 1.txt
xz压缩
# xz 1.txt
-k : 保留原文件
解压:unxz
# unxz 1.txt
tar 既可以打包,又可以压缩
语法格式:tar+选项+包名+打包的文件
# tar -zcvf test.tar.gz test.txt
-c 创建归档文件(必须加)
-f 后边加操作文件(必须加)
-C: 解压时指定路径
-r :向包中追加文件
-v :显示详细过程
-x:展开归档
-zcf: 归档并调用gzip压缩
-zxf: 调用gzip解压缩并展开归档
jcf: 归档并调用bzip2压缩
-jxf: 调用bzip2解压缩并展开归档
解包
# tar test.tar.gz
-C:指定解压路径
-t:不解包查看包中的内容 # tar -tf
-r:向包中追加文件,不能追加压缩的文件
root@base tmp]# tar -rf t.tar t8.txt
which:用来查找命令的绝对路径(外部命令)
命令的别名: alias
设置命令的别名
# alias vi='vim'
# vi /etc/passwd //执行vi时候,实际上执行的是vim
永久改文件
vim /root/.bashrc
取消别名
# unalias vi
查找 find
语法:搜索路径+选项+动作
# find /etc/ -name network
// 查找/etc目录下名字包含.cfg的文件,并统计有多少个文件。
]# find /etc/ -name *.txt | wc -L
| 将前边命令的标准输入,作为后边命令的标准输出
1.-name 按照文件名查找
通配符
* 代表任意字符
? 代表单个字符
# find /etc/ -name *.conf
2. 按照文件类型查找 -type
f:普通文件
# find / -type f 查找根目录下的普通文件
3.按照时间查找 -atime
以n等于7为例
搜索根目录最近七天内被访问过的所有文件
搜索恰好在七天前被访问过的所有文件
find . -type f -atime 7
搜索超过七天内被访问过的所有文件
find . -type f -atime +7
搜索访问时间超过10分钟的所有文件
find . -type f -amin +10
4.按照用户和组查找
-user 用户名
-group 组名
-nouser:孤儿文件 没有所有者的文件
-nogroup:没有所属组的文件
举例:查看系统中所有者属于user1的普通文件
# find / -user user1 -type f
5.按照权限查找 -perm
r:4 读 w:2 写 x:1 执行
//查找find目录下,小组权限为可写的文件。
# ll `find ./ -perm -g=w -type f`
6.按照文件大小查找 -size
//查找目录下,文件大小大于3M大小的文件。
# find . -type f -size +3M
动作
-exec 动作 找到结果之后直接执行动作
-ok 动作 执行动作之前先提示,即需要交互
举例:查找根目录下大于3M的文件并ls -l展开
# find . -type f -size +3M -exec ls -l {} \;
查找/test目录下类型为普通文件的文件,对其进行备份,备份文件的后缀名为.bak
# find /test -type f -exec cp {} {}.bak \;
sort排序
-t:指定字段分隔符
-k:指定第几个字段
-n:按照数字顺序排序
-r:反向排序
u:排序后重复行只打印一次
# cat sort.txt
//对输出内容直接排序,默认按照每行的第一个字符进行排序
# cat sort.txt | sort
//使用“:”做分隔符,对第2个字段进行排序
# cat sort.txt | sort -t ":" -k 2
uniq 去重,唯一
-c 显示重复行数
# uniq num.txt
使用uniq时,一般先排序,再去重
# sort num.txt | uniq
# sort num.txt | uniq -c 显示重复行数
用户与组
系统文件:
/etc/passwd: 保存用户信息的文件
/etc/shadow: 保存用户密码相关信息的文件
/etc/group: 保存组信息的文件
/etc/gshadow:保存组密码相关信息的文件
一般查看文件可以使用 cat ,head, tail 命令
# head -1 /etc/passwd
# cat /etc/gshadow
# tail -1 /etc/shadow
/etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID:GID:描述信息:家目录:登录shell
/etc/shadow
usr1:$6$WiavDI7M$ZFylLEIsO4Be7y.Wf86ACUxan62twIkync7B9p7WF1ZgQHwJ8GxWpJHqdef6Pv8GaDs.vrznm1crsTrexG31Q/:18849:0:99999:7: : :
- 用户名
- 加密后的密码
- 上一次密码修改时间(单位是天,是距离1970年1月1日 多少天)
- 密码最小生存周期 单位:天 0表示随时可以修改密码;2表示两天内 不能修改
- 密码最大生存周期 单位:天,密码使用的最长时间
- 密码到期前几天开始警告
- )密码过期之后到账户失效之前的时间限制 密码过期之后还可以用几天
- 账户过期时间
- 保留列
/etc/group
root:x:0:
组名:密码占位符:GID:用户列表
/etc/gshadow
root : : :
组名: 加密后的密码:组管理员:组成员
用户
对用户的常用操作:
新增、删除、修改、查看、设置密码
查看用户 id
[root@base ~]# id user1
]# whoami //查看当前用户是谁
uid:用户标识
gid:组标识,用户的主组
groups:用户所属组信息
- 添加用户 useradd
# useradd user1
-c:注释性的描述信息
-d:指定用户的家目录
默认情况下:
root的家目录是/root
普通用户的家目录是/home
-g:指定用户的主要组,前提:组是必须存在的
-G:指定用户的附加组(附属组),前提:组是必须存在的
-s:指定用户的登录shell
-u:指定用户的uid
- 给用户设置密码
# passwd user1
或者明文设置密码
# echo 123.com | passwd --stdin user1
//切换用户操作
# su - user1
- 删除用户 userdel
-r:可以干净的删除一个用户
# userdel -r user1
- 修改用户(常用) usermod
-G:修改用户的附属组,不管用户原来的附属组如何,直接覆盖
-g:修改用户的主要组
-a:一般和-G联合使用,追加附属组
-u:修改用户的uid
-d:修改用户的家目录
-L 锁定用户
-U 解除锁定
-l 改名
-s:修改用户的shell
要求区分的两种shell
/bin/bash:可登录shell,如果用户的shell是这个,那么该用户可 以登录到系统中 /sbin/nologin:非登录shell,如果用户的shell是这个,那么该用户 是不允许登录到系的
]# echo $SHELL //查看当前shell,echo可以用来打印变量
/bin/bash
修改user1的shell为非登录shell
]# usermod -s /sbin/nologin usr1
]# grep usr1 /etc/passwd
//仅过滤出文件中含有usr1的行(一般用来显示nologin的非shell登录的用户)
组
- 添加组 grouped
]# groupadd g1 –
-g:添加组时,指定gid是多少
- 修改组:groupmod
修改组的名字 : -n 新名字
]# groupmod -g 1080 -n group2 g2
- 删除组:groupdel
]# groupdel group1
]# grep group1 /etc/group
//没有任何输出,表示文件中没有含有 group1关键字的行
- 组管理:gpasswd
- 指定组的管理员列表
gpasswd + -A +用户 +组
]# gpasswd -A u1 groups
2.向组中添加新成员
gpasswd + -a +用户 +组
gpasswd -a user1 groups
3.给组设密码
]# gpasswd groups
4.将用户从组里删除
]# gpasswd -d user1 groups
用户与组常用命令
useradd username
添加用户(创建的时候可以指定u、g、c等选项)
id username
查看当前用户的ID
whoami
查看当前用户的名字
passwd username
设置用户密码(普通用户只能通过passwd修改自己本身密码)
userdel username
删除一个用户(-r 选项会连同创建的家目录一同删除)
groupadd groupname
创建组
groupdel groupname
删除组(用户的主要组不可以删除)
usermod -[u,g,G等]
username
修改用户信息
groupmod groupname
修改组的信息
gpasswd -A username
groupname
为组添加一个管理员
gpasswd -a usrname
groupname
用组管理员为组添加一个用户成员
gpasswd -d username
group
删除一个组成员
gpasswd groupname
为组设定一个密码
文件权限
基本权限
r, w, x:可读、可写、可执行。
文件:
r:可读,可以使用类似cat等命令查看文件内容;
w:可写,可以编辑或删除此文件;
x: 可执行,executable,可以命令提示符下当作命令提交给内核运行; r单独存在,可查看文件内容
w单独存在,看不到文件内容,但是可以强制修改文件内容,会覆盖原文件内容,单独存在,意义不大
x单独存在,毫无意义
目录:
r: 可以对此目录执行ls以列出内部的所有文件;
w: 可以在此目录创建、修改、删除文件;
x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;
只有r权限时,可以读(有报错),不能写,也不能进入目录
只有w权限时,毫无意义
只有x权限时,只能进入,不能读,不能写
目录的rw权限:可以查看内容,不可以进入目录,不能删除目录或它里面的文件
目录的rx权限:可以查看内容,可以进入目录,不可修改目录的内容目录的wx权限:不可以查看目录内容,可以进入目录,可以删除目录下的文件,前提是你需要知道目录下有什么文件
权限针对的三类用户:
U : user 属主
g : group 属组
o :other 其他用户
// ls -l 命令显示的意义
第一栏代表这个文件的类型与权限
第一个字符代表这个文件是“目录、文件或链接文件等等”:
当为[ d ]则是目录,例如上表文件名为“.config”的那一行;
当为[ - ]则是文件,例如上表文件名为“initial-setup-ks.cfg”一行;、
若是[ l ]则表示为链接文件(link file);
若是[ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备);
若是[ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)
接下来的字符中,以三个为一组,且均为“rwx” 的三个参数的组合。其中, [ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行 (execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限, 就会出现减号[ - ]而已。
第一组为“文件拥有者可具备的权限”;
第二组为“加入此群组之帐号的权限”;
第三组为“非本人且没有加入本群组之其他帐号的权限
举例:
若有一个文件的类型与权限数据为“-rwxr-xr--”,请说明其意义为何?
所有者:可读、可写、可执行(rwx)
所属组:本例中为可读可执行(rx)
其他人:只读
第二栏表示有多少文件名链接到此节点
第三栏表示这个文件(或目录)的“拥有者账号”
第四栏表示这个文件的所属群组
第五栏表示这个文件的容量大小,默认单位是Bytes
第六栏表示这个文件的创建日期或者是最近修改日期。
第七栏为这个文件的文件名
修改文件的属性和权限
chgrp :改变文件所属群组 chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性
修改文件权限,chmod 命令的使用。 a=所有人
更改权限方面也可以使用数字来代表权限
各权限的分数对照表如下
r:4 w:2 x:1
默认权限:umask
隐藏权限
//查看文件的隐藏权限,lsattr命令。
特殊权限和Facl
SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是用户本身了,只对二进制程序有效,执行者对于程序需要有x权限
SGID
对于文件:运行某程序时,相应进程的属组是程序文件自身的属组,而不是用户本身的基本组
对于目录:
用户对此目录有rx权限可以进入目录
用户进入此目录后,有效用户组会变成该目录的用户组
若用户在此目录有w权限,则用户创建的文件用户组与该目录用户组相同
Sticky (BIT)
特殊权限的数字表达方式:
SUID是4 SGID是2 SBIT是1 同样如果拥有多个特殊权限,数字相加即可。
FACL
文件系统访问控制列表
FACL:filesystem access control list
利用文件的扩展属性,保存了额外的访问控制权限
getfacl 查看、setfacl 设置
语法:setfacl [-bkRd] [-m|-x acl 参数] 目标文件名
选项与参数:
-m:设置后续的acl参数,不可与-x一起使用
-x: 删除后续的acl参数,不可与-m一起使用
-b:删除所有的acl参数
-k:删除默认的acl参数
-R:递归设置acl参数
-d:设置默认acl参数,只对目录有效