一些经常使用的linux命令

 1.使用wget,却无法解析主机地址
//1.进入/etc/resolv.conf
vim /etc/resolv.conf

//2.修改或增加内容:
nameserver 8.8.8.8
//3.保存退出
:wq

2.永久禁用IPv6

#所有网卡禁用IPv6

#1.编辑/etc/sysctl.conf文件,在文件中增加一行,内容为:net.ipv6.conf.all.disable_ipv6 = 1

vim /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1

#2.运行命令,使得/etc/sysctl.conf 更改生效:

sudo sysctl -p /etc/sysctl.conf

#3.编辑/etc/hosts文件,注释或删除掉ipv6相关的行

vim /etc/hosts
#内容大致如下:

# The following lines are desirable for IPv6 capable hosts

#::1     localhost ip6-localhost ip6-loopback

3.防火墙相关

#查看80端口是否开启

firewall-cmd --query-port=80/tcp

#查看80端口被谁占用:

netstat -lnp|grep 80

#开启80端口

firewall-cmd --add-port=80/tcp --permanent # --permanent 永久生效,没有此参数重启后失效

#关闭80端口

firewall-cmd --remove-port=80/tcp --permanent # --permanent 永久生效,没有此参数重启后失效

#firewalld的基本使用
#启动: 
systemctl start firewalld

#查看状态: 
systemctl status firewalld

#停止: 
systemctl disable firewalld

#禁用: 
systemctl stop firewalld

#永久关闭
vim /etc/sysconfig/selinux
vim /etc/selinux/config

#把SELINUX=enforcing 改为 SELINUX=disabled
SELINUX=disabled

#临时关闭SELinux
setenforce 0
getenforce

4.查看linux版本

uname -a

#查看linux版本   
cat /proc/version

#查看centos版本    
cat /etc/redhat-release

5.查找php.ini配置文件位置

find / -name php.ini

#查看php版本
php -v

#启动程序
systemctl start|status|restart nginx.service|mysqld| php-fpm.service

6.mysql相关

#进入mysql
mysql -u root -p

#修改密码: 
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';

#获取数据库初始密码 
grep 'temporary password' /var/log/mysqld.log

7。重启一下网络服务  

service network restart | /etc/init.d/network restart

8.DNS配置文件相关

#DNS配置文件 
vi /etc/resolv.conf 
nameserver 8.8.8.8

#修改配置文件:

vim /etc/sysconfig/network-scripts/ifcfg-eth0
#设置网卡获得ip地址的方式
BOOTPROTO="static" 

#只有网卡设置成static时,才需要此字段
IPADDR="192.168.23.131" 

9.文件相关

#将目录A重命名为B: 
mv A B

#将/a目录移动到/b下,并重命名为c: 
mv /a /b/c

10.telnet :

#查看端口是否通畅   telnet IP 端口号,如:
telnet 10.150.159.71 5516

#查看本机是否开启某个端口:netstat -an |findstr "端口号"  或 netstat -na |find "端口号"
netstat -an |findstr "端口号" 
#或者
netstat -na |find "端口号"

11.用户相关

#创建用户:useradd  用户名 
useradd nginx

12.使用 df -h 指令查看一下磁盘空间的使用情况

一些经常使用的linux命令_第1张图片

可以看到,现在挂载的磁盘空间为92G,用了75G,还剩12G

清理磁盘空间

1.清理apt软件包缓存 

//查看apt缓存有多大
du -sh /var/cache/apt/archives

//清理apt缓存
sudo apt clean

//清理旧版本的软件缓存
sudo apt-get autoclean

//清理所有软件缓存
sudo apt-get clean

//删除系统不再使用的孤立软件
sudo apt-get autoremove

2.清理日志文件

//日志文件会变得越来越大,我们可以用ncdu工具来查看大日志文件
//安装ncdu工具
sudo apt install ncdu
//查看日志文件
sudo ncdu /var/log

一些经常使用的linux命令_第2张图片

 上图发现,journal总共占用了4.1G的硬盘空间,而journal又是什么文件呢?

systemd-journald是一个改进型日志管理服务,可以收集来自内核、系统早期启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。

该日志服务仅仅把日志集中保存在单一结构的日志文件/run/log中,由于日志是经历过压缩和格式化的二进制数据,所以在查看和定位的时候很迅速。

默认情况下并不会持久化保存日志,只会保留一个月的日志。另外,一些rsyslog无法收集的日志也会被journal记录到

清空 /var/log/journal 文件的方法

//1.只保留近一周的日志
journalctl --vacuum-time=1w

//2.只保留500MB的日志
journalctl --vacuum-size=500M

//3.直接删除 /var/log/journal/ 目录下的日志文件
rm -rf /var/log/journal/f9d400c5e1e8c3a8209e990d887d4ac1

13.find [PATH] [option] [action]

# 与时间有关的参数:
-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
-newer file : 列出比file还要新的文件名
# 例如:
find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件

# 与用户或用户组名有关的参数:
-user name : 列出文件所有者为name的文件
-group name : 列出文件所属用户组为name的文件
-uid n : 列出文件所有者为用户ID为n的文件
-gid n : 列出文件所属用户组为用户组ID为n的文件
# 例如:
find /home/oop -user oop # 在目录/home/oop中找出所有者为oop的文件

# 与文件权限及名称有关的参数:
-name filename :找出文件名为filename的文件
-size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件
-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、
             目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
-perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
-perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示
-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示
# 例如:
find / -name passwd # 查找文件名为passwd的文件
find . -perm 0755 # 查找当前目录中文件权限的0755的文件
find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte
#liunx 服务器上面查找文件
#find 目录 -name 文件名
find / -name httpd.conf

14.ls 命令,展示文件夹内内容

-a :全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来~ 
-A :全部的档案,连同隐藏档,但不包括 . 与 .. 这两个目录,一起列出来~ 
-d :仅列出目录本身,而不是列出目录内的档案数据 
-f :直接列出结果,而不进行排序 (ls 预设会以档名排序!) 
-F :根据档案、目录等信息,给予附加数据结构,例如: 
*:代表可执行档; /:代表目录; =:代表 socket 档案; |:代表 FIFO 档案; 
-h :将档案容量以人类较易读的方式(例如 GB, KB 等等)列出来; 
-i :列出 inode 位置,而非列出档案属性; 
-l :长数据串行出,包含档案的属性等等数据; 
-n :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在账号管理提到!) 
-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小; 
-R :连同子目录内容一起列出来; 
-S :以档案容量大小排序! 
-t :依时间排序 
--color=never :不要依据档案特性给予颜色显示; 
--color=always :显示颜色 
--color=auto :让系统自行依据设定来判断是否给予颜色 
--full-time :以完整时间模式 (包含年、月、日、时、分) 输出 
--time={atime,ctime} :输出 access 时间或 改变权限属性时间 (ctime) 
而非内容变更时间 (modification time)  
   
例如:
ls [-aAdfFhilRS] 目录名称 
ls [--color={none,auto,always}] 目录名称 
ls [--full-time] 目录名称  

15.cd 命令

cd /root/home # 切换到目录/root/home
cd ./path          # 切换到当前目录下的path目录中,“.”表示当前目录  
cd ../path         # 切换到上层目录中的path目录中,“..”表示上一层目录

16.tree命令,显示树形的层级目录结构,非原生命令,需要安装tree

root@zph-IdeaCentre-GeekPro-14IOB:/usr/local/node/bin# tree
.
├── corepack -> ../lib/node_modules/corepack/dist/corepack.js
├── node
├── npm -> ../lib/node_modules/npm/bin/npm-cli.js
└── npx -> ../lib/node_modules/npm/bin/npx-cli.js

0 directories, 4 files

17.cp 命令,复制

-a :将文件的特性一起复制
-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
-i :若目标文件已经存在时,在覆盖时会先询问操作的进行
-r :递归持续复制,用于目录的复制行为
-u :目标文件与源文件有差异时才会复制

18.rm命令, 删除

-f :就是force的意思,忽略不存在的文件,不会出现警告消息
-i :互动模式,在删除前会询问用户是否操作
-r :递归删除,最常用于目录删除,它是一个非常危险的参数

19.mv命令,移动文件

-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件已经存在,就会询问是否覆盖
-u :若目标文件已经存在,且比目标文件新,才会更新

20.pwd命令,查看”当前工作目录“的完整路径

pwd -P # 显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径

21.tar命令,压缩解压: tar [OPTION...] [FILE]...

-c :新建打包文件
-t :查看打包文件的内容含有哪些文件名
-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j :通过bzip2的支持进行压缩/解压缩
-z :通过gzip的支持进行压缩/解压缩
-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename :filename为要处理的文件
-C dir :指定压缩/解压缩的目录dir

1). tar -cf test.tar * 把当前目录下所有的文件打包(压)成名为 test.tar 的包

-c 表示产生新的包,-f 指定包的文件名,也可以单独指定文件名

[root@localhost test]# tar -cf test.tar *
[root@localhost test]# ll
total 24
-rw-r--r-- 1 root root    13 Jul 16 14:15 test1.txt
-rw-r--r-- 1 root root    13 Jul 16 14:18 test2.txt
-rw-r--r-- 1 root root    13 Jul 16 14:18 test3.txt
-rw-r--r-- 1 root root 10240 Jul 16 14:19 test.tar

 2).tar -tf test.tar 查看tar包的所有文件

-t 表示列出文件

[root@localhost test]# tar -tf test.tar
test1.txt
test2.txt
test3.txt

 3).tar -rf test.tar test4.txt 将test4.tx文件增加到包里面去

-r 表示增加文件

[root@localhost test]# tar -rf test.tar test4.txt
[root@localhost test]# tar -tf test.tar
test1.txt
test2.txt
test3.txt
test4.txt

 4).tar -uf test.tar test5.txt 更新包中test5.txt文件

-u 表示更新文件

