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前带路径表示该路径下的,反之表示当前目录下

相关推荐
π大星星️3 小时前
基于LNMP架构的个人博客系统部署
服务器·架构
孙克旭_6 小时前
PXE_Kickstart_无人值守自动化安装系统
linux·运维·自动化
皓月盈江7 小时前
Linux电脑本机使用小皮面板集成环境开发调试WEB项目
linux·php·web开发·phpstudy·小皮面板·集成环境·www.xp.cn
深井冰水7 小时前
mac M2能安装的虚拟机和linux系统系统
linux·macos
leoufung8 小时前
内核内存锁定机制与用户空间内存锁定的交互分析
linux·kernel
π大星星️8 小时前
HAProxy + Keepalived + Nginx 高可用负载均衡系统
运维·nginx·负载均衡
菜菜why9 小时前
AutoDL租用服务器教程
服务器
IT专业服务商9 小时前
联想 SR550 服务器,配置 RAID 5教程!
运维·服务器·windows·microsoft·硬件架构
忧虑的乌龟蛋9 小时前
嵌入式Linux I2C驱动开发详解
linux·驱动开发·嵌入式·iic·i2c·读数据·写数据
I_Scholar10 小时前
OPENSSL-1.1.1的使用及注意事项
linux·ssl