linux常用命令(ing)

【linux命令】持续更新

find命令

什么是 find 命令?

find 命令用于在指定的目录下搜索文件和目录。它提供了丰富的搜索条件和选项,可以根据文件名、文件类型、文件大小、修改时间等属性进行搜索。find 命令通常用于查找特定文件或根据条件进行批量操作。

find命令通常进行的是从根目录 / 开始的全盘搜索,所以不要在高峰时期使用 find 命令。

如何使用 find 命令?

find 命令的使用相对较复杂,但掌握了基本语法后,你就能灵活使用它。

基本语法:

find 目录路径 [选项参数] [搜索条件]
  • 目录路径:指定要查找的目录路径。
  • 选项参数:用于指定匹配条件,例如文件名、类型。
  • 搜索条件:用于指定要搜索的文件和目录,满足这个条件的就会被搜索出来。

举例说明

假设我们想找到在 /opt/games 目录下所有以 .txt 扩展名结尾的文件,则可以使用以下命令:

find /opt/games -name "*.txt"

这将在 /opt/games 目录及其子目录中搜索所有以 .txt 结尾的文件,并将它们列出。

 

常用选项参数

  • -name:按文件名进行匹配。
  • -type:按文件类型进行匹配。
  • -size:按文件大小进行匹配。
  • -user:按文件所属用户进行匹配。
  • -mtime:(modified)按文件最后内容的修改时间进行匹配。
  • -perm:(permission)按文件权限进行匹配。

 

按权限进行匹配

这里先说下,-perm 后面的内容使用数字或符号来表示文件权限,举个例子 /u+rw,这里的 /u 表示用户(所有者)权限,rw 表示具有读写权限,中间的 + 用来表示「具有」

还有其他几个字母:/g,组(group)权限;/o,(other)其他用户权限;/a,(all)所有用户权限。

读写可执行:r(read),w(write),x(execute)

- 表示没有:比如 /u-rw,指用户没有读写权限

  1. 搜索当前目录及其子目录下所有具有读写权限的文件(目录):
find /opt -perm /u+rw


grep

什么是 grep 命令?

grep 命令是 global regular expression print 的缩写,用于在文件、多个文件或输入流中进行正则匹配,它会匹配我们在命令行中指定的「文本模式」(Pattern),并将结果输出打印。

换句话说,它会按我们提供的文本模式去搜索文件的内容。

如何使用 grep 命令?

grep 命令的使用非常简单,你只需在终端中输入 grep,并指定要搜索的模式和文件名。

基本语法:

grep [选项参数] 文本模式 文件名

举例说明

现在我们在 opt/games/gta6 目录下,有一个名为 readme.txt 的文件,像搜索里面包含关键字 "VI" 的行,那么可以使用以下命令:

grep "VI" readme.txt

这将在文件中查找包含 "VI" 的行,并将其打印输出。

常用选项参数

  • -i:(ignore)忽略大小写进行匹配。
  • -n:(number)显示匹配行的行号。
  • -v:(reverse)反向匹配,打印不包含模式的行。
  • -r:(recursive)递归搜索指定目录及其子目录下的文件。
  • 在 readme.txt 中搜索 "vi",忽略大小写:
  • grep -i "vi" readme.txt

 

在标准输入流中搜索指定模式

Linux 中的标准输入输出、重定向、管道符-简书

基本写法:

command | grep pattern

这里,command 是生成输出的命令,pattern 是要搜索的模式,| 是管道符,可以将两个命令分隔开,|左边命令的输出就会作为 | 右边命令的输入

比如在读取 show.txt 的时候搜索 god23bin

cat show.txt | grep god23bin

这种用法,我一般是在大量日志输出中想找到错误信息的时候会用到:

tail -2000f project-test.log | grep -i error

====================

查进程命令

ps -ef 查所有的进程

ps -elf

  • -e:显示系统内的所有进程信息。
  • -l:使用长(long)格式显示进程信息。
  • -f:使用完整的(full)格式显示进程信息。

ps -ef|grep 进程名    查看进行运行情况

ps aux

  • a:显示当前终端下的所有进程信息,包括其他用户的进程。
  • u:使用以用户为主的格式输出进程信息。
  • x:显示当前用户在所有终端下的进程。

top

以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次,其作用基本类似于Windows系统中的任务管理器。

 

pstree -aup

以树状图的方式展现进程之间的派生关系,显示效果比较直观。 -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示; -c:不使用精简标示法; -G:使用VT100终端机的列绘图字符; -h:列出树状图时,特别标明现在执行的程序; -H<程序识别码>:此参数的效果和指定”-h”参数类似,但特别标明指定的程序; -l:采用长列格式显示树状图; -n:用程序识别码排序。预设是以程序名称来排序; -p:显示程序识别码; -u:显示用户名称;