[root@localhost test]# tar -tvf test.tar
-rw-r--r-- root/root         0 2023-02-23 14:44 test5.txt
[root@localhost test]# tar -uf test.tar test5.txt
[root@localhost test]# tar -tvf test.tar
-rw-r--r-- root/root        50 023-02-23 14:54 test5.txt

 5).tar -xvf test.tar 解开tar包并显示过程

-x表示解开文件,-v表示显示过程

[root@localhost tse]# tar -xvf test.tar
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt

 6).tar -xvf test.tar -C test2 解开tar包到指定目录

 -C(大写C)表示解开到目录,后接路径

[root@localhost test]# tar -xvf test.tar -C test2 
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt

 7).tar -zcvf test2.tar.gz test2 打包并调用gzip压缩成test2.tar.gz

-z表示调用gzip来压缩tar包

[root@localhost test]# tar -zcvf test2.tar.gz test2
test2/
test2/test1.txt
test2/test2.txt
test2/test3.txt

8).tar -zxvf test1.tar.gz 调用gzip解压test1.tar.gz

[root@localhost test]# tar -zxvf test1.tar.gz
test2/
test2/test1.txt
test2/test2.txt
test2/test3.txt
test2/test4.txt

9). tar -zcvf test3.tar.gz test3.txt --remove-file test3.txt 将test3.txt打包test3.tar.gz后,并删test3.txt 

--remove-file 表示打包后删除源文件

[root@localhost test]# tar -zcvf test3.tar.gz test3.txt --remove-file test3.txt
test3.txt
test3.txt
[root@localhost test]# ll
-rw-r--r-- 1 root root   147 Jul 16 15:27 test3.tar.gz

 22.mkdir命令,创建目录

mkdir [选项]... 目录... 
 -m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask
 -p, --parents  可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录; 
 -v, --verbose  每次创建新目录都显示信息
#递归创建目录
mkdir -p a/b/c/d/e/f/g

23.rmdir 命令,删除目录

rmdir [选项]... 目录...
-p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。 
-v --verbose  显示指令执行过程 

24.gzip 命令,压缩文件或文件夹为 .gz文件

gzip[参数][文件或者目录]
-a 或 --ascii  使用ASCII文字模式。 
-c 或 --stdout or --to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。 
-d 或 --decompress or ----uncompress  解开压缩文件。 
-f 或 --force  强行压缩文件。不理会文件名称 or 硬连接是否存在以及该文件是否为符号连接。 
-h 或 --help  在线帮助。 
-l 或 --list  列出压缩文件的相关信息。 
-L 或 --license  显示版本与版权信息。 
-n 或 --no-name  压缩文件时,不保存原来的文件名称及时间戳记。 
-N 或 --name  压缩文件时,保存原来的文件名称及时间戳记。 
-q 或 --quiet  不显示警告信息。 
-r 或 --recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
-S<压缩字尾字符串> 或 ----suffix<压缩字尾字符串>  更改压缩字尾字符串。 
-t 或 --test  测试压缩文件是否正确无误。 
-v 或 --verbose  显示指令执行过程。 
-V 或 --version  显示版本信息。 
-num 用指定的数字num调整压缩的速度,
-1 或 --fast表示最快压缩方法(低压缩比),
-9 或 --best表示最慢压缩方法(高压缩比)。系统缺省值为6。

注意:

  • gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件
  • 压缩后会删除源文件
  • 压缩后文件的后缀格式是 .gz
  • 该命令还支持解压缩
  • 该命令不需要指定压缩包名
  • 该命令常用的选项有 -d-l-r-v 等

1).压缩当前目录下的所有文件

压缩当前目录下的所有文件可以使用通配符 *,但如果有目录则不会进行压缩

2).压缩指定文件

# 语法
gzip 待压缩文件
# 示例,压缩 log.txt,压缩后的文件为 log.txt.gz
gzip log.txt

3).压缩指定目录下的文件

gzip 命令是不会压缩整个目录的,只会压缩目录下的所有文件

# 语法
gzip -r 待压缩目录
# 示例
gzip -r test/

4).解压缩指定压缩文件

当有一个 .gz 格式的压缩文件时,同样可以使用该命令进行解压缩

# 语法
gzip -d 压缩文件名
# 示例
gzip -d log.txt.zip

5).显示命令执行过程

可以加上 -v 选项显示该命令的执行过程

6).显示压缩包内容

可以使用 -l 选项查看压缩包内容

# 语法
gzip -l 压缩包名
# 示例
gzip -l log.txt.gz

7). 打包压缩命令

   见Linux 打包压缩命令     

25.ps 命令,显示运行的进程

还会显示进程的一些信息如pid, cpu和内存使用情况

