基本命令
命令入门
命令提示符详解
[root@localhost ~]# #/root
[gtjin@localhost ~]$ #/home/gtjin
[root@node1 ~]# #/root
用户名@主机名 当前目录 #系统权限 $普通用户
命令格式
命令 [选项] [参数](三者之间要有空格,区分大小写)
command [-options] [args]
[ args ]:参数(多个参数之间用空格分隔)
案例演示
[root@localhost ~]# ls
anaconda-ks.cfg
[root@localhost ~]# ls -a
. anaconda-ks.cfg .bash_logout .bashrc .config .tcshrc
.. .bash_history .bash_profile .cache .cshrc .viminfo
[root@localhost ~]# ls -a -l
total 28
dr-xr-x---. 4 root root 180 Apr 14 20:51 .
dr-xr-xr-x. 17 root root 224 Apr 14 11:35 ..
-rw-------. 1 root root 1291 Apr 8 21:14 anaconda-ks.cfg
-rw-------. 1 root root 160 Apr 14 20:51 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwxr-xr-x. 3 root root 18 Apr 8 21:18 .cache
drwxr-xr-x. 3 root root 18 Apr 8 21:18 .config
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-------. 1 root root 0 Apr 14 20:51 .viminfo
[root@localhost ~]# ls -al
total 28
dr-xr-x---. 4 root root 180 Apr 14 20:51 .
dr-xr-xr-x. 17 root root 224 Apr 14 11:35 ..
-rw-------. 1 root root 1291 Apr 8 21:14 anaconda-ks.cfg
-rw-------. 1 root root 160 Apr 14 20:51 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwxr-xr-x. 3 root root 18 Apr 8 21:18 .cache
drwxr-xr-x. 3 root root 18 Apr 8 21:18 .config
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-------. 1 root root 0 Apr 14 20:51 .viminfo
[root@localhost ~]# ls -al .bash*
-rw-------. 1 root root 160 Apr 14 20:51 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
[root@localhost ~]# ls -al /bin/*grep
-rwxr-xr-x. 1 root root 1677 Nov 20 2015 /bin/bzgrep
-rwxr-xr-x. 1 root root 290 Aug 3 2017 /bin/egrep
-rwxr-xr-x. 1 root root 290 Aug 3 2017 /bin/fgrep
-rwxr-xr-x. 1 root root 159024 Aug 3 2017 /bin/grep
-rwxr-xr-x. 1 root root 36832 Apr 1 2020 /bin/msggrep
-rwxr-xr-x. 1 root root 28336 Oct 1 2020 /bin/pgrep
lrwxrwxrwx. 1 root root 6 Apr 8 21:10 /bin/xzegrep -> xzgrep
lrwxrwxrwx. 1 root root 6 Apr 8 21:10 /bin/xzfgrep -> xzgrep
-rwxr-xr-x. 1 root root 5628 Nov 5 2016 /bin/xzgrep
-rwxr-xr-x. 1 root root 123 Apr 11 2018 /bin/zegrep
-rwxr-xr-x. 1 root root 123 Apr 11 2018 /bin/zfgrep
-rwxr-xr-x. 1 root root 6132 Apr 11 2018 /bin/zgrep
-rwxr-xr-x. 1 root root 2953 Oct 11 2008 /bin/zipgrep
[root@localhost ~]# ls -al /bin/*class*
-rwxr-xr-x. 2 root root 11976 Aug 4 2017 /bin/nl-class-add
-rwxr-xr-x. 2 root root 11824 Aug 4 2017 /bin/nl-class-delete
-rwxr-xr-x. 2 root root 11560 Aug 4 2017 /bin/nl-classid-lookup
-rwxr-xr-x. 2 root root 11752 Aug 4 2017 /bin/nl-class-list
ls
的作用
-
列出目录内容:
ls
命令用于显示指定目录中的文件和子目录列表。如果没有指定目录,默认显示当前工作目录的内容。 -
显示文件信息:除了列出文件名,
ls
还可以配合不同的参数显示文件的详细信息,如文件类型、权限、所有者、大小、修改时间等。
-a
参数
-
作用:
-a
参数表示列出所有文件和目录,包括隐藏文件(以点.
开头的文件和目录)。 -
示例:在 Linux 系统中,许多配置文件和系统文件是以点开头的隐藏文件,例如
~/.bashrc
、~/.config
等。使用ls -a
可以将这些隐藏文件也显示出来。
-l
参数
-
作用:
-l
参数用于以长格式列出文件和目录的详细信息。长格式包括以下内容:-
权限:文件或目录的访问权限(如
-rwxr-xr-x
)。 -
链接数:硬链接的数量。
-
所有者:文件或目录的所有者用户名。
-
所属组:文件或目录所属的用户组。
-
大小:文件的大小(以字节为单位)。
-
修改时间:文件或目录的最后修改时间。
-
文件名:文件或目录的名称。
-
获取命令的帮助
查手册
man命令
命令 --help
搜索引擎
命令 --help
在这里可以查看相关的介绍
echo
[root@localhost ~]# echo "hello world"
hello world
[root@localhost ~]# echo -n "hello world"
hello world[root@localhost ~]#
[root@localhost ~]# echo -3 "hello \nworld"
-3 hello \nworld
[root@localhost ~]# echo -e "hello \nworld"
hello
world
[root@localhost ~]# echo "hello \nworld"
hello \nworld
[root@localhost ~]#
环境变量:PATH
在当shell中执行命令的时候,默认到PATH指定的路径中查找可执行文件。
如果在PATH中的多个目录都包含该可执行文件,则执行最先找到的。
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
如果找不到,则提示命令不识别
ls
ls命令用于列出目录内容
ls
添加-l 以长格式输出,列出根目录下内容的详细列表
ls -l
也可以后面跟多个目录,列出多个目录的内容
ls / /usr
也可以通过命令的别名列出详细列表
[root@localhost /]# ll
total 20
lrwxrwxrwx. 1 root root 7 Apr 8 21:09 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Apr 8 21:14 boot
drwxr-xr-x. 20 root root 3240 Apr 15 10:46 dev
drwxr-xr-x. 84 root root 8192 Apr 15 10:46 etc
drwxr-xr-x. 4 root root 33 Apr 14 18:02 home
lrwxrwxrwx. 1 root root 7 Apr 8 21:09 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Apr 8 21:09 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 media
drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
drwxr-xr-x. 3 root root 16 Apr 8 21:10 opt
dr-xr-xr-x. 143 root root 0 Apr 15 10:46 proc
dr-xr-x---. 4 root root 180 Apr 14 20:51 root
drwxr-xr-x. 28 root root 840 Apr 15 10:46 run
lrwxrwxrwx. 1 root root 8 Apr 8 21:09 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
dr-xr-xr-x. 13 root root 0 Apr 15 10:46 sys
drwxrwxrwt. 12 root root 4096 Apr 15 11:10 tmp
drwxr-xr-x. 13 root root 155 Apr 8 21:09 usr
drwxr-xr-x. 20 root root 282 Apr 8 21:15 var
ll
ls -a
ls -a -l
ls -al
pwd
打印当前工作目录路径
[root@localhost /]# cd home
[root@localhost home]# ll
total 0
drwx------. 4 laoyang laoyang 142 Apr 14 16:30 laoyang
drwxr-xr-x. 2 root root 20 Apr 14 20:51 test
[root@localhost home]# pwd
/home
cd
cd用于更改shell工作目录,也就是切换目录 change directory
#如果cd后什么都不写,表示直接回当前用户家目录
cd
cd /etc
#cd后跟波浪线,也表示回用户家目录
cd ~
#cd后也可以跟减号(-)用以表示回到最后一次切换之前的目录,多次使用减号在最近两个目录之间切换
cd /etc/sysconfig/network-scritps
cd -
#root用户可以直接通过绝对路径进到普通用户的家目录
cd /home/god
cd ..
ll
#也可以直接跟波浪线用户名表示直接进入到某个用户的家目录
cd ~bjsxt 到用户bjsxt家中去,root不受限制
[root@localhost home]# cd
[root@localhost ~]# cd ..
[root@localhost /]# cd /etc
[root@localhost etc]# cd /etc/sysconfig/network-scritps
-bash: cd: /etc/sysconfig/network-scritps: No such file or directory
[root@localhost etc]# cd /home/god
-bash: cd: /home/god: No such file or directory
[root@localhost etc]# cd ..
[root@localhost /]# ll
total 20
lrwxrwxrwx. 1 root root 7 Apr 8 21:09 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Apr 8 21:14 boot
drwxr-xr-x. 20 root root 3240 Apr 15 10:46 dev
drwxr-xr-x. 84 root root 8192 Apr 15 10:46 etc
drwxr-xr-x. 4 root root 33 Apr 14 18:02 home
lrwxrwxrwx. 1 root root 7 Apr 8 21:09 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Apr 8 21:09 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 media
drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
drwxr-xr-x. 3 root root 16 Apr 8 21:10 opt
dr-xr-xr-x. 143 root root 0 Apr 15 10:46 proc
dr-xr-x---. 4 root root 180 Apr 14 20:51 root
drwxr-xr-x. 28 root root 840 Apr 15 10:46 run
lrwxrwxrwx. 1 root root 8 Apr 8 21:09 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
dr-xr-xr-x. 13 root root 0 Apr 15 10:46 sys
drwxrwxrwt. 12 root root 4096 Apr 15 11:10 tmp
drwxr-xr-x. 13 root root 155 Apr 8 21:09 usr
drwxr-xr-x. 20 root root 282 Apr 8 21:15 var
[root@localhost /]# cd ~laoyang
[root@localhost laoyang]#
mkdir
mkdir用于创建目录
mkdir abc
mkdir a1 a2 a3
#如果直接创建多层目录,则报错,因为默认只能创建最后一级目录
mkdir a/b/c
#可以添加-p选项,用以创建多层目录,因为系统发现某一级目录不存在的时候创建父目录
mkdir -p a/b/c
#也可以在mkdir后跟多个目录,用于一次性创建多个目录
mkdir ./abc/1dir ./abc/2dir ./abc/3dir
#但是可以使用大括号高效创建相似的目录
mkdir ./abc/{x,y,z}dir
mkdir abc/{a..c}dir
[root@localhost /]# cd home
[root@localhost home]# cd laoyang
[root@localhost laoyang]# mkdir ./abc/{x,y,z}dir
mkdir: cannot create directory ‘./abc/xdir’: No such file or directory
mkdir: cannot create directory ‘./abc/ydir’: No such file or directory
mkdir: cannot create directory ‘./abc/zdir’: No such file or directory
[root@localhost laoyang]# mkdir -p ./abc/{x,y,z}dir
[root@localhost laoyang]# ll
total 4
drwxr-xr-x. 5 root root 42 Apr 15 15:05 abc
-rwxr-xr--. 1 root java 18 Apr 14 16:30 a.info
[root@localhost laoyang]# cd abc
[root@localhost abc]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 15 15:05 xdir
drwxr-xr-x. 2 root root 6 Apr 15 15:05 ydir
drwxr-xr-x. 2 root root 6 Apr 15 15:05 zdir
[root@localhost abc]# cd xdir
[root@localhost xdir]# ll
total 0
cp
cp 文件... 目标目录
拷贝文件...到目标目录,可以同时拷贝多个文件,文件名之间用空格隔开
[root@node1 ~]# ls
anaconda-ks.cfg test
[root@node1 ~]# ls test/
a a1 a2 a3 abc
[root@node1 ~]# cp anaconda-ks.cfg test/abc/
[root@node1 ~]# ls test/abc/
1dir 2dir 3dir adir anaconda-ks.cfg bdir cdir xdir ydir zdir
[root@node1 ~]# cd test/abc/xdir/
[root@node1 xdir]# pwd
/root/test/abc/xdir
[root@node1 xdir]# ls
#太麻烦了
[root@node1 xdir]# cp /root/anaconda-ks.cfg /root/test/abc/xdir/
[root@node1 xdir]# ls
anaconda-ks.cfg
#简化版
[root@node1 xdir]# cp ~/anaconda-ks.cfg .
cp:是否覆盖"./anaconda-ks.cfg"? y
[root@node1 xdir]#
[root@localhost ~]# cp home/test/abc/a.info home/laoyang
cp: cannot stat ‘home/test/abc/a.info’: No such file or directory
[root@localhost ~]# cp /home/test/abc/a.info /home/laoyang
cp: overwrite ‘/home/laoyang/a.info’? y
[root@localhost ~]# cd /home/laoyang
[root@localhost laoyang]# ll
total 4
drwxr-xr-x. 5 root root 42 Apr 15 15:05 abc
-rwxr-xr--. 1 root java 71 Apr 15 15:11 a.info
[root@localhost laoyang]# cat a.info
lksdfkjalsdjl
ldkajlsjdflajd
lajsdlfk
lksdflkja
kljla;sdlkfj
ljslfdja:
cp -r 目录 目标目录
拷贝目录到目标目录
[root@node1 test]# mkdir xyz
[root@node1 test]# ls
a a1 a2 a3 abc xyz
[root@node1 test]# cp abc xyz/
cp: 略过目录"abc"
[root@node1 test]# cp -r abc xyz/
[root@node1 test]# ls
a a1 a2 a3 abc xyz
[root@node1 test]# ls xyz
abc
[root@node1 test]# ls -R xyz/
xyz/:
abc
xyz/abc:
1dir 2dir 3dir adir anaconda-ks.cfg bdir cdir xdir ydir zdir
xyz/abc/1dir:
xyz/abc/2dir:
xyz/abc/3dir:
xyz/abc/adir:
xyz/abc/bdir:
xyz/abc/cdir:
xyz/abc/xdir:
anaconda-ks.cfg
xyz/abc/ydir:
xyz/abc/zdir:
mv
mv用于移动或重命名文件
移动文件/目录
#mv 源文件/[源文件1 源文件2] 目标目录
[root@node1 test]# ls
a a1 a2 a3 abc xyz
[root@node1 test]# cd abc/
[root@node1 abc]# ls
1dir 2dir 3dir adir anaconda-ks.cfg bdir cdir xdir ydir zdir
[root@node1 abc]# mkdir -p x/y/z
[root@node1 abc]# ls
1dir 2dir 3dir adir anaconda-ks.cfg bdir cdir x xdir ydir zdir
[root@node1 abc]# mv anaconda-ks.cfg x/y/
[root@node1 abc]# ls x/y/
anaconda-ks.cfg z
[root@node1 abc]# ls
1dir 2dir 3dir adir bdir cdir x xdir ydir zdir
[root@node1 abc]# mv x /root/
[root@node1 abc]# ls
1dir 2dir 3dir adir bdir cdir xdir ydir zdir
[root@node1 abc]# cd /root/
[root@node1 ~]# ls
anaconda-ks.cfg test x
[root@node1 ~]# ls -R x/
x/:
yx/y:
anaconda-ks.cfg zx/y/z:
Linux中没有专门改名的命令,mv兼职改名工作:
[root@node1 ~]# cd test/
[root@node1 test]# ls
a a1 a2 a3 abc xyz
#修改目录名称 mv 旧名称 新名称
[root@node1 test]# mv a3 ao3
[root@node1 test]# ls
a a1 a2 abc ao3 xyz
[root@node1 test]# cp ~/anaconda-ks.cfg .
[root@node1 test]# ls
a a1 a2 abc anaconda-ks.cfg ao3 xyz
#修改文件
[root@node1 test]# mv anaconda-ks.cfg ks.cfg
[root@node1 test]# ls
a a1 a2 abc ao3 ks.cfg xyz
[root@localhost abc]# cp /home/laoyang/a.info .
cp: overwrite ‘./a.info’? y
[root@localhost abc]# ll
total 4
-rw-r--r--. 1 root root 71 Apr 15 15:23 a.info
drwxr-xr-x. 2 root root 6 Apr 15 15:09 xdir
drwxr-xr-x. 2 root root 6 Apr 15 15:09 ydir
drwxr-xr-x. 2 root root 6 Apr 15 15:09 zdir
ln
用于创建硬链接或软链接
ln
可以使用ll -i选项让ll答应文件的inode信息
[root@node1 ~]# cp /etc/profile ./
[root@node1 ~]# ll –i
创建硬链接,硬链接在删除原文件的时候,硬链接还是能打开删除的文件
[root@node1 ~]# ln profile ln1
创建软链接:让ln2纸箱profile,给profile创建软连接,相当于windows中的快捷方式,软连接不一样,在删除原文件后,软连接不能够打开源文件
[root@node1 ~]# ln -s profile ln2
#再次打印inode信息查看
[root@node1 ~]# ll -i
如果两个文件inode一样,表示两个文件(ln1和profile)实际上是同一个文件,硬连接。如果inode不一样,但是有ln2->profile,表示ln2是profile的软链接。
注意:ln1、ln2都不能提前创建,或是已经存在的文件,否则报错。
rm
rm用于删除文件
直接删除,需要确认yes
rm file
添加-f选项可以不用确认强制删除
[root@localhost ~]# ls
anaconda-ks.cfg ln1 ln2 profile
[root@localhost ~]# rm profile
rm: remove regular file ‘profile’? y
[root@localhost ~]# ls
anaconda-ks.cfg ln1 ln2
[root@localhost ~]# vim a.info
[root@localhost ~]# rm -f a.info
[root@localhost ~]# ll
total 8
-rw-------. 1 root root 1291 Apr 8 21:14 anaconda-ks.cfg
-rw-r--r--. 1 root root 1819 Apr 15 15:24 ln1
lrwxrwxrwx. 1 root root 7 Apr 15 15:27 ln2 -> profile
如果rm的参数是目录,则会提示需要迭代删除而不能成功
rm adir
[root@node1 ~]# ls
ln1 test x
[root@node1 ~]# rm x
rm: 无法删除"x": 是一个目录
#此时可以添加-r参数表示迭代删除
[root@node1 ~]# rm -r x
rm:是否进入目录"x"? y
rm:是否进入目录"x/y"? y
rm:是否删除目录 "x/y/z"?y
rm:是否删除普通文件 "x/y/anaconda-ks.cfg"?n
rm:是否删除目录 "x/y"?n
rm:是否删除目录 "x"?n
[root@node1 ~]# ls
ln1 test x
#也可以使用-rf选项,迭代强制删除某个文件或目录,此命令慎用。尤其是rm -rf /
[root@node1 ~]# rm -rf x
[root@node1 ~]# ls
ln1 test
[root@localhost ~]# mkdir x
[root@localhost ~]# cd x
[root@localhost x]# mkdir y
[root@localhost x]# cd y
[root@localhost y]# mkdir z
[root@localhost y]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 15 15:36 z
[root@localhost y]# cd ~
[root@localhost ~]# rm -r x
rm: descend into directory ‘x’? y
rm: descend into directory ‘x/y’? y
rm: remove directory ‘x/y/z’? y
rm: remove directory ‘x/y’? y
rm: remove directory ‘x’? y
[root@localhost ~]# ls
anaconda-ks.cfg ln1
[root@localhost ~]# mkdir x
[root@localhost ~]# cd x
[root@localhost x]# mkdir y
[root@localhost x]# cd y
[root@localhost y]# mkdir z
[root@localhost y]# cd z
[root@localhost z]# mkdir q
[root@localhost z]# cd~
-bash: cd~: command not found
[root@localhost z]# cd ~
[root@localhost ~]# rm -rf x
[root@localhost ~]# ls
anaconda-ks.cfg ln1
文件系统命令
虚拟目录树
虚拟目录树的各个目录用途
目录 | 用途 |
---|---|
/ | 虚拟目录的根目录。通常不会在这里存储文件 |
/bin | 二进制目录,存放许多用户级的GNU工具 |
/boot | 启动目录,存放启动文件 |
/dev | 设备目录,Linux在这里创建设备节点 |
/etc | 系统配置文件目录 |
/home | 主目录,Linux在这里创建用户目录 |
/lib | 库目录,存放系统和应用程序的库文件 |
/media | 媒体目录,可移动媒体设备的常用挂载点 |
/mnt | 挂载目录,另一个可移动媒体设备的常用挂载点 |
/opt | 可选目录,常用于存放第三方软件包和数据文件 |
/proc | 进程目录,存放现有硬件及当前继承的相关信息 |
/root | root用户的主目录 |
/sbin | 系统二进制目录,存放许多GNU管理员级工具 |
/srv | 服务目录,存放本地服务的相关文件 |
/sys | 系统目录,存放系统硬件信息的相关文件 |
/tmp | 临时目录,可以在该目录中创建和删除临时工作文件 |
/usr | 大量用户级的GNU工具和数据文件都存储在这里 |
/var | 可变目录,用以存放经常变化的文件,比如日志文件 |
注意:usr不是用户的意思,而是unix software resources的简写
df
查看系统挂载的磁盘情况
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 485840 0 485840 0% /dev
tmpfs 497848 0 497848 0% /dev/shm
tmpfs 497848 7848 490000 2% /run
tmpfs 497848 0 497848 0% /sys/fs/cgroup
/dev/mapper/centos-root 17811456 1521024 16290432 9% /
/dev/sda1 1038336 143516 894820 14% /boot
tmpfs 99572 0 99572 0% /run/user/0
以人能看懂的格式显示
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.5G 16G 9% /
/dev/sda1 1014M 141M 874M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
在linux中用到了虚拟目录树,它的存在就是为了解耦应用和底层存储。
mount
将光驱挂载到/mnt目录:
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# cd /mnt
[root@localhost mnt]# df -h
umount
卸载掉挂载的分区/mnt
[root@localhost mnt]# umount /mnt
注意卸载/mnt时,当前目录不能在/mnt下面,否则报出如下图所示提示:
#再次查看磁盘分区的挂载情况:
[root@node1 ~]# df -h
#重新挂载
[root@node1 ~]# mount /dev/cdrom /mnt
#再次查看
[root@node1 ~]# df -h
[root@localhost mnt]# cd ~
[root@localhost ~]# umount /mnt
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.5G 16G 9% /
/dev/sda1 1014M 141M 874M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.5G 16G 9% /
/dev/sda1 1014M 141M 874M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sr0 4.4G 4.4G 0 100% /mnt
系统操作命令
du
du可以为目录递归地汇总每个FILE的磁盘使用情况。
• du:文件系统的磁盘使用量或是目录使用量
ᅳ a :列出所有的文件与目录容量
ᅳ h :以人们较易读的容量格式(G/M)显示 重要
ᅳ s :列出总量而已,而不列出每个各别的目录占用容量
ᅳ k :以 KBytes 列出容量显示
ᅳ m :以 MBytes 列出容量显示
[root@node1 ~]# cd /usr
[root@node1 usr]# du
.......
0 ./etc
0 ./games
36 ./include/python2.7
36 ./include
24 ./libexec/getconf
16 ./libexec/awk
.......
#添加-s参数可以生成指定目录的汇总信息,也就是共占用多大的磁盘空间
[root@node1 usr]# du -s ./
1218820 ./
#添加-h参数可以显示为人类可以读懂的格式
[root@node1 usr]# du -sh ./
1.2G ./
#将路径写成./*统计当前目录下每项内容占用的磁盘空间信息
[root@node1 usr]# du -sh ./*
61M ./bin
0 ./etc
0 ./games
36K ./include
695M ./lib
126M ./lib64
12M ./libexec
0 ./local
43M ./sbin
256M ./share
0 ./src
0 ./tmp
stat
stat file :显示文件的元数据
change和modify的不同
modify指的是文件内容被修改的时间
change表示文件元数据被修改的时间
[root@localhost usr]# stat /etc/profileFile: ‘/etc/profile’Size: 1819 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 16778192 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:etc_t:s0
Access: 2025-04-15 10:47:07.458009573 +0800
Modify: 2020-04-01 12:29:31.000000000 +0800
Change: 2025-04-08 21:09:56.251985998 +0800Birth: -
history
查看历史命令
[root@node1 ~]# history1 clear2 pwd3 hostname4 vi /etc/hostname5 vi /etc/hosts6 ping node07 ping node1......
date
基本语法
date [OPTION]... [+FORMAT]
选项说明
选项 | 功能 |
---|---|
-d<时间字符串> | 显示指定的“时间字符串”表示的时间,而非当前时间 |
-s<日期时间> | 设置系统日期时间 |
参数说明
参数 | 功能 |
---|---|
<+日期时间格式> | 指定显示时使用的日期时间格式 |
获取当前时间
基本语法
命令 | 功能描述 |
---|---|
date | 显示当前时间 |
date +%Y | 显示当前的年份 |
date +%m | 显示当前月份 |
date +%d | 显示当前是哪一天 |
date "+%Y-%m-%d %H:%M:%S" | 显示年月日时分秒 |
案例演示:
[root@localhost usr]# date +%Y
2025
[root@localhost usr]# date +%m
04
[root@localhost usr]# date %d
date: invalid date ‘%d’
[root@localhost usr]# date +%d
15
[root@localhost usr]# date +%Y%m%d
20250415
[root@localhost usr]# date +%Y%m%d%H:%M:%S
2025041515:56:30
#指定时间的格式中出现空格是需要使用 ''或""括起来
[root@localhost usr]# # date +%Y%m%d %H:%M:%S
[root@localhost usr]# date +%Y%m%d %H:%M:%S
date: extra operand ‘%H:%M:%S’
Try 'date --help' for more information.
[root@localhost usr]# date '+%Y%m%d %H:%M:%S'
20250415 15:57:21
[root@localhost usr]# date "+%Y%m%d %H:%M:%S"
20250415 15:57:30
[root@localhost usr]# date "+%Y-%m-%d %H:%M:%S"
2025-04-15 15:57:47
获取非当前时间
[root@localhost usr]# date -d '1 days ago'
Mon Apr 14 15:59:04 CST 2025
[root@localhost usr]# date -d '-1 days ago'
Wed Apr 16 15:59:15 CST 2025
设置系统时间
基本语法
date -s 字符串时间
[root@node1 ~]# date -s "2021-08-18 09:36:43"
进程相关命令
ps
可以通过命令查看系统内进程信息
进程查看命令
ps(process status) :将某个时间点的程序运作情况截取下来
选项和参数
-
a :和输入终端(terminal) 关联的所有 process,通常与x一起使用,列出完整信息。
-
x :后台进程,通常与 a 这个参数一起使用,可列出较完整信息
-
u :有效使用者 (effective user) 相关的 process
常用组合
ps aux 观察系统所有的程序数据 (常用)
以下为各选项的含义
-
USER:该 process 属于那个使用者
-
PID :该 process 的程序标识符。
-
%CPU:该 process 使用掉的 CPU 资源百分比;
-
%MEM:该 process 所占用的物理内存百分比;
-
VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
-
RSS :该 process 占用的物理的内存量 (Kbytes)
-
TTY :该 process 是在那个终端机上面运作,若与终端机无关则显示 ?, 另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
-
STAT:该进程目前的状态,状态显示与ps -l 的 S 旗标相同 (R/S/D/T/Z)
-
START:该 process 被触发启动的时间;
-
TIME :该 process 实际使用 CPU 运作的时间。
-
COMMAND:该程序的实际命令为何?
kill
基本语法
kill [选项] 进程号 :通过进程号杀死进程(只会杀死进程号对应的一个进程)
killall 进程名称 :通过进程名称杀死进程,也支持通配符(杀死对应的一个或多个进程)
选项说明
选项 | 功能 |
---|---|
-15 | 表示让进程处理完善后的事情后关闭 |
-9 | 表示强迫进程立即停止 |
[root@localhost usr]# tail -f /etc/profile &
tail -f /etc/profile &
是一个组合命令,用于实时查看 /etc/profile
文件的最新内容,并将其运行在后台。
[root@localhost usr]# ps aux|grep tail
root 1968 0.0 0.0 108092 616 pts/0 S 16:23 0:00 tail -f /etc/profile
root 1970 0.0 0.0 112808 964 pts/0 S+ 16:24 0:00 grep --color=autotail
[root@localhost usr]# kill -9 1968
[root@localhost usr]# ps aux|grep tail
root 1972 0.0 0.0 112808 964 pts/0 R+ 16:24 0:00 grep --color=autotail
[1]+ Killed tail -f /etc/profile
pstree
基本语法
pstree [选项]
选项说明
选项 | 功能 |
---|---|
-p | 显示进程的PID |
-u | 显示进程的所属用户 |
[root@node1 ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]├─agetty├─auditd───{auditd}├─chronyd├─crond├─dbus-daemon├─irqbalance├─lvmetad├─master─┬─pickup│ └─qmgr├─polkitd───6*[{polkitd}]├─rsyslogd───2*[{rsyslogd}]├─sshd─┬─sshd───bash───pstree│ └─sshd───sftp-server├─systemd-journal├─systemd-logind├─systemd-udevd└─tuned───4*[{tuned}]
#最常用
[root@node1 ~]# pstree -p
systemd(1)─┬─NetworkManager(672)─┬─{NetworkManager}(689)│ └─{NetworkManager}(691)├─agetty(684)├─auditd(642)───{auditd}(643)├─chronyd(1100)├─crond(1087)├─dbus-daemon(668)├─irqbalance(675)├─lvmetad(521)├─master(990)─┬─pickup(991)│ └─qmgr(992)├─polkitd(665)─┬─{polkitd}(673)│ ├─{polkitd}(674)│ ├─{polkitd}(676)│ ├─{polkitd}(685)│ ├─{polkitd}(686)│ └─{polkitd}(687)├─rsyslogd(903)─┬─{rsyslogd}(912)│ └─{rsyslogd}(919)├─sshd(900)─┬─sshd(1219)───bash(1221)───pstree(1307)│ └─sshd(1222)───sftp-server(1238)├─systemd-journal(497)├─systemd-logind(666)├─systemd-udevd(530)└─tuned(899)─┬─{tuned}(1160)├─{tuned}(1161)├─{tuned}(1163)└─{tuned}(1164)
[root@node1 ~]# pstree -u
systemd─┬─NetworkManager───2*[{NetworkManager}]├─agetty├─auditd───{auditd}├─chronyd(chrony)├─crond├─dbus-daemon(dbus)├─irqbalance├─lvmetad├─master─┬─pickup(postfix)│ └─qmgr(postfix)├─polkitd(polkitd)───6*[{polkitd}]├─rsyslogd───2*[{rsyslogd}]├─sshd─┬─sshd───bash───pstree│ └─sshd───sftp-server├─systemd-journal├─systemd-logind├─systemd-udevd└─tuned───4*[{tuned}]
[root@node1 ~]# pstree -pu
systemd(1)─┬─NetworkManager(672)─┬─{NetworkManager}(689)│ └─{NetworkManager}(691)├─agetty(684)├─auditd(642)───{auditd}(643)├─chronyd(1100,chrony)├─crond(1087)├─dbus-daemon(668,dbus)├─irqbalance(675)├─lvmetad(521)├─master(990)─┬─pickup(991,postfix)│ └─qmgr(992,postfix)├─polkitd(665,polkitd)─┬─{polkitd}(673)│ ├─{polkitd}(674)│ ├─{polkitd}(676)│ ├─{polkitd}(685)│ ├─{polkitd}(686)│ └─{polkitd}(687)├─rsyslogd(903)─┬─{rsyslogd}(912)│ └─{rsyslogd}(919)├─sshd(900)─┬─sshd(1219)───bash(1221)───pstree(1309)│ └─sshd(1222)───sftp-server(1238)├─systemd-journal(497)├─systemd-logind(666)├─systemd-udevd(530)└─tuned(899)─┬─{tuned}(1160)├─{tuned}(1161)├─{tuned}(1163)└─{tuned}(1164)
top
基本命令
top [选项] [参数]
选项说明
选项 | 功能 |
---|---|
-d 正整数 | 指定top命令每隔几秒更新。默认是3秒 |
-i | 使top不显示任何闲置或者僵死进程。 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态。 |
操作说明
操作 | 功能 |
---|---|
P | 以CPU使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top命令模式 |
演示:执行如下命令后,可以按P、M、N对查询出的进程结果分别按照对应的列排序进行排序。
[root@localhost ~]# top -d 1
结果字段解释
第一行top和系统相关信息
结果字段 | 代表的含义 |
---|---|
top - 10:03:46 up | top命令的执行时间 |
1:15 | 系统从启动到目前经过了多长时间 |
1 user | 目前系统中登录一个用户 |
load average: 0.00, 0.01, 0.05 | 当前系统在最近1分钟、最近5分钟、最近15分钟的负载情况 |
第二行Tasks进程相关信息
结果字段 | 代表的含义 |
---|---|
Tasks: 104 total | 系统中的进程总数为104 |
1 running | 正在运行的进程数为1 |
103 sleeping | 睡眠的进程数为103 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程。如果不是0,需要手工检查僵尸进程 |
第三行为CPU信息
结果字段 | 代表的含义 |
---|---|
Cpu(s): 0.0%us | 用户模式占用的CPU百分比 |
0.0%sy | 系统模式占用的CPU百分比 |
0.0%ni | 改变过优先级的用户进程占用的CPU百分比 |
100%id | 空闲CPU的CPU百分比 |
0.0%wa | 等待输入/输出的进程的占用CPU百分比 |
0.0%hi | 硬中断请求服务占用的CPU百分比 |
0.0%si | 软中断请求服务占用的CPU百分比 |
0.0%st | st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。 |
第四行为物理内存信息
结果字段 | 代表的含义 |
---|---|
Mem: 995704total | 物理内存的总量,单位KB |
644548 free | 空闲的物理内存数量 |
138960 used | 已经使用的物理内存数量 |
212196 buffers | 作为缓冲的内存数量 |
第五行为交换分区(swap)信息
结果字段 | 代表的含义 |
---|---|
Swap: 2097148 total | 交换分区(虚拟内存)的总大小 |
2097148 free | 空闲交换分区的大小 |
0 used | 已经使用的交互分区的大小 |
709892 avail Mem | 作为缓存的交互分区的大小 |
netstat
基本语法
netstat [选项]
选项说明
选项 | 功能 |
---|---|
-a | 列出有在listen(监听)和非listen(未监听)的服务状态 |
-l | 仅列出有在listen(监听)的服务状态 |
-n | 拒绝显示别名,能显示数字的全部转化成数字 22 21 |
-p | 表示显示哪个进程在调用 |
常用命令组合
-
netstat -anp :查看进程网络信息
-
netstat -nlp :查看网络端口号占用情况
-
netstat -anp |grep 进程号 :查看该进程网络信息
-
netstat -nlp | grep 端口号 :查看该网络端口号占用情况
注意:centos7简易版安装后不带netstat命令,需要进行手动安装
!!!下载阿里云的Centos-7.repo文件 wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
重新加载yum
yum clean all
yum makecache
[root@node1 ~]# netstat -nlp
-bash: netstat: 未找到命令
[root@node1 ~]# yum install net-tools -y
安装net-tools后便可以使用了
设置定时任务
基本语法
crontab [选项]
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
实战:添加一个定时任务,每分钟记录一次系统当前时间。
[root@node2 ~]# crontab -l
no crontab for root
[root@node1 ~]# crontab -e
*/1 * * * * /bin/echo `date` >> /root/crontest.txt
[root@node1 ~]# systemctl restart crond #重启crond服务才会生效
[root@node2 ~]# crontab -l
*/1 * * * * /bin/echo `date` >> /root/crontest.txt
格式: ******命令
项目 | 含义 | 范围 |
---|---|---|
第一个“*” | 一小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号 | 含义 |
---|---|
* | 代表任何时间 |
, | 代表不连续的时间。比如“0 1,3,15 * * * 命令”,就代表在每天的1点0分,3点0分,15点0分都执行一次命令 |
- | 代表连续的时间范围。比如“0 8 * * 15 命令”,代表在周一到周五的8点0分执行命令 |
*/n | 代表每隔多久执行一次。比如“*/1 * * * * 命令”,代表每隔1分钟就执行一遍命令 |
特定时间执行命令
时间 | 含义 |
---|---|
10 0 * * * 命令 | 每天0点10分执行命令 |
0 18 * * 5 回老家命令 | 每周五 的18点0分执行回老家命令 |
0 0 5,15,25 * * 健身命令 | 每月5号、15、25号的0点0分执行健身命令 |
10 6 * * 1-5 起床命令 | 每周一到周五的6点10分执行起床命令 |
*/10 6 * * 1 起床命令 | 每周一的6点,每隔10分钟执行一次起床命令 |
查看定时任务的结果:
[root@node1 ~]# cat crontest.txt
2021年 08月 18日 星期三 11:01:01 CST
2021年 08月 18日 星期三 11:02:01 CST
2021年 08月 18日 星期三 11:03:02 CST
2021年 08月 18日 星期三 11:04:01 CST
2021年 08月 18日 星期三 11:05:01 CST
2021年 08月 18日 星期三 11:06:01 CST
[root@node2 ~]# crontab -l
*/1 * * * * /bin/echo `date` >> /root/crontest.txt
[root@node2 ~]# crontab -r
[root@node2 ~]# crontab -l
no crontab for root
虚拟机时间同步完善:
#查询ntpdate在什么地方
[root@node1 ~]# whereis ntpdate
ntpdate: /usr/sbin/ntpdate
[root@node1 ~]# crontab -e
#测试时使用1,测试没问题后改为5 每5分钟同步一次即可
*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
[root@node1 ~]# systemctl restart crond #重启crond服务才会生效
也可以使用如下方式:
[root@node1 ~]# vim /etc/ntp.conf
server ntp1.aliyun.com
server ntp2.aliyun.com
server ntp3.aliyun.com
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
[root@node1 ~]# systemctl restart ntpd
扩展:也可以chrony
#安装chrony
[root@node1 ~]# yum install chrony -y
#修改配置文件
[root@node1 ~]# vim /etc/chrony.conf
server ntp1.aliyun.com
server ntp2.aliyun.com
server ntp3.aliyun.com
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
[root@node1 ~]# systemctl restart chronyd
文本操作命令
touch
touch 已存在的文件,抹平各个时间
touch 不存在的文件,则创建文件
[root@node1 ~]# ll
总用量 4
-rw-------. 1 root root 1201 8月 17 01:33 anaconda-ks.cfg
[root@node1 ~]# touch anaconda-ks.cfg
[root@node1 ~]# ll
总用量 4
-rw-------. 1 root root 1201 8月 17 17:51 anaconda-ks.cfg
[root@node1 ~]# touch names.txt
[root@node1 ~]# ll
总用量 4
-rw-------. 1 root root 1201 8月 17 17:51 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 8月 17 17:51 names.txt
[root@node1 ~]# rm -f names.txt
cat
直接查看一个文件的内容可以使用cat,tac,nl这几个指令
cat是concatenate的缩写,其功能时间一个文件的内容连续的输出。该命令适合看行数较少的文件。另外,需要查看一般DOS文件时,可以通过-A选项来显示换行符和[tab]。
[root@node1 ~]# cat /etc/issue
tac(反向输出):
[root@node1 ~]# tac /etc/issue
与上面的cat命令进行比较,是由最后一行先显示。
tac功能与cat类似,但是是由文件最后一行反向连续输出到屏幕上。
nl(添加行号打印):
nl可以将输出的文件内容自动的加上行号。
head
格式:head [-n number] 文件
-
默认获取前10行(省略 -n number)
-
number>0,取出前面number行。
-
number<0,除了最后number行外的所有行。
tail
命令格式:tail [ -n number] 文件
选项与参数:
-n:后面接数字,代表显示几行的意思
-f:表示持续侦测后面文件内容的改变,知道按下Ctrl+c才会结束tail的侦测。
#默认情况下显示最后10行:
[root@node1 ~]# tail /etc/profile
#如果先要显示最后20行,就要如下:
[root@node1 ~]# tail -n 20 profile
#检测文件变化,一般用于边测试,边查看日志
[root@node1 ~]# tail -f profile
管道| !!!
管道左侧的输出作为右侧的输入
[root@node1 ~]# ps aux |grep ssh
[root@node1 ~]# yum list |grep mysql
如何显示文件中间的几行?
[root@node1 ~]# head -n 20 profile |tail -n 10
可以省略为:
[root@node1 ~]# head -20 profile |tail -10
#显示/etc/profile文件中包含if关键字的行
[root@node1 ~]# grep if /etc/profile
xargs!!
将前面输出作为后面命令的参数
echo "/" | xargs ls -l
数据重定向!!!
标准输入(stdin):编号为0
标准输出(stdout):编号为1
标准错误输出(stderr):编号为2
1>:以覆盖的方法,将正确的数据输出到文件;
1>>:以累加的方法,将正确的数据输出到文件;
2>:以覆盖的方法,将错误输出的数据输出到文件;
2>>:以累加的方法,将错误输出的数据输出到文件;
ls -l >> ok1.log
ls -l > ok2.log
ls hello 2>/root/err.log
ls hello / 1>/root/log.log 2>/root/err.log
ls 1>/dev/null
ls 2>/tmp/err.log
#既向控制台输出,也向文件写入
ls -l / | tee ok2.log
#tee命令,将输入分成两个输出
cut
cut:显示切割的行数据
- s:不显示没有分隔符的行
- d:指定分隔符对源文件的行进行分割
- -f 选定显示哪些列
-
m-n m列到n列
-
-n 第一列到n列
-
m- 第m列到最后一列
-
n 第n列
-
x,y,z获取第x,y,z列
sort
sort排序:字典序和数值序
-
- n:按数值排序
-
- r:倒序 reverse
-
- t:自定义分隔符
-
- k:选择排序列
-
- f:忽略大小写
sed !!
sed:行编辑器
sed [选项] 'AddressCommand' file…
[选项]
-
-i:直接修改源文件
-
-r:表示使用扩展正则表达式
'AddressCommand'
-
d:删除符合条件的行
-
a\string:在指定的行后追加新行,内容为string
-
i\string:在指定行前添加新行,内容是string
-
s/string1/string2/:查找并替换,默认只替换每行第一次模式匹配到的字符串
-
g:行内全局替换
-
i:忽略大小写
-
\(\) \1\2
-
vi/vim编辑器的使用!!!
模式切换相关
-
i 进入编辑模式
-
a 在选定字符后插入字符
-
o 在当前行下添加新行
-
O 在当前行上添加新行
-
I 在当前行首进入编辑模式
-
A 在当前行末进入编辑模式
-
ESC 退出编辑模式
-
: 末行模式
-
ESC,ESC 退出末行模式
-
ZZ 在命令模式保存并退出编辑器
-
:wq 保存并退出编辑器
-
:w 保存编辑器内容
-
:q! 不保存退出编辑器
移动光标
-
h左j下k上l右
-
w 移动到下一个单词的词首
-
e:跳至当前或下一个单词的词尾
-
b:跳至当前或下一个单词的词首
-
0:绝对行首
-
^:行首的第一个非空白字符
-
$:绝对行尾
-
G:文档末尾
-
3G:第三行
-
gg:文档开头
翻页
-
ctrl-f 向下翻页 forward
-
ctrl-b 向上翻页 backward
删除替换
-
x:删除光标位置字符
-
3x:删除光标开始3个字符
-
r:替换光标位置字符
-
dw 删除单词
-
dd 删除整行
-
D:删除光标所在位置到行尾
复制粘贴
-
yw 复制单词
-
yy 复制1行
-
nyy 复制n行,n是数字
-
p 粘贴 paste P
撤销与重做
-
u:撤销 undo
-
ctrl+r:重做 操作结束后使用u退回到上次操作,则ctrl+r重做
-
. 重复上一步操作
set:设置
:set nu number 显示行号
:set nonu nunumber 取消行号的显示
:set readonly 设置只读
查找
-
:/after 向下查找
-
n 下一个,N 上一个
-
-
?向上查找
-
:! 执行命令
查找并替换
-
s/str1/str2/gi
-
/:临近s的第一个为边界字符:/ @ #(为了防止内容和边界字符重复,可以使用@和#做边界字符)
-
g:一行内全部替换
-
i:忽略大小写
-
末行操作
-
.:当前光标行
-
+n:偏移n行
-
$:末尾行,$-3
-
%:全文
-
:%d 删除全文
-
:.,$-1d 从当前行删除到倒数第二行
-
:.,+3d 从当前行再往下数三行删除
-
:.,13d 从当前行到第13行删除
文件压缩与打包
压缩:指通过某些算法,将文件尺寸进行相应的缩小,同时不损失文件的内容。 比如:zip、gzip、tar
打包:指将多个文件(或目录)合并成一个文件,方便传递或部署。比如:tar
zip与unzip
zip [选项] XXX.zip 将要压缩的内容 :压缩文件和目录的命令
选项说明
-
-r 压缩目录
unzip [选项] XXX.zip :解压缩文件
选项说明
-
-d <目录> 指定解压后文件的存放目录
注意:zip 压缩命令在window/linux都通用,可以压缩目录且保留源文件。
gzip和gunzip
gzip 文件 :压缩文件,只能将文件压缩为*.gz文件
gunzip 文件.gz :解压缩文件命令
注意:
(1)只能压缩文件不能压缩目录
(2)不保留原来的文件
tar
压缩文件或打包文件常见的扩展名: *.tar.gz, *.tar.bz2;linux系统一般文件的扩展名用途不大,但是压缩或打包文件的扩展名是必须的,因为linux支持的压缩命令较多,不同的压缩技术使用的压缩算法区别较大,根据扩展名能够使用对应的解压算法。
常见文件扩展名:
-
*.tar.gz tar程序打包的文件,并且经过 gzip 的压缩
-
*.tar.bz2 tar程序打包的文件,并且经过 bzip2 的压缩
tar命令,选项与参数:
-
-c :建立打包文件,
-
-t :查看打包文件的内容含有哪些文件
-
-x :解打包或解压缩的功能,可以搭配-C(大写)在特定到特定目录解开
-
-j :通过bzip2的支持进行压缩/解压缩:此时文件最好为 *.tar.bz2
-
-z :通过gzip的支持进行压缩/解压缩:此时文件最好为 *.tar.gz
-
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来
-
-f filename:-f 后面跟处理后文件的全名称(路径+文件名+后缀名)
-
-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个 选项
-
-p :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
-
注意 -c, -t, -x 不可同时出现在一串指令列中
打包与压缩:
tar –zcvf [/路径/]filename.tar.gz 被压缩的文件或目录
tar –jcvf [/路径/] filename.tar.bz2 被压缩的文件或目录
#将/etc目录下的所有文件打包并压缩/tmp/part1/tar/etc01.tar.gz #将/etc目录下的所有文件打包并压缩/tmp/part1/tar/etc02tar.bz2
查询:
tar –ztvf [/路径/] filename.tar.gz
tar –jtvf [/路径/] filename.tar.bz2
备份:
tar –zpcv –f [/路径/]filename.tar.gz 被备份文件或目录
tar –jpcv –f [/路径/]filename.tar.bz2 被备份文件或目录
解压到当前目录:
tar –jxv –f [/路径/] filename.tar.bz2
tar –zxv –f [/路径/] filename.tar.gz
解压到指定目录:
tar -jxv -f [/路径/] filename.tar.bz2 –C 指定目录
tar -zxv -f [/路径/] filename.tar.gz -C 指定目录
注意:filename前带路径表示该路径下的,反之表示当前目录下