拷贝文件

cp /root/test.sh /mnt/test                          //将root路径下的test.sh文件拷贝到/mnt/test路径下

cp /root/test.txt /mnt/test/file.txt                   //将/root路径下的test.txt文件拷贝到/mnt/test/路径下,并修改文件名为file.txt,若存在同名文件将其同名文件覆盖

拷贝文件夹

cp -r /root/test /mnt/file                              //将/root路径下的test文件夹拷贝到/mnt/file文件夹中

cp -rf /root/file /mnt/file                         //将root目录下的file文件夹及目录下的所有文件拷贝到/mnt目录下并覆盖已有的file文件夹

查日志命令

tail -f  XX.log   退出 ctrl+z 

less XX.log    退出q/Q

查找: /+关键字

===============

看日志

查看日志命令原文链接:https://blog.csdn.net/weixin_48502745/article/details/120031663

1 查看当前日志
方法1: 进入日志文件所在目录, 再进行查看日志
例如你的日志文件在 根目录 下的 logs 目录下的 app_logs 目录中,日志文件名称叫做 biz-service.log

#1 进入日志文件所在目录
cd /logs/app_logs
#2 再进行查看日志
less biz-service.log

方法2: 通过路径直接查看当前日志
例子+命令:
例如你的日志文件在 根目录 下的 logs 目录下的 app_logs 目录中,日志文件名称叫做 biz-service.log

less /logs/app_logs/biz-service.log

3 Tips:
可以使用 pwd 查看你现在的位置, 以此决定要不要从根目录出发, 按个人喜好, 不是必输项.
例子+命令:
例如你的日志文件在 根目录 下的 logs 目录下的 app_logs 目录中,日志文件名称叫做 biz-service.log

[LiArun@Localhost]$pwd
/logs
# 现在位于 logs 目录中

所以你可以把 从根目录 换成 从当前位置(logs目录) 出发

# 直接使用:
less app_logs/biz-service.log

# 或者
#1 进入目录
cd app_logs
#2 查看日志
less biz-service.log

2 操作当前日志
2.1 上下翻页
按键: pageup/pagedown

2.2 上下翻行
按键: ↓/↑键

2.3 搜索关键字
1 从当前位置向下搜索:
关键字内容是中英文都可以
1,输入: /+关键字, 按 回车键
2, 配合按键 n/N 使用

n: 查看当前关键字的上一个位置
N: 查看当前关键字的下一个位置

2 从当前位置向上搜索:
1,输入: ?+关键字, 按 回车键
2, 配合按键 n/N 使用

n: 查看当前关键字的下一个位置
N: 查看当前关键字的上一个位置

Tips:
可以配合按键 g/G 使用, 效果更佳

g: 到达当前日志文件头部位置
G: 到达当前日志文件尾部位置

2.4 在 less 命令下, 退出当前日志文件
按键 q/Q 都可

2.5 实时查看日志
方法1: 使用 tail -f 命令
例子:
例如你的日志文件在 根目录 下的 logs 目录下的 app_logs 目录中,日志文件名称叫做 biz-service.log

tail -f /logs/app_logs/biz-service.log
# 按键 ctrl+c 即可退出实时

# 按键 ctrl+z 即可退出实时


方法2: 在 less 命令下操作
背景:
当你使用 less命令 查看日志, 又不想退出去再使用 tail -f 命令时
操作:
只需要 按键F 即可, 此时与 tail -f 的效果一样, 按键 ctrl+c 退出, 回到 less 命令
按键 q/Q 退出 less 命令

2.6 查看历史日志
例子+命令:
例如你的日志文件在 根目录 下的 logs 目录下的 app_logs 目录中,日志文件名称叫做 biz-service-09-01-2021.gz

zless /logs/app_logs/biz-service-09-01-2021.gz

===============

top 命令

Linux top命令用于实时显示 process 的动态。  这样主机窗口挂起来了;  退出:ctrl+z

sftp命令

SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种基于可靠数据流(data stream),提供文件存取和管理的网络传输协议
与 FTP 协议相比,SFTP 在客户端与服务器间提供了一种更为安全的文件传输方式,如果你还在使用 FTP 来进行文件传输,强烈建议切换到更为安全的 SFTP 上来。

目前已经有很多 GUI 客户端支持 SFTP 协议。

二、使用 SFTP 进行连接
因为 SFTP 是基于 SSH 协议的,所以默认的身份认证方法与 SSH 协议保持一致。通常我们使用 SSH Key 来进行连接,如果你已经可以使用 SSH 连接到远程服务器上,那么可以使用以下命令来连接 SFTP:

sftp user_name@remote_server_address[:path]
如果远程服务器自定义了连接的端口,可以使用 -P 参数:

sftp -P remote_port user_name@remote_server_address[:path]
连接成功后将进入一个 SFTP 的解释器,可以发现命令行提示符变成了 sftp>,使用 exit 命令可以退出连接。

如果连接地址存在 path 并且 path 不是一个目录,那么 SFTP 会直接从服务器端取回这个文件。

三、连接参数详解
-B: buffer_size,制定传输 buffer 的大小,更大的 buffer 会消耗更多的内存,默认为 32768 bytes;
-P: port,制定连接的端口号;
-R: num_requests,制定一次连接的请求数,可以略微提升传输速度,但是会增加内存的使用量。

 

 

 

 

命令示例:

  • 登陆远程主机:  

sftp user@host  

  • 针对本机的命令都加上l:  

lcd,lpwd  

  • 将本机文件上传到远程:  

put filename.txt [some/directory]  

  • 将当前文件夹下的文件上传到远程:  

mput *.* // multiple  

  • 下载远程文件到本地:  

get filename.file [some/directory]  

  • 下载目录下所有远程文件到本地:  

mget *.* [some/directory]  

  • 帮助:  

?  

  • 退出:  

bye/exit/quit

 

 


四、目录管理
在 SFTP 解释器中可以使用 help 命令来查看帮助文档。

 

 SFTP 解释器中预置了常用的命令,但是没有自带的 Bash 来得丰富。

 

 

 

 

 

编辑文件命令:

linux修改文件的命令:

1、“vi”或“vim”命令,可用于修改文件的内容;

2、“mv”命令,可用于修改文件的名称;

3、“chmod”、“chgrp”、“chown”命令,可用于修改文件的权限;

4、“touch”命令,可修改文件的时间。

linux修改文件的内容

命令是:vivim

  • vi 编辑器,相当于记事本,有编辑功能,但较弱

  • vim 复杂的编辑器,相当于windows的 editplus, notepad++ 等

步骤:

1、执行 vi world.txt 进入编辑器(默认命令模式),

2、点击a或i进入编辑模式,敲入内容:hello linux world !

3、然后按键盘上的esc键退出编辑模式(进入到命令模式),

4、最后敲冒号:wq保存并退出。

5、在命令模式输入:冒号,就进入末行模式 ,就能执行保存、退出、强制命令

 

保存退出形式(命令前面冒号是必要的):

 

:w 保存文件但不退出vi

:w file 将修改另外保存到file中,不退出vi

:w! 强制保存,不推出vi

:wq 保存文件并退出vi

:wq! 强制保存文件,并退出vi

:q 不保存文件,退出vi

:q! 不保存文件,强制退出vi

:e! 放弃所有修改,从上次保存文件开始再编辑

touch命令

简介:
touch命令用于修改文件或者目录的时间属性,包括访问时间和修改时间,若文件不存在,系统会建立一个新的文件。

语法格式:
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]

 

 

例子:

 

 

 

 

补充:

1.stat  XXX   查看这个目录所有文件的状态。
Access访问时间。Modify修改时间。Change状态改变时间。

2.每个文件在Linux下面都会记录3个主要的修改时间:
• modification time(mtime,修改时间):当文件“内容数据”(指文件里面的内容,而不是属性或权限)更改时,这个时间会更新。
• status time(ctime,状态时间):当文件的“状态”(权限或者属性)改变时,这个时间会更新。
• access time(atime,存取时间):当“该文件内容被取用”(例如使用cat读取了)时,会更新该时间。
(注:ls默认情况下显示的是mtime)

原文链接:https://blog.csdn.net/weixin_41280381/article/details/123899254

 

=========

mv   就是move 移除命令

mv命令是“move”单词的缩写,见名思意,可以移动文件或对其改名。
这是一个使用频率超高的文件管理命令,但是要留意它与复制的区别。
mv命令是文件的路径发生变化或文件名称发生改变,但个数不会增加。而cp命令是对文件进行的复制操作,文件个数是有增加的。

1.mv file dir 将文件移动到文件夹内

2.mv –i 若存在同名文件,则向用户询问是否覆盖

3.mv –f 覆盖已有文件时,不进行任何提示

4.mv –b 当文件存在时,覆盖前为其创建一个备份

5.mv –u 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作

6.mv file_1 file_2 将文件file_1重命名为file_2

7.mv /dir1 /dir2 将目录dir1移动目录dir2中(前提是目录dir2已存在,若不存在则改名)

8.mv /dir1/ . 将目录dir1下的文件移动到当前目录下*

原文链接:https://blog.csdn.net/c_xiazai12345/article/details/115767485

 =====================================

sudo命令

1、sudo 简介

 

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。(百度百科)

 