-A :所有的进程均显示出来
-a :不与terminal有关的所有进程
-u :有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息
-l :较长,较详细地将PID的信息列出
root@zph-IdeaCentre-GeekPro-14IOB:/usr/local/node# ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0 167808 11384 ?        Ss   2月20   0:09 /sbin/init s
root           2  0.0  0.0      0     0 ?        S    2月20   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   2月20   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   2月20   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   2月20   0:00 [netns]
root           7  0.0  0.0      0     0 ?        I<   2月20   0:00 [kworker/0:0
root           9  0.0  0.0      0     0 ?        I<   2月20   0:00 [mm_percpu_w
root          10  0.0  0.0      0     0 ?        S    2月20   0:00 [rcu_tasks_r
root          11  0.0  0.0      0     0 ?        S    2月20   0:00 [rcu_tasks_t
root          12  0.0  0.0      0     0 ?        S    2月20   0:03 [ksoftirqd/0

26.kill 命令,用于终止进程

kill -signal PID
1:SIGHUP,启动被终止的进程
2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
9:SIGKILL,强制中断一个进程的进行
15:SIGTERM,以正常的结束进程方式来终止进程
17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行

27.killall 命令

killall [-iIe] [command name]
-i :交互式的意思,若需要删除时,会询问用户
-e :表示后面接的command name要一致,但command name不能超过15个字符
-I :命令名称忽略大小写
# 例如:
killall -SIGHUP syslogd # 重新启动syslogd

28. crontab命令,启动linux定时任务的服务 

service crontab start # 启动crontab
service crontab stop # 停止cronjcrontabob
service crontab restart #  重启crontab
crontab -e # 编辑cronjob任务
#crontab安装
yum install crontabs

#服务操作说明
service crond start   ## 启动服务 
service crond stop    ## 关闭服务 
service crond restart ## 重启服务
配置说明、实例
命令:*   *    *   *   *   command  

解释:分  时  日  月  周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示    

第2列表示小时0~23(0表示0点)

第3列表示日期1~31  

第4列表示月份1~12  

第5列标识号星期0~6(0表示星期天)  

第6列要运行的命令

配置实例:

先打开定时任务所在的文件:
crontab -e
 
每分钟执行一次date命令 
*/1 * * * * date >> /root/date.txt
每晚的21:30重启apache。 
30 21 * * * service httpd restart
每月1、10、22日的4 : 45重启apache。  
45 4 1,10,22 * * service httpd restart
 
每周六、周日的1 : 10重启apache。 
10 1 * * 6,0 service httpd restart
每天18 : 00至23 : 00之间每隔30分钟重启apache。
0,30   18-23    *   *   *   service httpd restart
晚上11点到早上7点之间,每隔一小时重启apache
*  23-7/1    *   *   *   service httpd restart

29.free 命令

用于显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer 

free [参数]
-b  以Byte为单位显示内存使用情况
-k  以KB为单位显示内存使用情况 
-m  以MB为单位显示内存使用情况
-g   以GB为单位显示内存使用情况 
-o  不显示缓冲区调节列。
-s<间隔秒数>  持续观察内存使用状况。
-t  显示内存总和列
-V  显示版本信息
root@zph-IdeaCentre-GeekPro-14IOB:/usr/local/node# free
              总计         已用        空闲      共享    缓冲/缓存    可用
内存:    16161940     9699136     1329400      407640     5133404     5760432
交换:     2097148     1000704     1096444

 30.top 命令

Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

top [参数]
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数
top -c

top - 16:02:09 up 4 days,  6:51,  1 user,  load average: 6.40, 4.94, 3.32
任务: 539 total,   2 running, 536 sleeping,   0 stopped,   1 zombie
%Cpu(s): 30.5 us,  1.8 sy,  0.0 ni, 67.3 id,  0.0 wa,  0.0 hi,  0.4 si,  0.0 st
MiB Mem :  15783.1 total,   1273.0 free,   9492.0 used,   5018.1 buff/cache
MiB Swap:   2048.0 total,   1070.7 free,    977.2 used.   5601.3 avail Mem 

 进程号 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND                                                                                                                             
 760839 zph       20   0   24.6g 429276 121640 R 443.8   2.7  82:23.84 /opt/google/chrome/chrome - 
   4005 zph       20   0 7596312 653604 239700 S  18.8   4.0 557:22.79 /usr/bin/gnome-shell                                                                                                                
   1682 systemd+  20   0 1618608  91028  25384 S   6.2   0.6  30:24.86 mongod --auth --bind_ip_all                                                                                                         
   3803 root      20   0  856616 544188 260484 S   6.2   3.4 107:17.94 /usr/lib/xorg/Xorg vt2            
   4503 zph       20   0   16.9g 326228 176316 S   6.2   2.0  46:50.37 /opt/google/chrome/chrome --enable-crashpad                                                                                         
   5408 zph       20   0 3712516  79276  64240 S   6.2   0.5 254:36.72 /usr/local/sunlogin/bin/sunloginclient                                                                                              
   6076 zph       20   0   10.8g 261724  76936 S   6.2   1.6 785:18.46 /opt/有道云笔记/ynote-desktop 
 799287 root      20   0   15768   4660   3552 R   6.2   0.0   0:00.01 top -c                                                                                                                              
      1 root      20   0  167808  11384   7888 S   0.0   0.1   0:09.98 /sbin/init splash                                                                                                                   
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.15 [kthreadd]   

 31.chmod命令,修改文件权限​​​​​​​

chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令

有两种形式:字符形式和数字形式

r、w、x权限字符可分别表示为八进制数字4、2、1,表示一个权限组合时需要将数字进行累加

 Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他

 举例说明:文件所有者-文件所属组-其他用户
 (1)rwx:采用累加数字形式可表示为 7 ;
 (2)r-x:可表示为 5;
 (3)rwxr-xr-x:由三个权限段组成,因此可以表示成 755

命令语法:  

        chmod [-cfvR] [–help] [–version] mode file…

参数 :
mode : 权限设定字串,格式如下 : [ugoa…][[±=][rwxX]…][,…],其中
u 表示该档案的拥有者

g 表示与该档案的拥有者属于同一个群体(group)者

o 表示其他以外的人

a 表示这三者皆是。

+ 表示增加权限

- 表示取消权限

= 表示唯一设定权限
r 表示可读取

w 表示可写入

x 表示可执行

X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行
-c 若该档案权限确实已经更改,才显示其更改动作
-f 若该档案权限无法被更改也不要显示错误讯息
-v 显示权限变更的详细资料
-R 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help 显示辅助说明
–version 显示版本

范例 :
#将档案 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
#将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
#将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
#将 ex1.py 设定为只有该档案拥有者可以执行 :
chmod u+x ex1.py
#将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *
#此外chmod也可以用数字来表示权限如 chmod 777 file
#语法为:chmod abc file
#其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
#r=4,w=2,x=1
#若要rwx属性则4+2+1=7;
#若要rw-属性则4+2=6;
#若要r-x属性则4+1=7。
范例:
chmod a=rwx file 和 chmod 777 file 效果相同
chmod ug=rwx,o=x file 和 chmod 771 file 效果相同
-rw------- (600) – 只有属主有读写权限。
-rw-r–r-- (644) – 只有属主有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) – 只有属主有读、写、执行权限。
-rwxr-xr-x (755) – 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx–x–x (711) – 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) – 所有用户都有文件读、写权限。这种做法不可取。
-rwxrwxrwx (777) – 所有用户都有读、写、执行权限。更不可取的做法

32.chown命令,改变文件所有者 

chown [OPTION]... [OWNER][:[GROUP]] FILE...

chown [OPTION]... --reference=RFILE FILE...

改变每个文件的属主和/或属组。如果只给定了一个属主(一个用户名或用户ID),每个文件的属主会被配置成这个用户,但是属组不变。如果属主后边加上冒号和组名(或组ID),属组也会被修改。如果冒号后边没有指定组名,修改的属组为用户的登录组。如果只有冒号和组名,但没有用户名,chown的功能与chgrp一致。如果只有一个冒号,或者为空,属主和属组都不会修改

选项
        改变属主和/或属组。使用--reference,改变FILE的属主和属组为RFILE

-c, --changes

                类似-v,但是只在发生改变时展示信息

-f, --silent, --quiet

                折叠大部分错误消息

-v, --verbose

                为每个操作的文件输出诊断信息

--dereference

                对每个软链接的所指生效(这是默认值),而不是软链接本身

-h, --no-dereference

                对软链接生效,而不是指向的文件(只在能改变软链接所属的系统中有效)

--from=CURRENT_OWNER:CURRENT_GROUP

                只对当前的属主和属组匹配的文件生效。可以省略其中一个,在这种情况下,省                    略的属性不需要匹配

--no-preserve-root

                不特殊处理 '/' (默认)

--preserve-root

                无法对 '/' 进行递归操作

-R, --recursive

                递归操作文件和目录

                当指定了 -R 选项时,以下选项修改层次结构的遍历方式。如果指定多于一个选项,只有最后一个生效

-H        如果一个命令行参数是目录的软链接,就遍历它

-L        遍历每一个软链接到遇到的目录

-P        不遍历任何软链接(默认)

--help           展示帮助文档并退出

--version       输出版本信息并退出 

[root@server dir]# ll
总用量 20
-rwxr-xr-x 2 root root  363 12月  2 16:36 a
lrwxrwxrwx 2 root root    4 12月  2 13:54 dir1 -> dir2
drwxr-xr-x 2 root root 4096 12月  2 14:08 dir2
drwxr-xr-x 3 root root 4096 12月  1 16:11 dir3
lrwxrwxrwx 2 root root    4 12月  2 13:54 dir4 -> dir2
-rwxr-xr-x 1 root root    4 12月  1 18:08 file2
-rwxr-xr-x 1 root root    0 11月 28 15:12 file3
-rwxr-xr-x 1 root root    0 11月 29 14:41 file4
-rwxr-xr-x 1 root root  164 11月 28 16:41 file.zip
 
## 配置属主为test
[root@server dir]# chown test file2
[root@server dir]# ll
总用量 20
-rwxr-xr-x 2 root root  363 12月  2 16:36 a
lrwxrwxrwx 2 root root    4 12月  2 13:54 dir1 -> dir2
drwxr-xr-x 2 root root 4096 12月  2 14:08 dir2
drwxr-xr-x 3 root root 4096 12月  1 16:11 dir3
lrwxrwxrwx 2 root root    4 12月  2 13:54 dir4 -> dir2
-rwxr-xr-x 1 test root    4 12月  1 18:08 file2
-rwxr-xr-x 1 root root    0 11月 28 15:12 file3
-rwxr-xr-x 1 root root    0 11月 29 14:41 file4
-rwxr-xr-x 1 root root  164 11月 28 16:41 file.zip
 
## 配置属主和属组为test
[root@server dir]# chown test:test file3
[root@server dir]# ll
总用量 20
-rwxr-xr-x 2 root root  363 12月  2 16:36 a
lrwxrwxrwx 2 root root    4 12月  2 13:54 dir1 -> dir2
drwxr-xr-x 2 root root 4096 12月  2 14:08 dir2
drwxr-xr-x 3 root root 4096 12月  1 16:11 dir3
lrwxrwxrwx 2 root root    4 12月  2 13:54 dir4 -> dir2
-rwxr-xr-x 1 test root    4 12月  1 18:08 file2
-rwxr-xr-x 1 test test    0 11月 28 15:12 file3
-rwxr-xr-x 1 root root    0 11月 29 14:41 file4
-rwxr-xr-x 1 root root  164 11月 28 16:41 file.zip
 
## 配置dir目录下的所有文件的属主为test
[root@server dir]# chown -R test ~/dir
[root@server dir]# ll
总用量 20
-rwxr-xr-x 2 test root  363 12月  2 16:36 a
lrwxrwxrwx 2 test root    4 12月  2 13:54 dir1 -> dir2
drwxr-xr-x 2 test root 4096 12月  2 14:08 dir2
drwxr-xr-x 3 test root 4096 12月  1 16:11 dir3
lrwxrwxrwx 2 test root    4 12月  2 13:54 dir4 -> dir2
-rwxr-xr-x 1 test root    4 12月  1 18:08 file2
-rwxr-xr-x 1 test test    0 11月 28 15:12 file3
-rwxr-xr-x 1 test root    0 11月 29 14:41 file4
-rwxr-xr-x 1 test root  164 11月 28 16:41 file.zip

 33.chgrp命令,修改文件(或目录)的所属组

chgrp :change group" 的缩写

格式:

        chgrp [选项] group filename

        group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组

参数:

  • -c或–changes 效果类似”-v”参数,但仅回报更改的部分
  • -f或–quiet或–silent  不显示错误信息
  • -h或–no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件
  • -R或–recursive  递归处理,将指定目录下的所有文件及子目录一并处理
  • -v或–verbose  显示指令执行过程
  • –help  在线帮助
  • –reference=<参考文件或目录>  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同
  • –version  显示版本信息
#改变/opt/local/node/及其子目录下的所有文件的属组为node
chgrp - R node /opt/local/node

34.useradd 命令,建立用户账号

用法:useradd [选项] 登录
      useradd -D
      useradd -D [选项]
选项:
  -b, --base-dir BASE_DIR        新账户的主目录的基目录
  -c, --comment COMMENT         新账户的 GECOS 字段
  -d, --home-dir HOME_DIR       新账户的主目录
  -D, --defaults                显示或更改默认的 useradd 配置
  -e, --expiredate EXPIRE_DATE  新账户的过期日期
  -f, --inactive INACTIVE       新账户的密码不活动期
  -g, --gid GROUP                新账户主组的名称或 ID
  -G, --groups GROUPS            新账户的附加组列表
  -h, --help                    显示此帮助信息并推出
  -k, --skel SKEL_DIR            使用此目录作为骨架目录
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -l, --no-log-init                不要将此用户添加到最近登录和登录失败数据库
  -m, --create-home                创建用户的主目录
  -M, --no-create-home            不创建用户的主目录
  -N, --no-user-group            不创建同名的组
  -o, --non-unique                允许使用重复的 UID 创建用户
  -p, --password PASSWORD        加密后的新账户密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL                新账户的登录 shell
  -u, --uid UID                    新账户的用户 ID
  -U, --user-group                创建与用户同名的组
  -Z, --selinux-user SEUSER        为 SELinux 用户映射使用指定 SEUSER

#使用示例:
#useradd {username}:简单创建一个新用户 
[root@server home]# useradd test
[root@server home]# ll
总用量 4
drwx------ 2 test test 4096 12月 13 11:33 test
[root@server ~]# tail -1 /etc/passwd
test:x:1000:1000::/home/test:/bin/bash
 
# useradd -g {groupname} {username}:指定组
[root@server home]# groupadd test
[root@server home]# useradd -g test test
[root@server home]# groups test
test : test
 
#useradd -d {home_dir} {username}:指定家目录
[root@server ~]# useradd -d /home/aaa test
[root@server ~]# cd /home/
[root@server home]# ll
总用量 4
drwx------ 2 test test 4096 12月 13 14:40 aaa
[root@server ~]# tail -1 /etc/passwd
test:x:1000:1000::/home/aaa:/bin/bash
#useradd -r {username}:创建系统用户
[root@server ~]# useradd -r test
[root@server ~]# tail -1 /etc/passwd
test:x:997:995::/home/test:/bin/bash
# id 为小于1000的数
 
#useradd {username} -u id:指定id
[root@server ~]# useradd test -u 37
[root@server ~]# tail -1 /etc/passwd
test:x:37:1000::/home/test:/bin/bash
 
#useradd {username} -s {shell}:指定shell
[root@server ~]# useradd test -s /sbin/nologin
[root@server ~]# tail -1 /etc/passwd
test:x:1000:1000::/home/test:/sbin/nologin
 

35.usermod命令,修改用户信息

usermod(user modify)命令是系统管理员命令,用于修改用户账号 

usermod 可用来修改用户账号的各项设定,通过修改系统账号文件让命令行指定的变化生效

用法:

        usermod [OPTIONS] LOGIN

OPTIONS:

-a, --append        将用户添加到补充组。仅与 -G 选项一起使用
-c, --comment        添加备信息
-d, --home HOME_DIR         用户的新主目录
-e, --expiredate EXPIRE_DATE        设定帐户过期的日期
-f, --inactive INACTIVE        过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP        强制使用 GROUP 为新主组
-G, --groups GROUPS        新的附加组列表 GROUPS
-a, --append GROUP          将用户追加至上边 -G 中提到的附加组中,并不从其它组中删除此用户
-h, --help        显示此帮助信息并推出
-l, --login LOGIN         新的登录名称
-L, --lock        锁定用户帐号
-m, --move-home        将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique        允许使用重复的(非唯一的) UID
-p, --password PASSWORD        将加密过的密码 (PASSWORD) 设为新密码
-s, --shell SHELL        该用户帐号的新登录 shell
-u, --uid UID        用户帐号的新 UID
-U, --unlock        解锁用户帐号
-Z, --selinux-user  SEUSER        用户账户的新 SELinux 用户映射

//使用案例
#修改用户的家目录
usermod -d /home/tom tom

#改变用户的 uid
usermod -u 888 tom

#修改用户名为 mary
usermod -l mary tom

#锁定 mary 用户
usermod -L mary

#解锁 mary 用户
usermod -U mary

#添加新的附加组
usermod -G new mary

#修改用户登录 Shell
usermod -s /bin/sh mary

#修改用户的 GID
usermod -g 1003 mary

#指定帐号过期日期
usermod -e 2024-12-31 mary

#指定用户帐号密码过期多少天后,禁用该帐号
usermod -f 3 mary

36.userdel命令,删除用户

userdel [options] LOGIN
-f # 强制删除,包括用户的一切相关内容,这个参数是危险的参数,不建议大家使用
-r # 删除用户的家目录和用户的邮件池

37. groupadd命令,将新组加入系统

用法:groupadd [选项] 组

选项:
  -f, --force                    如果组已经存在则成功退出
                                并且如果 GID 已经存在则取消 -g
  -g, --gid GID                 为新组使用 GID
  -h, --help                    显示此帮助信息并推出
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -o, --non-unique              允许创建有重复 GID 的组
  -p, --password PASSWORD       为新组使用此加密过的密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录

#把test添加到用户组
[root@server ~]# groupadd test
[root@server ~]# tail -1 /etc/group
test:x:1000:

#groupadd -g 指定组ID
[root@server ~]# groupadd -g 500 test
[root@server ~]# tail -1 /etc/group
test:x:500:

 /etc/group 是linux系统中记录用户组信息的文件

38.groupdel命令,删除组 

#用于删除不再需要的组,如果指定的组中包含用户,则必须先删除组里面的用户>以后,才能删除组
groupdel [options] GROUP

39.sudo命令,用来以其他身份来执行命令,预设的身份为root 

如果是普通用户,想要执行管理员才有权限的命令,那么大概有以下三种途径:

  1. 通过su - root 命令切换为root用户,这时必须知道root的密码(可能造成root用户的泄露)
  2. 把自己加入到root 组中
  3. 通过配置/etc/sudoers把自己加入到sudo中

40.passwd,设置用户的密码 

用法:#passwd [OPTION…]

参数    参数说明
-k, --keep-tokens    更新只能发送在过期之后
-d, --delete    删除密码(root only)
-l, --lock    停止账号使用(root only)
-u, --unlock    启用已被停止的账户(root only)
-e, --expire    强迫用户下次登录时必须修改口令(root only)
-f, --force    强制执行
-x, --maximum=DAYS    指定口令最长存活期(root only)
-n, --minimum=DAYS    指定口令最短存活期(root only)
-w, --warning=DAYS    口令要到期提前警告的天数(root only)
-i, --inactive=DAYS    口令过期后多少天停用账户(root only)
-S, --status    显示密码信息(root only)
–stdin    从stdin读取新密码(root only)
-?, --help    显示帮助信息
–usage    显示简短的使用信息

1).获取命令帮助

oot@zph-IdeaCentre-GeekPro-14IOB:/usr/local/node# passwd --help
用法:passwd [选项] [登录]

选项:
  -a, --all                     报告所有帐户的密码状态
  -d, --delete                  删除指定帐户的密码
  -e, --expire                  强制使指定帐户的密码过期
  -h, --help                    显示此帮助信息并推出
  -k, --keep-tokens             仅在过期后修改密码
  -i, --inactive INACTIVE       密码过期后设置密码不活动为 INACTIVE
  -l, --lock                    锁定指定的帐户
  -n, --mindays MIN_DAYS        设置到下次修改密码所须等待的最短天数
                                为 MIN_DAYS
  -q, --quiet                   安静模式
  -r, --repository REPOSITORY   在 REPOSITORY 库中改变密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -S, --status                  报告指定帐户密码的状态
  -u, --unlock                  解锁被指定帐户
  -w, --warndays WARN_DAYS      设置过期警告天数为 WARN_DAYS
  -x, --maxdays MAX_DAYS        设置到下次修改密码所须等待的最多天数
                                为 MAX_DAYS

2).passwd修改普通用户密码

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# passwd
Changing password for user wuhs.
Changing password for wuhs.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

3).显示账户密码相关信息

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# passwd -S zph
zph P 03/17/2022 0 99999 7 -1

