linux常见指令

基本命令

命令入门

命令提示符详解

bash 复制代码
[root@localhost ~]#     #/root
[gtjin@localhost ~]$     #/home/gtjin
[root@node1 ~]#     #/root

用户名@主机名 当前目录 #系统权限 $普通用户

命令格式

命令 选项 参数(三者之间要有空格,区分大小写)

command -options args

args :参数(多个参数之间用空格分隔)

案例演示

bash 复制代码
[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

bash 复制代码
[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中的多个目录都包含该可执行文件,则执行最先找到的。

bash 复制代码
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

如果找不到,则提示命令不识别

ls

ls命令用于列出目录内容

ls

添加-l 以长格式输出,列出根目录下内容的详细列表

ls -l

也可以后面跟多个目录,列出多个目录的内容

ls / /usr

也可以通过命令的别名列出详细列表

bash 复制代码
[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
bash 复制代码
ll
ls -a
ls -a -l
ls -al

pwd

打印当前工作目录路径

bash 复制代码
[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

bash 复制代码
#如果cd后什么都不写,表示直接回当前用户家目录
cd 
cd /etc
#cd后跟波浪线,也表示回用户家目录
cd ~
#cd后也可以跟减号(-)用以表示回到最后一次切换之前的目录,多次使用减号在最近两个目录之间切换
cd /etc/sysconfig/network-scritps
cd  -
#root用户可以直接通过绝对路径进到普通用户的家目录
cd /home/god
cd ..
ll
#也可以直接跟波浪线用户名表示直接进入到某个用户的家目录
cd ~bjsxt 到用户bjsxt家中去,root不受限制
bash 复制代码
[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用于创建目录

bash 复制代码
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
bash 复制代码
[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 文件... 目标目录

拷贝文件...到目标目录,可以同时拷贝多个文件,文件名之间用空格隔开

bash 复制代码
[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]# 
bash 复制代码
[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 目录 目标目录

拷贝目录到目标目录

bash 复制代码
[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 目标目录

bash 复制代码
[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/:
y

x/y:
anaconda-ks.cfg  z

x/y/z:

Linux中没有专门改名的命令,mv兼职改名工作:

bash 复制代码
[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
bash 复制代码
[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信息

bash 复制代码
[root@node1 ~]# cp /etc/profile ./
[root@node1 ~]# ll --i

创建硬链接,硬链接在删除原文件的时候,硬链接还是能打开删除的文件

bash 复制代码
[root@node1 ~]# ln profile  ln1

创建软链接:让ln2纸箱profile,给profile创建软连接,相当于windows中的快捷方式,软连接不一样,在删除原文件后,软连接不能够打开源文件

bash 复制代码
[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选项可以不用确认强制删除

bash 复制代码
[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的参数是目录,则会提示需要迭代删除而不能成功

bash 复制代码
rm adir
bash 复制代码
[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
bash 复制代码
[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

查看系统挂载的磁盘情况

bash 复制代码
[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

以人能看懂的格式显示

bash 复制代码
[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目录:

bash 复制代码
[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

bash 复制代码
[root@localhost mnt]# umount /mnt

注意卸载/mnt时,当前目录不能在/mnt下面,否则报出如下图所示提示:

bash 复制代码
#再次查看磁盘分区的挂载情况:
[root@node1 ~]# df -h
#重新挂载
[root@node1 ~]# mount /dev/cdrom /mnt
#再次查看
[root@node1 ~]# df -h
bash 复制代码
[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 列出容量显示

bash 复制代码
[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表示文件元数据被修改的时间

bash 复制代码
[root@localhost usr]# stat /etc/profile
  File: '/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 +0800
 Birth: -

history

查看历史命令

bash 复制代码
[root@node1 ~]# history
    1  clear
    2  pwd
    3  hostname
    4  vi /etc/hostname
    5  vi /etc/hosts
    6  ping node0
    7  ping node1
    ......

date

基本语法

date OPTION... +FORMAT

选项说明

选项 功能
-d<时间字符串> 显示指定的"时间字符串"表示的时间,而非当前时间
-s<日期时间> 设置系统日期时间

参数说明

参数 功能
<+日期时间格式> 指定显示时使用的日期时间格式

获取当前时间

基本语法

命令 功能描述
date 显示当前时间
date +%Y 显示当前的年份
date +%m 显示当前月份
date +%d 显示当前是哪一天
date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒

案例演示:

bash 复制代码
[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

获取非当前时间

bash 复制代码
[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 字符串时间

bash 复制代码
[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 表示强迫进程立即停止
bash 复制代码
[root@localhost usr]# tail -f /etc/profile &

tail -f /etc/profile & 是一个组合命令,用于实时查看 /etc/profile 文件的最新内容,并将其运行在后台。

bash 复制代码
[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对查询出的进程结果分别按照对应的列排序进行排序。

bash 复制代码
[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 -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前带路径表示该路径下的,反之表示当前目录下

相关推荐
用户9718356334662 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪4 小时前
linux 拷贝文件或目录到指定的位置
linux
大树8820 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠20 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质20 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush420 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52020 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz20 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工21 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智21 小时前
ARP代理--工作原理
运维·网络·arp·arp代理