Linux系统学习——指令三

Linux系统学习——指令三

chmod — 文件执行权限

添加文件执行权限

要给文件添加执行权限,可以使用 chmod 命令。chmod 是 “change mode” 的缩写,用于改变文件或目录的权限。

基本语法:

chmod [permissions] [file/directory]

这里的 [permissions] 可以是数字或符号表示法。

数字表示法:

  • 4 代表读权限(r)
  • 2 代表写权限(w)
  • 1 代表执行权限(x)

权限的数字是将对应的权限值相加得到的。例如:

  • 读和写权限:4+2 = 6
  • 读、写和执行权限:4+2+1 = 7

符号表示法:

  • u 代表文件所有者(owner)
  • g 代表文件所属组(group)
  • o 代表其他用户(others)
  • a 代表所有用户(所有者、所属组和其他用户)

权限可以是:

  • + 添加权限
  • - 移除权限
  • = 赋予权限(同时移除其他所有权限)

具体操作:

  1. 给所有用户添加执行权限
    如果想要给所有用户添加对某个文件的执行权限,可以使用:

    chmod a+x filename
    

    或者使用数字表示法:

    chmod 1 filename
    
  2. 只给文件所有者添加执行权限
    如果只想给文件所有者添加执行权限,可以使用:

    chmod u+x filename
    

    或者使用数字表示法:

    chmod u=x filename
    
  3. 使用数字表示法添加执行权限
    如果知道要添加的权限的数字代码,可以直接使用数字表示法。例如,给文件所有者添加读、写和执行权限:

    chmod 7 filename
    
  4. 递归给目录及其内容添加执行权限
    如果想要递归地给一个目录及其所有子文件和子目录添加执行权限,可以使用:

    chmod +x /path/to/directory
    
  • 执行权限 允许用户运行文件作为一个程序。对于目录,执行权限允许用户进入目录(即访问目录中的文件)。
  • 添加执行权限 通常用于脚本或可执行文件,以便用户可以运行它们。
  • 权限的组合 可以同时添加读、写和执行权限,具体取决于你的需求。

请注意,只有文件的所有者或具有适当权限的用户(如 root 用户)才能更改文件的权限。使用 chmod
更改权限时,要谨慎操作,以避免意外地暴露敏感文件。

去除文件执行权限

去除文件的执行权限,可以使用 chmod 命令。这个命令用于改变文件或目录的权限。要去除一个文件的执行权限,可以使用 -x 选项,如下所示:

chmod -x filename

这里的 filename 是想要去除执行权限的文件名。

例如,如果有一个名为 script.sh 的脚本文件,可以使用以下命令去除它的执行权限:

chmod -x script.sh

这将从所有用户(所有者、所属组和其他用户)中移除对该文件的执行权限。

如果只想从特定用户组或所有者中去除执行权限,可以指定 -u(用户)、-g(组)或 -o(其他)选项,例如:

  • 去除文件所有者的执行权限:

    chmod -u-x script.sh
    
  • 去除文件所属组的执行权限:

    chmod -g-x script.sh
    
  • 去除其他用户的执行权限:

    chmod -o-x script.sh
    

注意,需要有足够的权限来改变文件的权限,通常这意味着需要是文件的所有者或者具有管理员权限。

查找文件中特定关键字

使用vi编辑文件并查找特定关键字

以查找关键字“img”为例:
使用 vi 编辑器编辑文件并查找关键字 "img" 的步骤如下:

  1. 打开文件
    首先,使用 vi 命令打开想要编辑的文件:

    vi filename.txt
    
  2. 进入正常模式
    vi 编辑器打开时,默认处于正常模式(Normal mode)。如果从命令模式(Command mode)进入 vi,可以通过按 Esc 键回到正常模式。

  3. 搜索关键字
    在正常模式下,输入 / 来进入搜索模式,然后输入想要查找的关键字 “img”,接着按 Enter 键:

    /img
    

    这将向前搜索文件中第一个出现的 “img”。

  4. 导航搜索结果

    • 要查找下一个出现的 “img”,按 n 键。
    • 要查找上一个出现的 “img”,按 Shift + n
  5. 修改内容

    • 当找到包含 "img" 的行后,可以使用正常模式下的命令来修改文本。例如,按 0 可以移动到行首,按 $ 可以移动到行尾。
    • 使用 i 进入插入模式(Insert mode),此时可以在光标位置插入或修改文本。
    • 如果想要替换某个特定字符,可以使用 r 命令,然后输入想要替换的字符。
    • 如果想要替换整行,可以使用 :s/old/new 命令,其中 old 是要替换的文本,new 是新文本。按 Enter 完成替换。
  6. 保存并退出

    • 完成修改后,按 Esc 键退出插入模式回到正常模式。
    • 输入 :wq 保存更改并退出 vi 编辑器。
    • 如果想保存更改但不退出,可以只输入 :w 然后按 Enter
    • 如果想退出不保存更改,可以输入 :q! 然后按 Enter
  7. 使用可视模式选择文本

    • 如果想要修改或复制一行或多行中的多个地方,可以使用可视模式(Visual mode)。按 v 进入可视模式,然后使用方向键选择文本。之后,可以使用 y 复制选中的文本,或者直接输入字符进行替换。
  8. 使用全局命令

    • 如果想要替换文件中所有出现的 “img”,可以使用全局命令 :%s//img/。按 Enter 后,vi 会询问是否替换每一处,可以输入 a 来替换所有匹配项,或者逐一确认。

