Linux系统学习——指令三
- Linux系统学习——指令三
- `chmod` — 文件执行权限
- 添加文件执行权限
- 去除文件执行权限
- 查找文件中特定关键字
- 使用vi编辑文件并查找特定关键字
- 文本文件查找特定关键字
- 1: 使用 `grep` 命令
- 2: 使用 `find` 命令
- 3: 使用 `awk` 命令
- 4: 使用 `sed` 命令
- 5: 使用 `ag` 命令(The Silver Searcher)
- 6: 使用 `ack` 命令
- 7: 使用 `fgrep` 命令
- 8: 使用 `egrep` 命令
- 9: 使用 `cat` 和 `grep` 结合
- 10: 使用 `less` 与 `-i` 选项
- 查看文件执行权限及文件大小
- 1: 使用 `ls` 命令
- 2: 使用 `stat` 命令
- 3: 使用 `file` 命令
- 4: 使用 `du` 命令
- 5: 使用 `chmod` 查看权限
- 6: 使用 `find` 命令
- 7: 使用 `du` 和 `awk` 结合
- 8: 使用 `ls` 和 `awk` 结合
- 9: 使用 `tree` 命令
- 10: 使用 `ls` 和管道
- `find` 指令详解
- 基本语法:
- 常用选项:
- 挂载U盘
- 取消挂载
- 示例
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代表所有用户(所有者、所属组和其他用户)
权限可以是:
+添加权限-移除权限=赋予权限(同时移除其他所有权限)
具体操作:
-
给所有用户添加执行权限:
如果想要给所有用户添加对某个文件的执行权限,可以使用:chmod a+x filename或者使用数字表示法:
chmod 1 filename -
只给文件所有者添加执行权限:
如果只想给文件所有者添加执行权限,可以使用:chmod u+x filename或者使用数字表示法:
chmod u=x filename -
使用数字表示法添加执行权限:
如果知道要添加的权限的数字代码,可以直接使用数字表示法。例如,给文件所有者添加读、写和执行权限:chmod 7 filename -
递归给目录及其内容添加执行权限:
如果想要递归地给一个目录及其所有子文件和子目录添加执行权限,可以使用: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" 的步骤如下:
-
打开文件:
首先,使用vi命令打开想要编辑的文件:vi filename.txt -
进入正常模式:
vi编辑器打开时,默认处于正常模式(Normal mode)。如果从命令模式(Command mode)进入vi,可以通过按Esc键回到正常模式。 -
搜索关键字:
在正常模式下,输入/来进入搜索模式,然后输入想要查找的关键字 “img”,接着按Enter键:/img这将向前搜索文件中第一个出现的 “img”。
-
导航搜索结果:
- 要查找下一个出现的 “img”,按
n键。 - 要查找上一个出现的 “img”,按
Shift+n。
- 要查找下一个出现的 “img”,按
-
修改内容:
- 当找到包含
"img"的行后,可以使用正常模式下的命令来修改文本。例如,按0可以移动到行首,按$可以移动到行尾。 - 使用
i进入插入模式(Insert mode),此时可以在光标位置插入或修改文本。 - 如果想要替换某个特定字符,可以使用
r命令,然后输入想要替换的字符。 - 如果想要替换整行,可以使用
:s/old/new命令,其中old是要替换的文本,new是新文本。按Enter完成替换。
- 当找到包含
-
保存并退出:
- 完成修改后,按
Esc键退出插入模式回到正常模式。 - 输入
:wq保存更改并退出vi编辑器。 - 如果想保存更改但不退出,可以只输入
:w然后按Enter。 - 如果想退出不保存更改,可以输入
:q!然后按Enter。
- 完成修改后,按
-
使用可视模式选择文本:
- 如果想要修改或复制一行或多行中的多个地方,可以使用可视模式(Visual mode)。按
v进入可视模式,然后使用方向键选择文本。之后,可以使用y复制选中的文本,或者直接输入字符进行替换。
- 如果想要修改或复制一行或多行中的多个地方,可以使用可视模式(Visual mode)。按
-
使用全局命令:
- 如果想要替换文件中所有出现的 “img”,可以使用全局命令
:%s//img/。按Enter后,vi会询问是否替换每一处,可以输入a来替换所有匹配项,或者逐一确认。
- 如果想要替换文件中所有出现的 “img”,可以使用全局命令
这些是在 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 命令
fgrep 是 grep 的一个变体,它使用固定的字符串进行搜索,而不是正则表达式,这可能会更快。
fgrep "img" filename.txt
8: 使用 egrep 命令
egrep 是 grep 的扩展版本,支持扩展的正则表达式。如果需要使用正则表达式搜索 “img”,可以使用它。
egrep "img" filename.txt
9: 使用 cat 和 grep 结合
首先使用 cat 命令将文件内容输出,然后通过管道传递给 grep。
cat filename.txt | grep -i "img"
10: 使用 less 与 -i 选项
less 是一个分页程序,可以用来查看文件内容。使用 -i 选项可以进行不区分大小写的搜索。
less -i filename.txt
然后,在 less 中输入 img 并按回车键进行搜索。
每种方法都有其特点和适用场景。grep 是最通用和强大的工具,适合大多数搜索任务。awk 和 sed 提供了更多的文本处理能力,而 ag 和 ack 提供了更快的搜索速度和额外的功能。根据具体需求和偏好,选择最适合的方法。
查看文件执行权限及文件大小
要查看 /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: 使用 du 和 awk 结合
如果想要获取所有文件的大小并进行排序,可以使用 du 命令结合 awk 进行处理。
du -Sh /usr/local/bin/* | sort -h
这里 -S 表示不包括子目录的大小,-h 表示以易读的格式显示。
8: 使用 ls 和 awk 结合
类似于 du,ls 也可以与 awk 结合使用,以提取和格式化输出。
ls -l /usr/local/bin | awk '{print $5, $9}'
这将打印出文件的大小和名称。
9: 使用 tree 命令
tree 命令以树状图的形式显示目录的内容,包括文件大小。
tree -h /usr/local/bin
-h 选项使文件大小以易读的格式显示。
10: 使用 ls 和管道
可以将 ls 命令的输出通过管道传递给其他命令,如 grep 或 awk,以进一步处理或筛选信息。
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盘
-
lsblk - 列出所有可用的块设备,包括U盘。
- 作用:显示所有存储设备及其分区的列表。
- 使用示例:
lsblk
-
fdisk -l 或 parted -l - 列出所有磁盘分区表。
- 作用:显示磁盘分区信息,包括U盘的分区。
- 使用示例:
fdisk -l或parted -l
-
mkdir - 创建挂载点。
- 作用:创建一个目录,作为挂载U盘的挂载点。
- 参数:
-p确保目录存在,如果不存在则创建它。 - 使用示例:
mkdir -p /mnt/usb
-
mount - 挂载文件系统。
- 作用:将设备或分区挂载到指定的挂载点。
- 参数:
-o指定挂载选项,如rw(读写模式)、ro(只读模式)等。-U指定U盘的UUID(通用唯一识别码)。-L指定U盘的标签。
- 使用示例:
mount -t vfat /dev/sdb1 /mnt/usb(假设U盘的分区是/dev/sdb1,文件系统类型是vfat)
取消挂载
-
umount - 卸载文件系统。
- 作用:从挂载点卸载文件系统。
- 参数:
-f强制卸载。-l懒卸载,仅在文件系统不再忙碌时卸载。
- 使用示例:
umount /mnt/usb
-
lsof - 列出打开的文件。
- 作用:检查是否有进程正在使用挂载点的文件。
- 使用示例:
lsof /mnt/usb
在使用umount命令之前,确保没有进程正在使用挂载点的文件。如果有,可以使用lsof命令查找并关闭这些进程。
示例
- 插入U盘。
- 使用
lsblk或fdisk -l找到U盘的设备名,例如/dev/sdb1。 - 使用
mkdir -p创建挂载点,例如/mnt/usb。 - 使用
mount命令将U盘挂载到挂载点,例如mount -t vfat /dev/sdb1 /mnt/usb。 - 访问U盘文件:
cd /mnt/usb。 - 完成操作后,使用
umount命令卸载U盘,例如umount /mnt/usb。
具体的文件系统类型(如vfat、ntfs、ext4等)和挂载选项可能根据U盘的文件系统有所不同。在挂载之前,确保系统中已经安装了相应的文件系统驱动。