4).使用root修改普通用户密码

使用root可以修改普通用户密码且不需要知道原密码,不满足密码策略要求也可以修改成功,普通用户修改自己密码必须知道原密码,新密码必须满足密码策略规则要求

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph#  passwd zph
Changing password for user zph.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

5).删除指定账户密码

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# passwd -d zph
Removing password for user zph.
passwd: Success
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# passwd -S zph
zph NP 2022-01-02 0 99999 7 -1 (Empty password.)

6).锁定用户

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# passwd -l zph
Locking password for user zph.
passwd: Success
#使用-l锁定用户后普通用户切换登录会密码验证失败
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# su - zph
Password:
su: Authentication failure

7).解锁用户

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# passwd -u zph
Unlocking password for user zph.
passwd: Success
#使用-u解锁后登录成功
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# su - zph
Password:
Last login: Sun Jan 2 14:41:30 CST 2023 on pts/1
Last failed login: Sun Jan 2 14:43:00 CST 2023 on pts/1
There were 3 failed login attempts since the last successful login.

8).强制用户下次登录时必须修改口令

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# passwd -e zph
Expiring password for user zph.
passwd: Success

9).设置用户wuhs密码过期策略

#设置密码有效期30天,密码过期7天后必须修改密码
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# passwd -x 30 -n 7 -i 7 zph
Adjusting aging data for user zph.
passwd: Success
#使用cat /etc/shadow查看密码过期策略配置,默认是最小有效期0天,最大有效期99999天,口令到期提前7天告警,无密码到期后强制修改要求

10).密码过期后更新密码

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# passwd -k zph
Changing password for user zph.
Changing password for zph.
(current) UNIX password:
You must wait longer to change your password
passwd: Authentication token manipulation error

11).使用stdin方式修改密码

#使用passwd user方式修改密码需要确认密码,在脚本操作中处理很困难,我们可以通过stdin参数修改密码,可以一次完成密码设置或修改。
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# echo “123456” | passwd --stdin zph
Changing password for user zph.
passwd: all authentication tokens updated successfully.

41.groups命令,显示用户所属组

#groups 用户名: 查询用户账号所属的组
root@zph-IdeaCentre-GeekPro-14IOB:/usr/local/node# groups zph
zph : zph adm cdrom sudo dip plugdev lpadmin lxd sambashare
#id 用户名:查询用户账号的身份标识
root@zph-IdeaCentre-GeekPro-14IOB:/usr/local/node# id zph
用户id=1000(zph) 组id=1000(zph) 组=1000(zph),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),132(lxd),133(sambashare)
#who  查看当前主机的用户登录情况
root@zph-IdeaCentre-GeekPro-14IOB:/usr/local/node# who
zph      :1           2023-02-20 09:12 (:1)

42.vi/vim命令,使用vi编辑器

vi命令有三种模式:一般模式,编辑模式,命令模式(底行模式)

        可以通过 vi [文件路径]文件名 的命令启动vi,并且打开指定的文件进行查看、编辑,其中[文件路径] 是可选参数。如果省略了前面的文件路径,则vi会在当前目录下查到指定的文件。

    跟touch命令一样,如果文件不存在,vi还会自动创建文件。当然创建文件的前提还是要有相关的操作权限

1.一般模式

一般模式是vi的默认模式,启动vi后,默认会进入到一般模式。在这个模式下可以进行复制、剪切、粘贴、删除等操作

(1).移动光标 

1).以字符为单位移动光标

正如在windows操作系统下的上、下、左、右四个按键,vi命令也是可以使用这四个按键操作光标进行上、下、左、右的移动。同时vi还有其他四个按键也拥有同样的功能

按键 功能说明
h 使光标向左移动一个字符
j 使光标向下移动一个字符
k 使光标向上移动一个字符
l 使光标向右移动一个字符

2).以单词为单位移动光标

vi会以空格或者其他一些符号为分隔符,使用这些快捷键,可以让光标快速定位到单词的开头或者结尾

