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 ![](https://i-blog.csdnimg.cn/direct/3563620892374fa09444a7495301b215.png) 在这里可以查看相关的介绍 ### echo ![](https://i-blog.csdnimg.cn/direct/1ff9361eacae40efa3e87a6418d7f44f.png) ```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 ``` ![](https://i-blog.csdnimg.cn/direct/f2652b1033524ed9a142a0c82cc91acc.png) 如果两个文件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 ``` ## 文件系统命令 ### 虚拟目录树 ![](https://i-blog.csdnimg.cn/direct/af8a65a8678a46e2ac4a27e9cda4e9cd.png) 虚拟目录树的各个目录用途 | 目录 | 用途 | |--------|-------------------------| | / | 虚拟目录的根目录。通常不会在这里存储文件 | | /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下面,否则报出如下图所示提示: ![](https://i-blog.csdnimg.cn/direct/655722a093a641eda465325a9a0dc1fd.png) ```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前带路径表示该路径下的,反之表示当前目录下

相关推荐
cocologin1 小时前
RIP 技术深度解析
运维·网络·网络协议
cv高级工程师YKY1 小时前
SRE - - PV、UV、VV、IP详解及区别
大数据·服务器·uv
庸子1 小时前
基于Jenkins和Kubernetes构建DevOps自动化运维管理平台
运维·kubernetes·jenkins
Lpy25691 小时前
Docker Desktop 安装到D盘(包括镜像下载等)+ 汉化
运维·docker·容器
眠修2 小时前
Kuberrnetes 服务发布
linux·运维·服务器
好奇的菜鸟2 小时前
Docker 配置项详解与示例
运维·docker·容器
xcs194053 小时前
集运维 麒麟桌面版v10 sp1 2403 aarch64 离线java开发环境自动化安装
运维·自动化
BAOYUCompany3 小时前
暴雨服务器成功中标华中科技大学集成电路学院服务器采购项目
运维·服务器
超龄超能程序猿3 小时前
Bitvisse SSH Client 安装配置文档
运维·ssh·github
奈斯ing4 小时前
【Redis篇】数据库架构演进中Redis缓存的技术必然性—高并发场景下穿透、击穿、雪崩的体系化解决方案
运维·redis·缓存·数据库架构