这些是在 vi 编辑器中查找和修改关键字 “img” 的基本步骤。vi 是一个功能强大的文本编辑器,具有许多高级功能,可以通过阅读其文档或使用在线资源来进一步学习。

文本文件查找特定关键字

在文本文件中搜索包含特定关键字(如 “img”)的内容,可以使用多种命令行工具。下面是一些常见的方法:

1: 使用 grep 命令

grep 是最常用的文本搜索工具之一。使用 -i 选项可以进行不区分大小写的搜索。

grep -i "img" filename.txt

如果只想打印匹配行的行号,可以使用 -n 选项:

grep -in "img" filename.txt

2: 使用 find 命令

虽然 find 主要用于搜索文件,但也可以与 grep 结合使用来搜索文本。

find . -type f -name "*.txt" -exec grep -i "img" {} +

这个命令会在当前目录及其子目录下搜索所有 .txt 文件,查找包含 “img” 的行。

3: 使用 awk 命令

awk 是一个强大的文本处理工具,可以用来搜索包含特定文本的行。

awk '/img/ { print }' filename.txt

4: 使用 sed 命令

sed 是一个流编辑器,可以用来搜索和替换文本。

sed -n '/img/ p' filename.txt

这个命令会打印所有包含 “img” 的行。

5: 使用 ag 命令(The Silver Searcher)

ag 是一个类似于 grep 的工具,但通常更快,特别是对于大型文件。

ag "img" filename.txt

6: 使用 ack 命令

ack 是另一个类似于 grep 的工具,但专为程序员设计,提供了更多的灵活性。

ack "img" filename.txt

7: 使用 fgrep 命令

fgrepgrep 的一个变体,它使用固定的字符串进行搜索,而不是正则表达式,这可能会更快。

fgrep "img" filename.txt

8: 使用 egrep 命令

egrepgrep 的扩展版本,支持扩展的正则表达式。如果需要使用正则表达式搜索 “img”,可以使用它。

egrep "img" filename.txt

9: 使用 catgrep 结合

首先使用 cat 命令将文件内容输出,然后通过管道传递给 grep

cat filename.txt | grep -i "img"

10: 使用 less-i 选项

less 是一个分页程序,可以用来查看文件内容。使用 -i 选项可以进行不区分大小写的搜索。

less -i filename.txt

然后,在 less 中输入 img 并按回车键进行搜索。

每种方法都有其特点和适用场景。grep 是最通用和强大的工具,适合大多数搜索任务。awksed 提供了更多的文本处理能力,而 agack 提供了更快的搜索速度和额外的功能。根据具体需求和偏好,选择最适合的方法。

查看文件执行权限及文件大小

要查看 /usr/local/bin 目录下可执行文件的执行权限和文件大小等详细信息,可以使用多种不同的命令和方法。下面是一些常用的方法:

1: 使用 ls 命令

ls 命令是最常用的查看文件和目录信息的命令。使用 -l(长列表)选项可以显示文件的详细信息,包括权限、所有者、大小和最后修改时间。

ls -l /usr/local/bin

2: 使用 stat 命令

stat 命令提供了文件的详细状态信息,包括文件大小、块大小、总块数、inode 号、权限等。

stat /usr/local/bin/appwtd

3: 使用 file 命令

file 命令用于确定文件的类型,但它也可以显示一些基本的文件权限信息。

file /usr/local/bin/appwtd

4: 使用 du 命令

du(disk usage)命令用于查看文件或目录占用的磁盘空间。使用 -h 选项可以以易读的格式显示大小。

du -h /usr/local/bin/appwtd

5: 使用 chmod 查看权限

虽然 chmod 主要用于改变文件权限,但可以使用它来查看文件当前的权限。