按键 功能说明
w 快速将光标移动到下一个单词的第一个字母
再按一次该按键光标会跳到下一个单词的第一个字母
e 快速将光标移动到光标所在位置的单词的最后一个字母
再按一次该按键光标会跳到下一个单词的最后一个字母
b 快速将光标移动到光标当前所在位置的单词的第一个字母
再按一次该按键光标会跳到上一个单词的第一个字母

3).以行为单位移动光标

以行为单位,让光标在整个文档随意上下跳转

按键 功能说明
^ 英文输入法状态下,按住键盘的shift + 数字键6
跟正则表达式的功能一样,该按键会将光标快速定位到光标所在行的行首
$ 英文输入法状态下,按住键盘的shift + 数字键4
跟正则表达式的功能一样,该按钮会将光标快速定位到光标所在行的行尾
[n]G n为阿拉伯数字,表示的是行号,G则一定是大写状态下的G键。
如:15G,光标会快速跳转到文档的第15行
CTRL + g ctrl 键 + 小写字母g
该功能是显示光标当前所在的位置,处于文档的第几行第几列

4).以页为单位移动光标

其实这里理解为翻页可能会更好一些,但是为了方便记忆,暂且先归为按页跳转

按键 功能说明
CTRL + d: 向下滚动半页,助记(d:down)
CTRL + u: 向上滚动半页,助记(u:up)
CTRL + f : 向下滚动一页,助记(f:front)
CTRL + b: 向上滚动一页,助记(b:back)

5).以文档为单位移动光标

直接就是跳到文档的开头和结尾了

按键 功能说明
gg 小写字母状态下连续按两次g键
光标会马上跳转到文档的首行
G 大写字母状态下按G键
光标会马上跳到文档的最后一行

(2).复制功能

复制功能的关键按钮是 "y"键,再结合上面移动光标的功能,构造出来的结合键,就是一些功能强大的复制功能。

1).以单词为单位进行复制

    使用”y“键,再跟”以单词为单位移动光标“,构造出来的组合键,就是跟单词相关的复制功能。

按键 功能说明
yw 复制光标所在位置,直到下一个单词开头的内容
ye 复制光标所在位置,直到当前单词结尾(或者下一个单词结尾)的内容
yb 复制光标所在位置,直到当前单词开头(或者前一个单词开头)的内容

2).以行为单位进行复制

    使用”y“键,再跟”以行为单位移动光标“,构造出来的组合键,就是跟单词相关的复制功能

按键 功能说明
y^ 先按下y键,输入 ^ 将光标跳转到行首
该组合键会复制光标当前所在位置,直到本行最开头的内容
y$ 先按下y键,输入 $将光标跳转到行尾
该组合键会复制光标当前所在位置,直到本行最后面的内容
[n]yy n为可选参数,可以是任意阿拉伯数字,意思是要复制多少行,只输入yy则会复制一行
如:3yy,则代表复制光标当前所在行,连同往下数的2行进行复制

(3).剪切(删除)功能

剪切功能的关键按键是”d“键,再结合上面移动光标的功能,构造出来的结合键,就是一些功能强大的剪切功能

    提醒一下,剪切功能就是把原来的内容”装“到剪切板,然后将原来的内容”删除“。剪切后不粘贴,那么剪切功能也可以当作是删除功能来使用的。

1).以单词为单位进行剪切(删除)

    使用”d“键,再跟”以单词为单位移动光标“,构造出来的组合键,就是跟单词相关的复制功能。

按键 功能说明
dw 剪切光标所在位置,直到下一个单词开头的内容
de 剪切光标所在位置,直到当前单词结尾(或者下一个单词结尾)的内容
db 剪切光标所在位置,直到当前单词开头(或者前一个单词开头)的内容

2).以行为单位进行剪切(删除)

使用”d“键,再跟”以行为单位移动光标“,构造出来的组合键,就是跟单词相关的复制功能。

按键 功能说明
d^ 先按下d键,输入 ^ 将光标跳转到行首
该组合键会剪切(删除)光标当前所在位置,直到本行最开头的内容
d$ 先按下d键,输入 $将光标跳转到行尾
该组合键会剪切(删除)光标当前所在位置,直到本行最后面的内容
[n]dd

n为可选参数,可以是任意阿拉伯数字,意思是要复制多少行,只输入dd则会剪切(删除)一行
如:6dd,则代表复制光标当前所在行,连同往下数的5行进行剪切(删除)

(4).粘贴功能

粘贴功能就是小写字母”p“键,和大写字母”P“键,但是如果复制、剪切的内容不一样,实现起来也会有点不一样。

1).以单词为单位粘贴

按键 功能说明
p 小写字母p
光标当前所在位置之后,粘贴出前复制、剪切的内容
P 大写字母P
光标当前所在位置之前,粘贴出前复制、剪切的内容

2).以行为单位粘贴

按键 功能说明
p 小写字母p
光标当前所在行的内容不动,在光标所以行的下一行开始插入复制的内容
P 大写字母P
光标当前所在行的内容会往下移,跟在粘贴出来的内容后面

(5).删除补充

删除功能还有小写字母”x“键,还有大写字母”X“键。除以上面写到的按行进行删除外,vi也有类似于windows记事本的按字符删除的功能,跟退格键、Del键一样的功能。

按键 功能说明
[n]x 小写字母x
n为可选参数,若忽略参数n,则x键的功能就是windows记事本软件下的退格键
如:6x, 直接删除光标所在位置及后面5个字符
[n]X 大写字母x
n为可选参数,若忽略参数n,则X键的功能就是windows记事本软件下的Del键
如:8X,直接删除光标所在位置及前面7个字符

(6).重写功能

重写功能的关键按钮是 小写字母"r"键和大写字母”R“键。重写功能就是将原来的内容覆盖了,用新的内容代替了原来的内容。

按键 功能说明
r 小写字母r
先按下r键,再输入新内容,则新内容只会将光标当前所在位置的内容替换
R 大写字母R
跟windows系统下的Word文档下,按下Ins(insert)键一样。
只要不断地输入内容,光标所在位置及后面已有的内容都会被替换,需要按Esc键主动退出

(7).撤回功能

    撤回功能只有一个按键,通过小写字母”u“按钮,可以撤回前面对文档的修改

2.编辑模式

进入编辑模式后,vi的操作就跟平常在windows系统下使用记事本工具差不多了。从一般模式进入编辑模式,有以下几个按键可以选择,不同的按钮,也有不同的效果

按键 功能说明
a 小写字母a
在光标所在位置后面进行编辑
i 小写字母i
在光标当前所在位置进行编辑
o 小写字母o
光标所在行的下面插入空白行,同时光标移动到新插入的空白行
A 大写字母A
光标移动到当前所在行的最后面进行编辑
I 大写字母I
光标移动到光前所在行的最前面进行编辑
O 大写字母O
在光标所在行插入新的空白行,光标停留在新行,光标所以行的内容所部住下移动

3.命令模式(底行模式)

命令模式下可以进行保存、退出、查找 、替换等工作

(1).保存、退出

按键 功能说明
:w 保存对文档的修改但不退出
:wq 保存对文档的修改修改并退出
:q! 放充对文档的修改并强行退出

(2).查找

按键 功能说明
/ 从光标所在位置,向下查找,查找到第一个匹配的内容即停止
可以通过按键”n“继续向下查找,或者通过按钮”N“向上进行反向查找
? 从光标所在位置,向上查找,查找到第一个匹配的内容即停止
可以通过按键”n“继续向上查找,或者通过按钮”N“向下进行反向查找

(3).替换

按键 功能说明
s/old_string/new_string 将光标所在行第一次匹配到的字符串old_string,替换为新的字符串new_string
s/old_string/new_string/g 将光标所在行所有匹配到的字符串old_string,替换为新的字符串new_string
%s/old_string/new_string 将整个文档所有行第一次匹配到的字符串old_string,替换为新的字符串new_string
%s/old_string/new_string/g 将整个文档所有能匹配到的字符串old_string,替换为新的字符串new_string

(4).其他功能

按键 功能说明
:set nu 显示行号
:set nonu 取消显示行号
:n 快速跳转到文档的第n行

命令模式无法直接进入到编辑模式,同样编辑模式也无法直接进入到命令模式。编辑模式,或者命令模式,通过ESC键可以切换到一般模式,然后再通过输入对应的命令进入到编辑模式或者命令模式 

43. cat,接文件或标准输入并打印

这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用

cat [选项] [文件]...
-A, --show-all           等价于 -vET
-b, --number-nonblank    对非空输出行编号
-e                       等价于 -vE
-E, --show-ends          在每行结束处显示 $
-n, --number     对输出的所有行编号,由1开始对所有输出的行数编号
-s, --squeeze-blank  有连续两行以上的空白行,就代换为一行的空白行 
-t                       与 -vT 等价
-T, --show-tabs          将跳格字符显示为 ^I
-u                       (被忽略)
-v, --show-nonprinting   使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

(1).一次显示整个文件

root@zph-IdeaCentre-GeekPro-14IOB:/home# cat test.txt 
111

(2).从键盘创建一个文件

只能创建新文件,不能编辑已有文件

root@zph-IdeaCentre-GeekPro-14IOB:/home# cat >  test2.txt
<

(3).将几个文件合并为一个文件

#把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
root@zph-IdeaCentre-GeekPro-14IOB:/home# cat -n linuxfile1 > linuxfile2 

#把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到linuxfile3 里
root@zph-IdeaCentre-GeekPro-14IOB:/home# cat -b linuxfile1 linuxfile2 >> linuxfile3 

#把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
root@zph-IdeaCentre-GeekPro-14IOB:/home# cat -n linuxfile1 > linuxfile2

#把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到 linuxfile3 里
root@zph-IdeaCentre-GeekPro-14IOB:/home# cat -b linuxfile1 linuxfile2 >> linuxfile3

#此为清空/etc/test.txt档案内容
root@zph-IdeaCentre-GeekPro-14IOB:/home# cat /dev/null > /etc/test.txt 

