Linux常见命令的使用总结
文件目录
ls
$ ls /home/cong #列出指定目录下的文件列表
$ ls –a /home/cong #显示指定定目录下的所有文件包括隐藏文件
$ls –l /home/cong #按固定格式显示文件和目录的详细资料
$ls –al /home/cong #显示文件和目录的详细资料
$ls -al /home/*.tar.gz #显示指定目录后缀为tar.gz的文件
cd
$ cd /home/cong #切换到指定目录
$cd .. #切换到上级目录
$cd ../.. #切换到上两级目录
$cd ~ #切换到当前用户的家目录
pwd
pwd #显示当前所在的目录信息
mkdir
mkdir book #创建一个目录
mkdir book1 book2 #同时创建多个目录
mkdir -p a/b/c #创建多级目录
touch
touch ok #创建一个文件
rmdir
rmdir book #删除目录
rm
rm book #删除文件,带提示
rm -r book #循环删除文件或文件夹及其子文件,带提示
rm -f book #强制删除文件不带提示,不能删除文件夹
rm -rf book #强制循环删除一个文件或文件夹,不带提示
rm -rf book1 book2 #强制循环删除多个文件或文件夹,不带提示
mv
mv book.html book #将一个目录下文件移动到另一个目录
mv book.html index.html #将文件重命名
cp
cp index.html index.bak.html #复制一个文件
cp dir/* . #复制一个目录下的所有文件到当前工作目录
cp -a book books #复制一个目录
ln
ln a b #创建硬链接
ln –s a c #创建软连接
源文件f1,指向f1的硬链接f2,指向f1的软链接f3
总结
1).删除符号连接f3,对f1,f2无影响;
2).删除硬连接f2,对f1,f3也无影响;
3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。
file
file text.xml #查看文件类型
系统开关机
shutdown –h now #立刻关机
shutdown –h 10 #10分钟后关机
shutdown -h 12:30 #12:30关机
shutown -t 10 ‘shutdown …’ #10秒后关机
shutdown -c #取消之前设置的定时关机
shutdown -r +10 #10分钟后关机并重启
shutdown -r now #立刻关机重启
shutdown -k now “system is shutdown” #发送警告,并不关机
init 0 #关机
halt #关机
init 3 #由图形界面切换到命令行
reboot #立刻重启系统
logout #登录用户注销
文件搜索查看
cat
cat info.conf #查看文件内容
cat info.conf | more #分页查看,q退出
cat info.conf | less #分页查看,q退出
more redis.conf #以more方式查看文件
less redis.conf #以less方式查看文件
head -10 redis.conf #查看文件头部10行
tail -10 redis.conf #查看文件尾部10行
nl redis.conf #查看文件内容,显示行号
find /root -name phpredis #按文件名phpredis查找/root下的文件
find /home -user cong #按所属用户查找目录下属于该用户的文件
locate book #找出包含关键字的所有文件的路径信息
whereis yum #显示一个二进制文件、源码或man的位置
which yum #显示一个二进制文件或可执行文件的完整路径
grep
rpm –qa | grep nginx #配合管道在结果中搜索
netstat -a | grep 80
ls –al /root |grep book
cat index.php | grep conf
用户和群组相关
groupadd cong #添加一个群组
groupdel cong #删除一个群组
groupmod -n acong cong #重命名一个群组,前者新名,后者旧名
useradd lisi #新建一个用户
useradd –g lisi lisi #添加到指定组
useradd –d /home/lisi lisi #创建指定家目录
useradd –s /bin/bash lisi #指定使用的shell
useradd –g lisi –d /home/lisi –s /bin/bash lisi #自定义创建用户
userdel lisi #删除lisi用户,对应的家目录不删
userdel –r lisi #删除lisi用户,对应的家目录也删除
usermod –s /bin/nologin
usermod –L lisi #锁定用户账户
usermod –U lisi #接触用户密码锁定
usermod -g lisi –d /home/lisi -s /bin/bash lisi #同useradd参数一致
passwd lisi #修改用户密码
查看用户组列表,组密码详细信息
cat /etc/group
cat /etc/gshadow
查看用户列表,密码详细信息
cat /etc/passwd
cat /etc/shadow
文件权限相关
ls –al
-rw-r--r-- 1 cong cong 4096 10月 18 16:27 cong
drw-r--r-- 3 cong cong 8024 10月 18 16:27 book
文件属性权限解析
文件类型【文件属性第一个位置】一般有:
d 目录,文件夹【蓝色】
- 普通文件【白色】
l 链接符
b 设备块
c 设备中的串行接口
注意:
x[可执行],比较特殊,它与文件目录息息相关,可执行权限的使用建立在可以进入该文件目录【即获得可读权限】,如果没有取得r权限,x权限无法操作目录
习题:
文件权限的修改
常用命令有chown chgrp chmod
chgrp 改变所属用户组
chgrp [-R递归] 所属组【所属组必须存在】文件名
#chgrp –R cong aa
chown 更改文件所用者【文档拥有者】
chown
#chown -R cong:cong aa #递归改变文件所有者和所属组
#chown -R cong aa #递归改变文件的所有者
chmod 更改文件权限
1)用数字设置文件权限
-rw--r--r-- aa.txt
owner=r+w=4+2=6
group=r=4
other=r=4
aa.txt权限为 644
#chmod -R 777 aa #给aa文件的权限为rwxrwxrwx
#chmod -R 761 aa #给aa文件的权限为rwxrw---x
#chmod -R 640 aa #给aa文件的权限为rw-r-----
2)用算数符号设置文件权限
chmod |
u g o a
|
+ (加入) -(除去) =(设置) |
r w x |
文件或目录 |
u代表所有者权限位
g代表所属组权限位
o 代表其他组权限位
a 代表所有者,所属组和其他用户组
#chmod u=rwx,go=rx aa #755给文件所有者rwx权限,所属组和其他组rx权限
#chmod o=rwx aa #原有权限上,修改其他组的权限为rwx
#chmod u=rwx,g=rw,o=r aa #761给文件所有者rwx权限,所属组rw权限,其他组r权限
#chmod a+w aa #给文件所有者,所属组,其他组追加写权限
#chmod u+rwx aa #原有权限上,给文件所有者设置rwx权限
#chmod ug+x,o-x aa #原有权限上给文件所有者,所属组设置x权限,其他组去掉x权限
umask 文件默认权限;即文件默认创建时,系统赋予文件的权限属性
#umsak
#umask -S
为了保护文件安全,文件默认是不允许执行的,所以默认去掉了x权限【保证系统安全】,文件夹除外
例子:普通用户umask 0002
#umask 0[特殊权限位] 0 0 2
#umask –S u=rwx,g=rwx,o=rx
touch a.txt -rw-rw-r--
例子:root用户umask 0022
#umask 0[特殊权限位] 0 2 2
#umask –S u=rwx,g=rx,o=rx
touch a.txt -rw-r--r--
结论:知道默认权限位umask,可知道创建文件(夹)的默认权限;反之知道创建文件的默认权限,可以求出默认权限位umask
公式:文件默认权限+x=7-umask
umask 默认权限设置:
#umask 002
特殊权限位 SUID/SUIG/Sticky Bit【很重要,但不常用,自己研究】
STUID 4
SGUID 2
StickyBit 1
chmod 4755 a.txt rwsr-xr-x
chmod 6755 a.txt rwsr-sr-x
chmod 1755 a.txt rwxr-xr-t
chmod 7666 a.txt rwSrwSrwT 【比较特殊】
vi(vim)编辑器使用【很重要】
1)vi有三种模式,一般模式、命令行模式、编辑模式;当进入vi,默认就是打开一般模式;
2)模式间的切换:
一般模式----命令行模式 输入/ 或 ? 或 :
命令行模式----一般模式 去掉/或?或:,或执行完命令行模式
一般模式----编辑模式 输入I,I,O,o,A,a
编辑模式----一般模式 ESC键
#vi a.txt 编辑或创建一个文件
命令行模式下命令:
#/word #从光标位置开始向下,查找关键字word
# ?word #从光标位置开始向上,查找关键字word
# :n1,n2s/word1/word2/g #从n1行到n2行,全局性的将word1替换成word2
# :1,$s/version/6/g #从开头到结尾,全局性的将文档中version替换成6
#:w #保存编辑文件
# :wg.txt #将当前文档【a.txt】内容,保存到另外一个文件【g.txt】中,不存在则创建
#:w! #强制保存编辑的文件,是否保存成功与文件权限有关
#:q #离开vi,退出文件编辑
#:q! #强制退出编辑,不保存文件编辑内容
#:wq #保存并退出文件编辑
#:wq! #强制保存并退出文件编辑,是否保存成功与文件权限有关
#:e! #将文件还原到初始状态
# :setnu #打开行号,显示文档行号
# :setnonu #关闭行号,关闭显示的行号
编辑模式下的命令【主要是插入】
I、i
i在光标所在处前面插入
I 在光标所在行首插入
A、 a
a 在光标所在处后面插入
A在光标所在行尾插入
O、o
o 在光标所在行的上面插入一行
O 在光标所在行的下面插入一行
R、r
r 替换光标所在的字符
R 连续替换光标所在行的字符
一般模式下的命令【命令较多,包括删除、复制、粘贴、光标移动】
光标移动:
0 |
输入数字0;移动到光标所在行行首 |
$ |
移动到光标所在行行尾 |
H |
光标移动到屏幕最上方 |
M |
光标移动到屏幕最中间 |
L |
光标移动到屏幕最下方 |
G |
光标移动到文件最后一行 |
gg |
光标移动到文件第一行 |
nG |
n为数字,光标移动到文件第n行,10G,即移动到第10行;1G相当于gg |
n<Enter> |
n为数字,<Enter>为回车键,光标向下移动n行 |
光标复制与粘贴:
X,x |
x为向后删除一个字符【等同del键】,X为向前删除一个字符【等同为backspace键】 |
nx |
连续向后删除n个字符;10x,连续删除10个字符 |
dd |
删除光标所在的一整行 |
ndd |
从光标所在行开始,向下删除n行(包括该行) |
d0 |
d后面是数字0,删除光标所在处到该行行首字符 |
d$ |
删除光标所在处到该行行尾字符 |
d1G |
删除光标所在行到文档行首的内容 |
dG |
删除光标所在行到文档行尾的内容 |
| |
yy |
复制光标所在那一行 |
nyy |
从光标所在行开始,向下复制n行(包括该行) |
y0 |
y后面是数字0,复制光标所在处到该行行首字符 |
y$ |
复制光标所在处到该行行尾字符 |
y1G |
复制光标所在行到文档行首的内容 |
yG |
复制光标所在行到文档行尾的内容 |
|
|
p |
将复制的数据粘贴到光标所在行的下一行 |
P |
将复制的数据粘贴到光标所在行的上一行 |
u |
恢复前一个操作,恢复上一步 |
J |
将光标所在行的数据与下一行合并成为同一行 |
磁盘管理文件系统
磁盘与目录的容量
df 【diskfilesystem】磁盘文件系统
df -a 列出所有的文件系统
df -k 以KB为单位显示各文件系统
df -m 以MB为单位显示各文件系统
df -h 以GB、MB、KB等格式显示
df -T 连同该分区的文件系统名一起列出【即新增Type显示项】
# df -aT #显示所有文件系统,并显示出文件系统类型
#df -h /etc #以G为单位,显示/etc 下文件系统信息
du 查看文件或目录容量信息
du -a 列出所有的文件与目录容量
du -h 以人们易懂的格式(G/M)显示
du -k 以KB列出容量显示
du -m 以MB列出容量显示
#du -a #查看所有文件系统
#du -ah /home/upload #查看指定目录下的文件容量
磁盘分区:
fdisk 设备
# fdisk -l /dev/sda #查看硬盘上的分区表
#fdisk /dev/sda #进入硬盘分区表
#m #查看帮组信息
p |
打印分区表信息 |
q |
退出并不保存之前的操作 |
n |
新建一个分区 |
d |
删除一个存在的分区 |
m |
显示出命令菜单 |
l |
列出已知的分区类型 |
w |
将分区表写入硬盘,并退出 |
磁盘挂载:
mount
-a #将所有相关的磁盘都挂载起来
-t #通知系统挂载文件的类型,常见有:
ext2、ext3等linux文件系统;
vfat、msdos等windows文件系统
iso9660为光盘文件系统;若mount后,没加-t参数,
linux默认以/etc/filesystems文件内规范的文件系统格式
-o #挂载时加入额外参数,比如账号、密码、读写权限
#将/dev/hd1挂载到 /mnt/hd上面
#mount -t ext3 /dev/hd1 /mnt/hd
#挂载光盘/dev/cdrom
#mount -t iso9660 /dev/cdrom /mnt/cdrom
#挂载windows格式的U盘
#mount -t vfat /dev/hd0 /mnt/hd
#以只读的方式挂载设备
#mount -o ro /dev/hd2 /mnt/hd
#mount #将所有已挂载的分区列出来
磁盘卸载:
umount 设备号/挂载点
# umount /dev/hd2
#umount /mnt/hd
文件解压与压缩命令
Linux压缩文件常用扩展名:.tar、.tar.gz、.tgz、.gz、.Z、.bz2、.zip
*.Z #compress程序压缩的文件
*.bz2 #bzip2程序压缩的文件
*.zip #zip程序压缩的文件
*.gz #gzip程序压缩的文件
*.tar #tar程序打包的文件但没有压缩
*.tar.gz #tar程序打包,并由gzip压缩过的文件
compress 解压缩文件
-d #用来解压*.Z类型的压缩包文件
-c #将压缩数据输出为标准输出
-r #递归压缩,连同目标文件夹下的子文件一同压缩
compress
创建文件info.txt ,到/tmp目录,用compress打包成info.txt.Z
#rmp –qa| grep compress #检查是否安装compress程序
#yuminstall ncompress #没装的话,安装ncompress
#touch /tmp/info.txt #创建文件info.txt ,到/tmp目录
#vi/tmp/info.txt #info.txt中加入内容,保存退出
#compress /tmp/info.txt #用compress打包成info.txt.Z
解压info.txt.Z压缩包文件
#compress –d info.txt.Z #解压*.Z类型的压缩文件
将info.txt压缩成为另一个文件info.txt.bak.Z用来备份
#compress –c info.txt > info.txt.bak.Z
zip 压缩文件
-r #当前目录下的所有文件和文件夹全部压缩【递归】压缩
-d #删除压缩包里面指定的文件【压缩包不包括文件夹】
Zip
将 /root/books文件夹递归打包成books.zip
# cd /root #切换到/root目录
# zip -r /root/books #递归打包,文件夹及子文件都打包
将 /root/index.html、about.html打包成books.zip
#cd /root #切换到/root目录
# zip –rbooks.zip index.html b.html #zip实现多个文件打包
unzip 解压文件【针对*.zip文件,进行解压】
-o #覆盖源文件
-d #设置解压目录
unzip
/home/upload下有b.html ,books.zip,而books.zip里面包含index.html和b.html,将books.zip解压且覆盖b.html
#cd/home/upload #切换到用户upload 家目录
# unzip–o books.zip #解压*.zip压缩包,覆盖同名文件
将/root下books.zip文件解压到/home/upload目录下
# cd/root #切换到/root目录下
#unzip -d /home/upload #将*.zip文件解压到指定目录下
gzip 解压缩文件
-d #用来解压*.gz类型的压缩包文件
-c #将源文件打包压缩以标准输出方式创建备份压缩包文件
gzip
将文件test.txt ,移到/tmp目录,用gzip打包成test.txt.gz
#mv test.txt /tmp #将文件test.txt ,移到/tmp目录
#gzip /tmp/test.txt #将文件打包成*.gz格式
将test.txt.gz 解压为test.txt
#gzip –d /tmp/test.txt.gz #gzip解压*.gz类型文件
#gzip –c /tmp/test.txt > /tmp/test.txt.bak.gz #gzip解压*.gz类型文件
bzip 解压缩文件
-d #用来解压*.bz2类型的压缩包文件
-c #将源文件打包压缩以标准输出方式创建备份压缩包文件
-z #解压*.bz2类型压缩包文件
bzip
将文件bbs.txt ,移到/tmp目录,用bzip2打包成bbs.txt.bz2
#mv test.txt /tmp #将文件test.txt ,移到/tmp目录
#bzip2 -z /tmp/test.txt #将文件打包成*.gz格式
将bbs.txt.bz2 解压为bbs.txt
#bzip2 –d /tmp/bbs.txt.bz2 #解压*.bzip2类型文件
将bbs.txt 压缩为bbs.txt.bak.bz2文件备份
#bzip2 –c /tmp/bbs.txt > /tmp/bbs.txt.bak.bz2 #解压*.bzip2类型文件
tar 解压缩文件
-z #文档是否拥有gzip属性,即用gzip压缩文件
-j #文档是否拥有bzip2属性,即用bzip2压缩文件
-x #解压压缩文件的参数【核心】
-c #创建压缩文件的命令【核心】
-v #压缩的过程中显示文件名
-f #创建文件名
-p #使用绝对文件路径来压缩
tar
将test.txt 文件,压缩为 test.tar
#tar -cf test.tar test.txt #将test.txt压缩出test.tar文件【test.txt依旧存在】;
将 test.tar 解压出来
#tar -xf test.tar #解压出来的文件为原文件【test.tar依旧存在】
将 test.txt 压缩为 test.gz文件
# tar –zcvf test.gz test.txt
将test.gz压缩包解压
#tar –zxvf test.gz #将*.gz压缩包文件,解压出来
网络管理与网络服务
ifconfig【interface config】查看网络信息,包括本地网络,局域网网络信息(如ip,网卡地址,设备名等)
查看本地网络设备和ip地址信息
#ifconfig
查看网卡eth0,信息
#ifconfig eth0
关闭/停用网卡设备eth0
#ifconfig eth0 down
打开/激活网卡设备 eth0
#ifconfig eth0 up
设置ip地址
#ifconfigeth0 192.168.0.245
ping 测试网络连通状态
测试网络默认网关连通状态
# ping 192.168.0.1
测试外网连接状态
#ping www.baidu.com
linux防火墙,iptables
进程,端口,资源使用,系统模块查看命令
ps #列出系统中当前运行的那些进程 【用法: ps –ef 或 ps -aux】
top #动态的显示进程信息【用法:top】
free #显示Linux系统中空闲的、已用的物理内存及swap内存,及内核缓存
uname #查看系统内核版本号【用法: uname –r】
netstat #显示各种网络相关端口信息【用法:netstat -tunpl】
dmesg #查找设备信息 【用法: dmesg | grep eth0 】
lsmod #查找模块信息 【用法: dmesg | grep bluetooth 】
Shell编程