su 命令
su是最简单的身份切换命令,一般都是su - username,然后输入password就ok了,root用su至其他用户无须密码;但非root用户切换时需要密码。切换到root可以使用su -和su - root。

 

  • 切换用户的方式:
    su UserName:非登录式切换,即不会读取目标用户的配置文件
    su - UserName:登录式切换,会读取目标用户的配置文件;完全切换

  • 换个身份执行命令:
    su [-] UserName -c ‘COMMAND’
    选项:
    -l:“su -l UserName”相当于“su - UserName”
    -c: 仅执行一次命令,而不切换用户身份

 

2、sudo的特性

 

    • sudo 能够授权指定用户在指定主机上运行某些命令。 如果未授权用户尝试使用 sudo,会提示联系管理员。
    • sudo 可以提供日志,记录每个用户使用sudo操作,以便于日后审计。
    • sudo 为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。
    • sudo 默认存活期为5分钟。

 

 

编辑配置文件的方式

 

# sudoedit /etc/sudoers
# vim /etc/sudoers
# visudo

 

visudo –c 命令具有语法检查功能,和crontab -e编辑后退出检查语言功能类似。

 

3、sudo相关文件

 

配置文件: /etc/sudoers, /etc/sudoers.d/
时间戳文件: /var/db/sudo
日志文件: /var/log/secure
配置文件支持使用通配符glob:

 

?:任意单一字符
* :匹配任意长度字符
[wxc]:匹配其中一个字符
[!wxc]:除了这三个字符的其它字符
\x : 转义
[[alpha]] :字母 示例: /bin/ls [[alpha]]*

 

配置文件规则有两类

 

  • 别名定义:不是必须的,别名必须全部而且只能使用大写英文字母的组合
  • 授权规则:必须的
  • 用户别名
    在这里插入图片描述

 

4、sudo语法

 

  • who which_hosts=(runas) command
    被管理主机地址【访问主机】
    允许哪一个用户,执行某一条命令在哪一台主机上
    谁(who)能够以哪个用户(runas)的身份通过什么主机(which host)执行什么命令(command)。

    user: 运行命令者的身份
    host: 通过哪些主机
    (runas): 以哪个用户的身份
    command: 运行哪些命令
    在这里插入图片描述

  • sudo授权示例
    在这里插入图片描述
    user1 ALL=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/usermod

  • 常用的标签
    PASSWD:执行被授权的命令之前,必须输入密码进行身份验证
    NOPASSWD:执行被授权的命令之前,无需输入密码进行身份验证
    注意:PASSWD、NOPASSWD等标签只能在授权项中使用,不能在别名中使用。

 

5、sudo命令

 

sudo -u centos 切换身份
-V 显示版本信息等配置信息 
-u user 默认为root 
-l  列出当前用户可以使用的所有sudo命令
-v 再延长密码有效期限5分钟,更新时间戳 
-k  认证信息失效,清除时间戳(1970-01-01),下次需要重新输密码 
-b 在后台执行指令 

 

6、总结

 

    • su方式切换是须要输入目标用户的password。而sudo仅仅须要输入自己的password,所以sudo能够保护目标用户的password不对外泄漏。

    • sudo授权时passwd,su,sudo,sudoedit,visudo等具有特殊意义的命令时,务必要考虑全面(例如禁止修改root用户的密码等操作)。

    • 仔细看了sudo的配置文件发现sudo的which_hosts表示允许哪一个IP地址或网络访问当前主机,这种说法不对。通常能用到这个参数的场景不多,一般在有NIS服务或集中管理的时候,其实就是管理所有主机的管理策略在一台主机上编辑sudoers这个文件,然后将它推到所有主机。

      man帮助文件显示该参数的正确含义:
      #jack可以运行任何命令在定义地CSNET(128.138.243.0, 128.138.242.0和128.138.204.0/24的子网)中,不过注意前两个不需要匹配子网掩码因为是本地主机地址,而最后一个必须匹配掩码因为是网络地址。
      jack CSNETS = ALL
      #lisa可以运行任何命令在定义为CUNETS(128.138.0.0)的子网中主机上。
      lisa CUNETS = ALL

 

=============================

【Linux】创建文件链接(ln | 符号链接和硬链接)

本文将介绍如何在 Linux 中为文件创建硬练级和符号(软)链接,并探讨两者之间的相同和不同之处。

引言
符号链接与 Windows 中的快捷方式很像。Windows 中的快捷方式是一个带箭头的图标,空间占用一般很小,仅仅提供了一个指向目标文件的通道,Linux 中的符号链接也类似。符号链接应用很灵活,可以为任意文件创建符号链接。


原文链接:https://blog.csdn.net/qq_42951560/article/details/125157093

 

 

posted @ 2022-07-13 11:59  小米泥  阅读(172)  评论(0编辑  收藏  举报