(4).查看文件前 3

 | 把前面的执行结构给后端

cat file1 | head -3

(5).查看文件后 3

cat file1 | tail -3
#查找文件里面内容 找到 httpd.conf 里面有 listen
cat httpd.conf | grep listen
cat httpd.conf | grep -ignore listen 
#或者
cat httpd.conf | grep -i listen 忽略大小写

43.more 命令,查看文件里的内容

和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能

命令 more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]

命令参数

+n 从第n行开始显示。
-n 定义屏幕大小为n行。
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符。
-p 通过清屏的形式来换页,与-c选项类似。
-s 把连续的多个空行显示为一行。
-u 把文件中的下划线去掉。

常用操作命令

Enter    向下n行,需要定义。默认为1行
Ctrl+F   向下滚动一屏
空格键  向下滚动一屏
Ctrl+B  返回上一屏
=       输出当前行的行号
:f     输出文件名和当前行的行号
V      调用vi编辑器
!命令   调用Shell,并执行命令 
q       退出more

#显示文件中从第3行起的内容
root@zph-IdeaCentre-GeekPro-14IOB:/home/git# more +3 rumenz.txt

#从文件中查找第一个出现3333字符串的行,并从前两行开始显示
root@zph-IdeaCentre-GeekPro-14IOB:/home/git# more +/3333 rumenz.txt

#设定每屏显示5行
root@zph-IdeaCentre-GeekPro-14IOB:/home/git# more -5 rumenz.txt

#列一个目录下的文件,内容太多,可以使用more来分页显示
root@zph-IdeaCentre-GeekPro-14IOB:/home/git# ls -l | more -5

44.less命令,与more命令的用法相似,主要用来浏览文件内容

不同于more命令的是,less命令可往回卷动浏览以看过的部分,less的用法比起more更加的有弹性。在more的时候,我们并没有办法向前面翻,只能往后面看,more启动时会加载整个文件,而且less在查看之前不会加载整个文件.但若使用了less时,就可以使用 [pageup] [pagedown]等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在less里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜,  

命令

less [参数] 文件 

命令参数

  • Down arrow,Enter,e,或者j --向前移动一行
  • Up arrow,y或k -- 向后移动一行
  • Space bar 要么 f – 前进一页
  • b – 向后移动一页
  • /pattern – 向前搜索匹配的模式
  • ?pattern – 向后搜索匹配的模式
  • n – 重复上一个搜索
  • N – 反向重复先前的搜索
  • g – 转到文件的第一行
  • Ng – 转到文件中的第N行
  • G – 转到文件的最后一行
  • p – 转到文件开头
  • Np – 进入文件的N%
  • h – 显示帮助
  • q – 退出less

全屏导航
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
单行导航
j - 向前移动一行
k - 向后移动一行
其它导航
G - 移动到最后一行
g - 移动到第一行
q / ZZ - 退出 less 命令 

#查看文件
-> less rumenz.txt

#ps查看进程信息并通过less分页显示
-> ps -ef | less

#查看命令历史使用记录并通过less分页显示
-> history | less

#浏览多个文件,输入:n后,切换到 1.txt 输入:p后,切换到 2.txt
-> less 1.txt 2.txt

#搜索功能
-> less /入门 rumenz.txt
#n – 向前查找下一个匹配的文本
#N – 向后查找前一个匹配的文本

45.tail 命令 

tail 命令是 head 命令的补充,它读取并打印文件中的最后 N 行,如果没有任何命令选项,它将打印文本文件中的最后 10 行,常用于动态文件的查看

语法

tail [ -f ] [ -c Number | -n Number | -m Number| -b Number | -k Number ] [ File ] 

参数说明:

-f        该参数用于监视File文件增长

-c Number        从 Number 字节位置读取指定文件

-n Number        从 Number 行位置读取指定文件

-m Number        从 Number 多字节字符位置读取指定文件,比如你的文件如果包含中文字,如果指定-c参数,可能导致截断,但使用-m则会避免该问题

-b Number        从 Number 表示的512字节块位置读取指定文件

-k Number        从 Number 表示的1KB块位置读取指定文件

File        指定操作的目标文件名

上述命令中,都涉及到number,如果不指定,默认显示10行,Number前面可使用正负号,表示该偏移从顶部还是从尾部开始计算

(1).tail -f filename 