chmod /usr/local/bin/appwtd

6: 使用 find 命令

find 命令可以用来查找并显示符合条件的文件列表。结合 -exec 选项,可以对找到的每个文件执行特定的命令。

find /usr/local/bin -type f -exec ls -l {} \;

7: 使用 duawk 结合

如果想要获取所有文件的大小并进行排序,可以使用 du 命令结合 awk 进行处理。

du -Sh /usr/local/bin/* | sort -h

这里 -S 表示不包括子目录的大小,-h 表示以易读的格式显示。

8: 使用 lsawk 结合

类似于 duls 也可以与 awk 结合使用,以提取和格式化输出。

ls -l /usr/local/bin | awk '{print $5, $9}'

这将打印出文件的大小和名称。

9: 使用 tree 命令

tree 命令以树状图的形式显示目录的内容,包括文件大小。

tree -h /usr/local/bin

-h 选项使文件大小以易读的格式显示。

10: 使用 ls 和管道

可以将 ls 命令的输出通过管道传递给其他命令,如 grepawk,以进一步处理或筛选信息。

ls -l /usr/local/bin | grep '^-' | awk '{print $5, $9}'

这将只显示具有常规文件权限的文件的大小和名称。

find 指令详解

find 是一个在 Unix 和 Unix-like 系统(包括 Linux 和 macOS)中非常强大的命令行工具,用于在文件系统中搜索符合条件的文件或目录。下面是 find 命令的一些基本用法和选项的详细解释:

基本语法:

find [path] [expression]
  • path:指定搜索的起始目录。如果不指定,默认为当前目录。
  • expression:定义搜索条件的表达式。

常用选项:

  • -name-iname:按照文件名搜索。-iname 是不区分大小写的版本。

    • 例如:find / -name "*.txt" 搜索根目录下所有以 .txt 结尾的文件。
  • -type:指定文件类型,如 f 为普通文件,d 为目录。

    • 例如:find / -type d 搜索根目录下的所有目录。
  • -user--group:按照文件所有者或所属组搜索。

    • 例如:find / -user john 搜索属于用户 john 的所有文件。
  • -mtime-ctime:按照文件内容最后修改时间或最后状态改变时间搜索。时间格式为天数。

    • 例如:find / -mtime 0 搜索过去 24 小时内被修改过的文件。
  • -perm:按照文件权限搜索。

    • 例如:find / -perm 755 搜索权限为 755 的文件。
  • -size:按照文件大小搜索。单位可以是 c(字节)、k(千字节)、M(兆字节)等。

    • 例如:find / -size +10M 搜索大于 10MB 的文件。
  • -maxdepth--mindepth:限制搜索的目录深度。

    • 例如:find / -maxdepth 2 限制搜索深度不超过 2 级子目录。
  • -exec:对每个匹配的文件执行指定的命令。

    • 例如:find / -type f -exec ls -l {} \; 对每个找到的文件执行 ls -l 命令。
  • -print:打印每个匹配的文件名(默认行为,通常不需要显式指定)。

  • -o-or:逻辑或操作符,用于连接多个搜索条件。

    • 例如:find / -name "*.txt" -or -name "*.pdf" 搜索以 .txt.pdf 结尾的文件。
  • -prune:排除搜索结果中的某些目录。

    • 例如:find / -path /tmp -prune -o -print 打印所有文件,除了 /tmp 目录下的。

示例:

find /home/user/docs -type f -name "*.txt" -mtime -7 -exec grep "keyword" {} +

这个命令在 /home/user/docs 目录下搜索过去 7 天内修改过的以 .txt 结尾的文件,并在这些文件中搜索包含 “keyword” 的行。

find 命令非常灵活,可以结合各种选项和操作符来满足复杂的搜索需求。

下面是 find 命令的一些常用选项及其示例说明:

  • -name:按照文件名搜索。

    find /path/to/search -name "*.txt"
    

    这个命令搜索指定路径下所有扩展名为 .txt 的文件。

  • -iname:不区分大小写地按文件名搜索。

    find /path/to/search -iname "*.txt"
    

    这个命令搜索指定路径下所有扩展名为 .txt 的文件,忽略大小写。

  • -type:指定文件类型搜索。

    find /path/to/search -type f
    

    这个命令搜索指定路径下所有类型为普通文件的文件。

  • -user:按文件所有者搜索。

    find /path/to/search -user username
    

    这个命令搜索指定路径下所有者为 username 的文件。

  • --group:按文件所属组搜索。

    find /path/to/search -group groupname
    

    这个命令搜索指定路径下所属组为 groupname 的文件。

  • -mtime:按文件内容最后修改时间搜索(单位为天)。

    find /path/to/search -mtime -7
    

    这个命令搜索指定路径下过去 7 天内被修改过的文件。

  • -ctime:按文件状态最后改变时间搜索。

    find /path/to/search -ctime +7
    

    这个命令搜索指定路径下超过 7 天前状态被改变的文件。

  • -atime:按文件最后访问时间搜索。

    find /path/to/search -atime 2
    

    这个命令搜索指定路径下恰好 2 天前被访问过的文件。

  • -perm:按文件权限搜索。

    find /path/to/search -perm -644
    

    这个命令搜索指定路径下权限为 -rw-r--r--(即 644)的文件。

  • -size:按文件大小搜索。

    find /path/to/search -size +100k
    

    这个命令搜索指定路径下大于 100KB 的文件。

  • -maxdepth:限制搜索的目录深度。

    find /path/to/search -maxdepth 1
    

    这个命令限制搜索深度不超过指定路径的第一级子目录。

  • --mindepth:设置搜索的最小目录深度。

    find /path/to/search -mindepth 2
    

    这个命令不搜索指定路径下至少 2 级子目录内的文件。

  • -exec:对匹配的文件执行命令。

    find /path/to/search -type f -exec rm {} \;
    

    这个命令删除指定路径下找到的所有普通文件。

  • -print:打印匹配的文件名(通常不需要指定,因为这是 find 的默认行为)。

    find /path/to/search -print
    
  • -o-or:逻辑或操作符,用于连接多个条件。

    find /path/to/search -name "*.txt" -or -name "*.pdf"
    

    这个命令搜索指定路径下所有扩展名为 .txt.pdf 的文件。

  • -prune:排除搜索结果中的某些目录。

    find /path/to/search -path /path/to/search/logs -prune -o -print
    

    这个命令打印指定路径下的所有文件,除了 logs 目录及其内容。

  • -not!:逻辑非操作符,用于排除某些条件。

    find /path/to/search ! -name "*.txt"
    

    这个命令搜索指定路径下所有除了扩展名为 .txt 的文件。

在Linux系统中,挂载U盘(即USB闪存驱动器)是一个常见的操作,用于访问U盘上的文件。以下是挂载和取消挂载U盘的基本指令及其参数的详细说明:

挂载U盘

  1. lsblk - 列出所有可用的块设备,包括U盘。

    • 作用:显示所有存储设备及其分区的列表。
    • 使用示例:lsblk
  2. fdisk -lparted -l - 列出所有磁盘分区表。

    • 作用:显示磁盘分区信息,包括U盘的分区。
    • 使用示例:fdisk -lparted -l
  3. mkdir - 创建挂载点。

    • 作用:创建一个目录,作为挂载U盘的挂载点。
    • 参数:-p 确保目录存在,如果不存在则创建它。
    • 使用示例:mkdir -p /mnt/usb
  4. mount - 挂载文件系统。

    • 作用:将设备或分区挂载到指定的挂载点。
    • 参数:
      • -o 指定挂载选项,如 rw(读写模式)、ro(只读模式)等。
      • -U 指定U盘的UUID(通用唯一识别码)。
      • -L 指定U盘的标签。
    • 使用示例:mount -t vfat /dev/sdb1 /mnt/usb(假设U盘的分区是/dev/sdb1,文件系统类型是vfat

取消挂载

  1. umount - 卸载文件系统。

    • 作用:从挂载点卸载文件系统。
    • 参数:
      • -f 强制卸载。
      • -l 懒卸载,仅在文件系统不再忙碌时卸载。
    • 使用示例:umount /mnt/usb
  2. lsof - 列出打开的文件。

    • 作用:检查是否有进程正在使用挂载点的文件。
    • 使用示例:lsof /mnt/usb

在使用umount命令之前,确保没有进程正在使用挂载点的文件。如果有,可以使用lsof命令查找并关闭这些进程。

示例

  1. 插入U盘。
  2. 使用lsblkfdisk -l找到U盘的设备名,例如/dev/sdb1
  3. 使用mkdir -p创建挂载点,例如/mnt/usb
  4. 使用mount命令将U盘挂载到挂载点,例如mount -t vfat /dev/sdb1 /mnt/usb
  5. 访问U盘文件:cd /mnt/usb
  6. 完成操作后,使用umount命令卸载U盘,例如umount /mnt/usb

具体的文件系统类型(如vfatntfsext4等)和挂载选项可能根据U盘的文件系统有所不同。在挂载之前,确保系统中已经安装了相应的文件系统驱动。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nerd Nirvana

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值