监视filename文件的尾部内容(默认10行,相当于添加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C

(2).tail -n 20 filename

显示filename最后20行 

(3).tail -n +10 filename

显示filename前面10行以后的,(展示不全) 

(4).tail -v filename

显示文件名及文件详细处理信息,还可以同时指定多个文件输出:tail -v filename1 filename2

(5).tail -q filename

不显示详细的处理信息:tail -q filename1 filename2指定多个文件,但不展示文件名称 

(6).tail -f filename --pid=PID

当进程号对应的进程停止时,则自动退出tail命令 

(7).tail --help

可以查看此命令的帮助信息 

(8).tail --version

显示指令的版本信息 

跟tail功能类似的命令还有:

cat        从第一行开始显示档案内容。

tac        从最后一行开始显示档案内容。

more         分页显示档案内容。

less        与 more 类似,但支持向前翻页

head        只显示前面几行

tail        只显示后面几行

n        带行号显示档案内容

od        以二进制方式显示档案内容

 46.head 命令

用于显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行

语法:
head [参数]... [文件]...  
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数

(1).head  filename

打印文件前10行

[root@server dir]# head file1
abcdeabcdeabcdeabcdeabcdeabcde
fghijfghijfghijfghijfghijfghij
 
 
klmnoklmnoklmnoklmnoklmnoklmno
 
	pqrstpqrstpqrstpqrstpqrst
	uvwxyuvwxyuvwxyuvwxyuvwxy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzz
abcdeabcdeabcdeabcdeabcdeabcde

 (2).head -c num filename

打印文件前num字节内容,num可为正,也可为负

# 参数为正5,打印前5字节内容
[root@server dir]# head -c 5 file1
abcde
 
# 参数为负300,打印后300字节之前的内容
[root@server dir]# head -c -300 file1
abcdeabcdeabcdeabcdeabcdeabcde
fghijfghijfghijfghijfghijfghij

(3).head -n num filename

打印文件前num行内容,num可为正,也可为负

# 打印前5行内容
[root@server dir]# head -n 5 file1
abcdeabcdeabcdeabcdeabcdeabcde
fghijfghijfghijfghijfghijfghij
 
 
klmnoklmnoklmnoklmnoklmnoklmno
 
# 上边的简便写法
[root@server dir]# head -5 file1
abcdeabcdeabcdeabcdeabcdeabcde
fghijfghijfghijfghijfghijfghij
 
 
klmnoklmnoklmnoklmnoklmnoklmno
 
# 打印后13行前的内容
[root@server dir]# head -n -13 file1
abcdeabcdeabcdeabcdeabcdeabcde
fghijfghijfghijfghijfghijfghij
 
 
klmnoklmnoklmnoklmnoklmnoklmno
 

(4).head -v filename

打印文件开头,==>文件名<==

#打印文件filename开头:包含文件名的前2行数据
[root@server dir]# head -2 -v filename
==> filename <==
abcdeabcdeabcdeabcdeabcdeabcde
fghijfghijfghijfghijfghijfghij

 47.diff 命令

用于比较两个文件或目录的不同.diff以逐行的方式,比较文本文件的异同处,如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录.diff的输出结果表明需要对一个文件做怎样的操作之后才能与第二个文件相匹配,diff并不会改变文件的内容,但是diff可以输出一个ed脚本来应用这些改变

使用语法: 

             diff [参数]… 文件

参数说明

参数    参数说明
–normal    默认输出模式
-q, --brief    仅显示有无差异,不显示详细的信息。
-s, --report-identical-files    若没有发现任何差异,仍然显示信息。
-c, -C NUM, --context[=NUM]    Context模式,显示全部内文,并标出不同之处。
-u, -U NUM, --unified[=NUM]    Unified模式,以合并的方式来显示文件内容的不同。
-e, --ed    此参数的输出格式可用于ed的script文件。
-n, --rcs    将比较结果以RCS的格式来显示。
-y, --side-by-side    以并列的方式显示文件的异同之处。
-W, --width=NUM    在使用-y参数时,指定栏宽。
-p, --show-c-function    若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
-t, --expand-tabs    在输出时,将tab字符展开。
-T, --initial-tab    在每行前面加上tab字符以便对齐。
-l, --paginate    将结果交由pr程序来分页。
-r, --recursive    比较子目录中的文件。
-N, --new-file    在比较目录时,若文件A仅出现在某个目录中,预设会显示。
-x, --exclude=PAT    不比较选项中所指定的文件或目录
-X, --exclude-from=FILE    不比较选项中所指定的文件或目录
-S, --starting-file=FILE    在比较目录时,从指定的文件开始比较。
-i, --ignore-case    不检查大小写的不同。
-w, --ignore-all-space    忽略全部的空格字符。
-B, --ignore-blank-lines    不检查空白行。
-I, --ignore-matching-lines=RE    若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
-a, --text    diff预设只会逐行比较文本文件
-D, --ifdef=NAME    此参数的输出格式可用于前置处理器巨集。
-d, --minimal    使用不同的演算法,以较小的单位来做比较。
–help    获取命令帮助
-v, --version    查看命令版

使用示例
(1).查看两个待比较文件

[root@test1 tmp]# cat file1.txt
君不见黄河之水天上来,奔流到海不复回。
君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。

[root@test1 tmp]# cat file2.txt
君不见黄河之水天上来,奔流到海不复回。
君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。

(2).使用默认normal模式比较

[root@test1 tmp]# diff file1.txt file2.txt
5,6c5
< 陈王昔时宴平乐,斗酒十千恣欢谑。
< 主人何为言少钱,径须沽取对君酌。

烹羊宰牛且为乐,会须一饮三百杯。

(3).使用context模式比较

[root@test1 tmp]# diff -c file1.txt file2.txt
*** file1.txt 2021-06-09 09:40:39.776160512 +0800
— file2.txt 2021-06-09 09:31:43.743508119 +0800
***************
*** 2,6 ****
君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
! 陈王昔时宴平乐,斗酒十千恣欢谑。
! 主人何为言少钱,径须沽取对君酌。
— 2,5 ----
君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
! 烹羊宰牛且为乐,会须一饮三百杯。

(4).使用Unified模式比较

[root@test1 tmp]# diff -u file1.txt file2.txt
— file1.txt 2021-06-09 09:40:39.776160512 +0800
+++ file2.txt 2021-06-09 09:31:43.743508119 +0800
@@ -2,5 +2,4 @@
君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
-陈王昔时宴平乐,斗酒十千恣欢谑。
-主人何为言少钱,径须沽取对君酌。
+烹羊宰牛且为乐,会须一饮三百杯。

(5).并排输出比较结果

[root@test1 tmp]# diff -y -W 200 file1.txt file2.txt

"|"表示前后2个文件内容有不同
"<"表示后面文件比前面文件少了1行内容
">"表示后面文件比前面文件多了1行内容

(6).目录比较

[root@test1 home]# cp -r wuhs wuhs2
[root@test1 home]# rm -rf wuhs2/Videos
[root@test1 home]# diff -r -q wuhs wuhs2
Only in wuhs: Videos

[root@test1 home]# cp /tmp/file1.txt wuhs2/
[root@test1 home]# diff -r -q wuhs wuhs2
Only in wuhs2: file1.txt
Only in wuhs: Videos

(7).比较时忽略空白行

-B参数忽略空白行,经测试只忽略后面文件的空白行。

[root@test1 tmp]# diff -B file1.txt file2.txt
5,6c7
< 陈王昔时宴平乐,斗酒十千恣欢谑。
< 主人何为言少钱,径须沽取对君酌。
—
烹羊宰牛且为乐,会须一饮三百杯。
[root@test1 tmp]# cat file2.txt
君不见黄河之水天上来,奔流到海不复回。
君不见高堂明镜悲白发,朝如青丝暮成雪。


人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。

(8).使用-e和ed同步file2内容到file1

[root@test1 tmp]# cat file2.txt
君不见黄河之水天上来,奔流到海不复回。
君不见高堂明镜悲白发,朝如青丝暮成雪。


人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
[root@test1 tmp]# diff -e file1.txt file2.txt > script.txt
[root@test1 tmp]# cat script.txt
5,6c
烹羊宰牛且为乐,会须一饮三百杯。
.
2a


.
[root@test1 tmp]# echo “w” >> script.txt
[root@test1 tmp]# ed - file1.txt < script.txt
[root@test1 tmp]# cat file1.txt
君不见黄河之水天上来,奔流到海不复回。
君不见高堂明镜悲白发,朝如青丝暮成雪。


人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。

 48.ping

用于确定主机与外部连接状态

ping [参数] [主机名或IP地址]
-d 使用Socket的SO_DEBUG功能。
-f  极限检测。大量且快速地送网络封包给一台机器,看它的回应。
-n 只输出数值。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R 记录路由过程。
-v 详细显示指令的执行过程。

-c 数目:在发送指定数目的包后停止。 -i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。 -I 网络界面:使用指定的网络界面送出数据包。 -l 前置载入:设置在送出要求信息之前,先行发出的数据包。 -p 范本样式:设置填满数据包的范本样式。 -s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。 -t 存活数值:设置存活数值TTL的大小。

49.ssh 

命令用于远程登录上Linux主机 

格式:

        ssh [ 远程主机用户名] @ [远程服务器主机名或IP地址] -p port
当Linux主机上远程连接另一台Linux主机时,如当前所登录的用户是root的话,当连接另一台主机时也是用root用户登录时,可以直接使用ssh IP 登录。端口默认即可,如果不是默认的情况下,需要使用-p 指定端口

#ssh [email protected]    第一次交互输入yes 第二次交互输入root密码 登录成功

 50.telnet

经常被用于测试远程端口通不通

注意: 非不要不要开启telnet,telnet很容易受到黑客攻击,有必要还可以卸载telnet、xinetd

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# telnet www.baidu.com
Trying 14.119.104.189...

 51.wget

用于从Web下载文件的命令行工具,支持 HTTP、HTTPS及FTP协议下载文件,而且wget还提供了很多选项,例如下载多个文件、后台下载,使用代理等等,使用非常方便

wget [参数] [URL地址]

启动参数:
-V, –version 显示wget的版本后退出
-h, –help 打印语法帮助
-b, –background 启动后转入后台执行
-e, –execute=COMMAND 执行`.wgetrc’格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc

记录和输入文件参数:
-o, –output-file=FILE 把记录写到FILE文件中
-a, –append-output=FILE 把记录追加到FILE文件中
-d, –debug 打印调试输出
-q, –quiet 安静模式(没有输出)
-v, –verbose 冗长模式(这是缺省设置)
-nv, –non-verbose 关掉冗长模式,但不是安静模式
-i, –input-file=FILE 下载在FILE文件中出现的URLs
-F, –force-html 把输入文件当作HTML格式文件对待
-B, –base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
–sslcertfile=FILE 可选客户端证书
–sslcertkey=KEYFILE 可选客户端证书的KEYFILE
–egd-file=FILE 指定EGD socket的文件名

下载参数:
–bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
-t, –tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
-O –output-document=FILE 把文档写到FILE文件中
-nc, –no-clobber 不要覆盖存在的文件或使用.#前缀
-c, –continue 接着下载没下载完的文件
–progress=TYPE 设定进程条标记
-N, –timestamping 不要重新下载文件除非比本地文件新
-S, –server-response 打印服务器的回应
–spider 不下载任何东西
-T, –timeout=SECONDS 设定响应超时的秒数
-w, –wait=SECONDS 两次尝试之间间隔SECONDS秒
–waitretry=SECONDS 在重新链接之间等待1…SECONDS秒
–random-wait 在下载之间等待0…2*WAIT秒
-Y, –proxy=on/off 打开或关闭代理
-Q, –quota=NUMBER 设置下载的容量限制
–limit-rate=RATE 限定下载输率

目录参数:
-nd –no-directories 不创建目录
-x, –force-directories 强制创建目录
-nH, –no-host-directories 不创建主机目录
-P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…
–cut-dirs=NUMBER 忽略 NUMBER层远程目录

HTTP 选项参数:
–http-user=USER 设定HTTP用户名为 USER.
–http-passwd=PASS 设定http密码为 PASS
-C, –cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许)
-E, –html-extension 将所有text/html文档以.html扩展名保存
–ignore-length 忽略 `Content-Length’头域
–header=STRING 在headers中插入字符串 STRING
–proxy-user=USER 设定代理的用户名为 USER
–proxy-passwd=PASS 设定代理的密码为 PASS
–referer=URL 在HTTP请求中包含 `Referer: URL’头
-s, –save-headers 保存HTTP头到文件
-U, –user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION
–no-http-keep-alive 关闭 HTTP活动链接 (永远链接)
–cookies=off 不使用 cookies
–load-cookies=FILE 在开始会话前从文件 FILE中加载cookie
–save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中

FTP 选项参数:
-nr, –dont-remove-listing 不移走 `.listing’文件
-g, –glob=on/off 打开或关闭文件名的 globbing机制
–passive-ftp 使用被动传输模式 (缺省值).
–active-ftp 使用主动传输模式
–retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

递归下载参数:
-r, –recursive 递归下载--慎用!
-l, –level=NUMBER 最大递归深度 (inf 或 0 代表无穷)
–delete-after 在现在完毕后局部删除文件
-k, –convert-links 转换非相对链接为相对链接
-K, –backup-converted 在转换文件X之前,将之备份为 X.orig
-m, –mirror 等价于 -r -N -l inf -nr
-p, –page-requisites 下载显示HTML文件的所有图片

递归下载中的包含和不包含(accept/reject):
-A, –accept=LIST 分号分隔的被接受扩展名的列表
-R, –reject=LIST 分号分隔的不被接受的扩展名的列表
-D, –domains=LIST 分号分隔的被接受域的列表
–exclude-domains=LIST 分号分隔的不被接受的域的列表
–follow-ftp 跟踪HTML文档中的FTP链接
–follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表
-G, –ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表
-H, –span-hosts 当递归时转到外部主机
-L, –relative 仅仅跟踪相对链接
-I, –include-directories=LIST 允许目录的列表
-X, –exclude-directories=LIST 不被包含目录的列表
-np, –no-parent 不要追溯到父目录
wget -S –spider url 不下载只显示过程

52.ifconfig

显示或配置网络设备的命令,英文全称是network interfaces configuring,可用于显示或设置网络设备,可设置网络设备的状态,或是显示目前的设置,也可以用ip addr查看ip地址

语法

ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<硬件地址>][io_addr][irq][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址] 

参数

add<地址>:设置网络设备IPv6的ip地址;
del<地址>:删除网络设备IPv6的IP地址;
down:关闭指定的网络设备;
<硬件地址>:设置网络设备的类型与硬件地址;
io_addr:设置网络设备的I/O地址;
irq:设置网络设备的IRQ;
media<网络媒介类型>:设置网络设备的媒介类型;
mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;
metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;
mtu<字节>:设置网络设备的MTU;
netmask<子网掩码>:设置网络设备的子网掩码;
tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;
up:启动指定的网络设备;
-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;
-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;
-promisc:关闭或启动指定网络设备的promiscuous模式;
IP地址:指定网络设备的IP地址;
网络设备:指定网络设备的名称。

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# ifconfig

enp3s0: flags=4163  mtu 1500
        inet 192.168.1.123  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::913d:aba5:c332:ae2a  prefixlen 64  scopeid 0x20
        ether 1c:69:7a:ff:e1:4a  txqueuelen 1000  (以太网)
        RX packets 562789  bytes 75322211 (75.3 MB)
        RX errors 0  dropped 55  overruns 0  frame 0
        TX packets 116136  bytes 21997912 (21.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (本地环回)
        RX packets 48388  bytes 10041455 (10.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 48388  bytes 10041455 (10.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s0 表示第一块网卡,其中ether表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是1c:69:7a:ff:e1:4a

inet  用来表示网卡的IP地址,此网卡的IP地址是192.168.1.123,广播地址broadcast 192.168.1.255,掩码地址netmask 255.255.255.0

lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回坏地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道

53.route

 命令用来显示并设置linux内核中的网络路由表,route命令设置的路由主要是静态路由 

语法
route(选项)(参数)

选项    描述
-A    设置地址类型;
-C    打印将Linux核心的路由缓存;
-v    详细信息模式;
-n    直接显示数字形式的IP地址;
-e    netstat格式显示路由表;
-net    到一个网络的路由表;
-host    到一个主机的路由表。

参数    描述
add    增加指定的路由记录;
del    删除指定的路由记录;
target    目的网络或目的主机;
gw    设置默认网关;
mss    设置TCP的最大区块长度(MSS),单位MB;
window    指定通过路由表的TCP连接的TCP窗口大小;
dev    路由记录所表示的网络接口。

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# route
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
default         _gateway        0.0.0.0         UG    600    0        0 wlxc01c301feed1
default         _gateway        0.0.0.0         UG    20100  0        0 enp3s0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 wlxc01c301feed1
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-f09cae0a4177
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-73a94d145376
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-fb28ebb843fe
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp3s0
192.168.110.0   0.0.0.0         255.255.255.0   U     600    0        0 wlxc01c301feed1

 54.whereis 命令

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息,和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高,但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新

55.grep 命令

该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,比如可以加在ps, tail, cat后面 

语法:

        grep [-abcEFGhHilLnqrsvVwxy][-A][-B][-C][-d][-e][-f][--help][范本样式][文件或目录...]

参数

  • -a 或 –text : 不要忽略二进制的数据。

  • -A 或 –after-context= : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。

  • -b 或 –byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。

  • -B 或 –before-context= : 除了显示符合样式的那一行之外,并显示该行之前的内容。

  • -c 或 –count : 计算符合样式的列数。

  • -C 或 –context=或- : 除了显示符合样式的那一行之外,并显示该行之前后的内容。

  • -d 或 –directories= : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

  • -e 或 –regexp= : 指定字符串做为查找文件内容的样式。

  • -E 或 –extended-regexp : 将样式为延伸的正则表达式来使用。

  • -f 或 –file= : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。

  • -F 或 –fixed-regexp : 将样式视为固定字符串的列表。

  • -G 或 –basic-regexp : 将样式视为普通的表示法来使用。

  • -h 或 –no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。

  • -H 或 –with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。

  • -i 或 –ignore-case : 忽略字符大小写的差别。

  • -l 或 –file-with-matches : 列出文件内容符合指定的样式的文件名称。

  • -L 或 –files-without-match : 列出文件内容不符合指定的样式的文件名称。

  • -n 或 –line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。

  • -o 或 –only-matching : 只显示匹配PATTERN 部分。

  • -q 或 –quiet或–silent : 不显示任何信息。

  • -r 或 –recursive : 此参数的效果和指定”-d recurse”参数相同。

  • -s 或 –no-messages : 不显示错误信息。

  • -v 或 –invert-match : 显示不包含匹配文本的所有行。

  • -V 或 –version : 显示版本信息。

  • -w 或 –word-regexp : 只显示全字符合的列。

  • -x –line-regexp : 只显示全列符合的列。

  • -y : 此参数的效果和指定”-i”参数相同。

ps -e | grep nginx
# ps命令将某个进程显示出来, grep命令是查找, 中间的 | 是管道命令 是指ps命令与grep同时执行
ps -ef |grep

56.date 命令

用于显示或设定时间

date [参数]... [+格式]

必要参数:
%H 小时(以00-23来表示)。 
%I 小时(以01-12来表示)。 
%K 小时(以0-23来表示)。 
%l 小时(以0-12来表示)。 
%M 分钟(以00-59来表示)。 
%P AM或PM。 
%r 时间(含时分秒,小时以12小时AM/PM来表示)。 
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。 
%S 秒(以本地的惯用法来表示)。 
%T 时间(含时分秒,小时以24小时制来表示)。 
%X 时间(以本地的惯用法来表示)。 
%Z 市区。 
%a 星期的缩写。 
%A 星期的完整名称。 

%b 月份英文名的缩写。 
%B 月份的完整英文名称。 
%c 日期与时间。只输入date指令也会显示同样的结果。 
%d 日期(以01-31来表示)。 
%D 日期(含年月日)。 
%j 该年中的第几天。 
%m 月份(以01-12来表示)。 
%U 该年中的周数。 
%w 该周的天数,0代表周日,1代表周一,异词类推。 
%x 日期(以本地的惯用法来表示)。 
%y 年份(以00-99来表示)。 
%Y 年份(以四位数来表示)。 
%n 在显示时,插入新的一行。 
%t 在显示时,插入tab。 
MM 月份(必要) 
DD 日期(必要) 
hh 小时(必要) 
mm 分钟(必要)
ss 秒(选择性) 

选择参数:
-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。 
-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。 
-u  显示GMT

(1).获取命令帮助

[root@s145 ~]# date --help

(2).查看命令版本

[root@s145 ~]# date --version
date (GNU coreutils) 8.22
Copyright © 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David MacKenzie.

(3).查看系统日期及时间

[root@s145 ~]# date
Sat Jan 22 15:08:12 CST 2022

(4).以YYYY-MM-DD显示日期
 

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%F
2023-04-03

(5).以MM/DD/YY显示日期

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%D
04/03/23

(6).以MM/DD/YYYY显示日期

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%x
2023年04月03日

(7).获取系统年份、月份、日子

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%Y
2023
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%m
04
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%d
03

(8).获取系统星期值

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%a
一
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%A
星期一
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%u
1
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph#  date +%w
1

(9).获取系统时区

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph#  date +%z
+0800
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%Z
CST

(10).查询当前日期是一年中的第几周

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%W
14
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%U
14

(11).获取系统时间

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%T
19:42:50
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%X
19时42分52秒

(12).显示十二小时制时间

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%r
下午 07时43分14秒

(13).显示24小时制时间

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%R
19:43

(14).按照指定样式显示时间

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%H-%M.%S
19-44.00
root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%H.%M.%S
19.44.03

(15).从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph#  date +%s
1680522276

(16).设置系统时间

在这里插入图片描述
(17).设置时间及日期

在这里插入图片描述  
(18).日期和时间分行显示

root@zph-IdeaCentre-GeekPro-14IOB:/home/zph# date +%F%n%T
2023-04-03
19:46:14

(19).按照字符串的设置显示日期

在这里插入图片描述

 57. ln命令

为某一个文件在另外一个位置建立一个同步的链接

Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接

硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建

ln [参数][源文件或目录][目标文件或目录]

必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

选择参数:
-S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
-V “-V<备份方式>”或“--version-control=<备份方式>”
oot@Orangepi:~/test# touch file1        #创建一个测试文件
root@Orangepi:~/test# ln file1 file2     #创建file的一个硬连接文件file2
root@Orangepi:~/test# ln -s file1 file3  #创建file的一个符号连接文件file3
root@Orangepi:~/test# ls -li             #-l参数以单列格式输出文件信息,-i参数输出文件的inode节点信息
total 0
28125 -rw-r--r-- 2 root root 0 Feb 16 08:29 file1
28125 -rw-r--r-- 2 root root 0 Feb 16 08:29 file2
31463 lrwxrwxrwx 1 root root 5 Feb 16 08:30 file3 -> file1
root@Orangepi:~/test# cat >>file1 < 12345
> EOF
root@Orangepi:~/test# cat file1                     #输出文件file1内容
12345
root@Orangepi:~/test# cat file2                     #输出文件file2内容
12345
root@Orangepi:~/test# cat file3                     #输出文件file3内容
12345
root@Orangepi:~/test# rm file1                      #删除文件file1
root@Orangepi:~/test# cat file2
12345
root@Orangepi:~/test# cat file3
cat: file3: No such file or directory

58. 关机和重启 

关机
    shutdown -h now        立刻关机
    shutdown -h 5        5分钟后关机
    poweroff            立刻关机
重启
    shutdown -r now        立刻重启
    shutdown -r 5        5分钟后重启
    reboot                立刻重启
 

 59.主机名配置

[root@node1 ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node1

60.IP 地址配置

[root@node1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

61.域名映射

/etc/hosts文件用于在通过主机名进行访问时做ip地址解析之用。所以,你想访问一个什么样的主机名,就需要把这个主机名和它对应的ip地址 

62.ll 显示的文件类型

Linux 下可以用 ll 命令来判断文件类型,主要是根据每行的首个字符来判断

-rw-r—r— "-“开头的都是普通文件;
drw-r—r— "d"开头的是目录文件;
brw-r—r— "b"开头的文件都是块设备文件;
crw-r—r— "c"开头的文件都是字符设备文件;
srw-r—r— "s"开头的文件都是 socket 文件; (e.g. srwxrwxrwx 1 mysql mysql 0 Sep 9
13:49 mysql.sock)
prw-r—r— "p"开头的文件都是管道文件;
lrw-r—r— "l"开头的文件都是软链接文件;

63.别名管理

//添加别名:当要查看某个文件时,文件名称太长,记不住,可以用别名
alias chttp='cat /etc/httpd/conf/httpd.conf'
//chttp等同于cat /etc/httpd/conf/httpd.conf
chttp

//添加别名:编辑某个文件
alias vhttp='vi /etc/httpd/conf/httpd.conf'
//vhttp等同于vi /etc/httpd/conf/httpd.con
vhttp

//删除别名
unalias chttp

//查看别名
alias

你可能感兴趣的:(Linux,linux,firewall,nameserver,resolv.conf)