初级网站建设,网站建设纳千网络,有质感的wordpress主题,crm软件有哪些作者#xff1a;20岁爱吃必胜客#xff08;坤制作人#xff09;#xff0c;近十年开发经验, 跨域学习者#xff0c;目前于新西兰奥克兰大学攻读IT硕士学位。荣誉#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者#xff0c;在CTF省赛校赛多次取得好成绩。跨领域… 作者20岁爱吃必胜客坤制作人近十年开发经验, 跨域学习者目前于新西兰奥克兰大学攻读IT硕士学位。荣誉阿里云博客专家认证、腾讯开发者社区优质创作者在CTF省赛校赛多次取得好成绩。跨领域学习喜欢摄影、弹吉他、咏春拳。文章深入浅出、语言风趣爱吃必胜客社区创立者旨在“发现美 欣赏美 学习系列专栏 。 Python学习宝库 。 网络安全学习宝库 文章目录 ⭐️前言 复制文件 位置参数positional arguments☀️那么这和我们平时用的终端里面的命令有什么联系吗, 我们经常也要加一些参数, 比如 ls -l☀️ls -l如何实现的 ⭐️请问命令行里如何检测到后面参数 -l等等的使用 getopts 命令适用于Bash脚本使用位置参数 要创建一个名为 kk.sh 的卖萌命令☀️ Git 提交出现了大量的文件变动☀️piping output redirection ⭐️前言 #!/bin/bash
echo hello
osascript -e display notification \lqkkkk\ with title \woshi\ 复制文件 位置参数positional arguments 在BashBourne Again Shell中您可以使用位置函数来获取脚本或函数中参数的位置。这些参数称为位置参数它们是脚本或函数接受的命令行参数。位置参数从1开始编号$1 表示第一个参数$2 表示第二个参数以此类推。
☀️那么这和我们平时用的终端里面的命令有什么联系吗, 我们经常也要加一些参数, 比如 ls -l
是的Bash中使用的位置参数概念与在终端中运行命令时使用的命令行参数有关。在终端中运行命令时您通常可以指定一些选项和参数来自定义命令的行为就像您提到的 ls -l 一样。
在这种情况下ls 是一个命令而 -l 是一个选项或参数。在Bash脚本中您可以通过使用位置参数来访问这些传递给脚本的选项和参数。例如如果您编写一个脚本来处理文件列表并且您希望能够接受用户指定的选项您可以在脚本中使用位置参数来访问这些选项和参数。
以下是一个示例演示如何在Bash脚本中处理类似于 ls -l 这样的命令行参数
#!/bin/bashwhile getopts :l option; docase $option inl)echo 执行长格式列表操作# 在这里执行适当的操作;;\?)echo 未知选项: -$OPTARGexit 1;;esac
done# 处理其他参数
shift $((OPTIND-1))
echo 其他参数$在上面的示例中getopts 函数用于解析选项而shift 命令用于将已处理的选项从参数列表中移除以便您可以处理剩余的参数。
因此位置参数在Bash脚本中用于处理命令行参数与您在终端中使用的命令的选项和参数概念密切相关。
☀️ls -l如何实现的
ls -l 命令是Linux和Unix系统中用于列出文件和目录的命令以长格式显示它们的详细信息。要编写一个简化版本的 ls -l 命令您可以使用Bash脚本。以下是一个示例脚本它演示了如何实现类似 ls -l 的功能
bash Copy code
#!/bin/bash# 使用当前目录作为默认目录如果用户没有提供目录参数
directory.# 检查是否有用户提供的目录参数
if [ $# -gt 0 ]; thendirectory$1
fi# 列出目录中的文件和目录并显示长格式信息
for item in $directory/*; doif [ -f $item ]; then# 如果是文件显示文件名和文件大小file_size$(stat -c %s $item)echo -n File: $item, Size: $file_size byteselif [ -d $item ]; then# 如果是目录显示目录名和目录中的文件数目num_files$(find $item -maxdepth 1 -type f | wc -l)echo -n Directory: $item, Files: $num_filesfi# 显示权限信息和最后修改时间permissions$(ls -l $item | awk {print $1})last_modified$(ls -l $item | awk {print $6, $7})echo , Permissions: $permissions, Last Modified: $last_modified
done这个脚本的工作方式如下
默认情况下它将使用当前目录作为要列出的目录但用户可以通过提供目录路径作为参数来指定其他目录。
对于指定的目录脚本使用 for 循环遍历其中的每个项目文件和子目录。
对于每个项目脚本检查它是文件还是目录并显示相关信息
如果是文件它会显示文件名和文件大小。 如果是目录它会显示目录名和目录中的文件数目。 脚本还会显示文件或目录的权限信息和最后修改时间这是通过 ls -l 命令和 awk 命令来获取的。
请注意这只是一个简化的示例不包括 ls -l 命令的所有功能和选项。实际的 ls 命令非常复杂具有许多不同的选项和参数上面的脚本只是一个简单的模拟。要实现完整的 ls -l 功能需要更多的代码和复杂性。
⭐️请问命令行里如何检测到后面参数 -l等等的
在命令行中通常使用选项或标志来传递参数给命令。这些选项通常以短划线单个 -或双短划线--开头后面跟着选项的名称。例如ls -l 中的 -l 是一个选项。
要在命令行中检测和处理选项您可以使用getopts或getopt命令或者在Bash脚本中使用$1$2$3等位置参数。
使用 getopts 命令适用于Bash脚本
getopts 命令是用于解析命令行选项的Bash内置命令。以下是一个示例演示了如何在Bash脚本中使用 getopts 来处理选项
#!/bin/bashwhile getopts :l opt; docase $opt inl)echo 选项 -l 被指定# 在这里执行相关操作;;\?)echo 未知选项: -$OPTARG;;esac
done在这个示例中getopts 用于解析命令行选项。-l 是一个示例选项。当用户在命令行中指定 -l 时脚本会识别它并执行相应的操作。
使用位置参数
另一种在Bash脚本中处理命令行选项的方式是使用位置参数。在这种情况下您可以使用 $1$2$3 等来访问命令行参数然后在脚本中进行适当的判断和处理。以下是一个示例
#!/bin/bashwhile [ $# -gt 0 ]; docase $1 in-l)echo 选项 -l 被指定# 在这里执行相关操作;;*)echo 未知选项: $1;;esacshift
done在这个示例中while 循环遍历所有的命令行参数case 语句用于识别选项然后执行相应的操作。
这些示例演示了如何在命令行中检测和处理选项以及如何根据用户提供的选项执行相应的操作。根据您的需要您可以扩展这些示例来处理更多的选项和参数。 要创建一个名为 kk.sh 的卖萌命令
可以按照以下步骤操作
使用文本编辑器创建一个新文件并将以下内容复制粘贴到文件中
#!/bin/bashecho kk无敌可爱拳这个脚本非常简单只是输出了一条信息。
保存文件并退出文本编辑器。
接下来您需要将脚本文件设置为可执行文件。在终端中执行以下命令
chmod x kk.sh这会将执行权限添加到 kk.sh 文件。
现在您可以将脚本移动到系统的一个目录以便系统可以找到它。通常将脚本添加到 /usr/local/bin 目录是一个不错的选择因为这个目录包含了系统命令。
sudo mv kk.sh /usr/local/bin/输入您的管理员密码来确认移动操作。
现在您可以在终端中运行 kk.sh 命令来执行卖萌命令。例如
kk.sh这将输出 “kk无敌可爱拳”。
您的卖萌命令 kk.sh 现在已经可以像其他系统命令一样在终端中使用了。请注意如果您不希望输入 sh 扩展名来运行脚本可以考虑在脚本的开头使用 #!/bin/bash 或 #!/usr/bin/env bash 来指定解释器然后将脚本移动到系统路径中。这将使您能够直接运行 kk而不是 kk.sh。
☀️ Git 提交出现了大量的文件变动
特别是在 node_modules 文件夹这是因为你将 node_modules 文件夹提交到了 Git 仓库。通常这种做法并不推荐原因如下
体积庞大node_modules 文件夹通常包含大量的文件这会使你的仓库体积变得非常庞大。这不仅会占用更多的存储空间而且也会影响克隆和拉取仓库的速度。
更新频繁依赖库可能会频繁更新。每当你更新依赖时node_modules 中的文件都会发生变化这将导致你需要进行大量的提交和推送进一步增加仓库的体积。
依赖管理npm 或 yarn 等包管理器已经为你处理了依赖关系。只需在你的项目中保留一个 package.json 和可选的package-lock.json 或 yarn.lock 文件即可。其他人在克隆项目时可以通过运行 npm install 或 yarn 来安装所有依赖。
环境差异不同的开发环境可能会有不同的依赖需求例如不同的操作系统可能需要不同的二进制文件。将 node_modules 提交到 Git 中可能会导致在不同环境下出现兼容性问题。
如何解决 为了避免这种情况你应该在 Git 仓库中添加一个 .gitignore 文件并在其中指定 Git 忽略 node_modules 文件夹。这样无论何时进行提交node_modules 中的文件都不会被包含在内。你可以按照以下步骤操作
在项目根目录创建一个名为 .gitignore 的文件。
在 .gitignore 文件中添加以下内容
Copy code
node_modules/将 .gitignore 文件提交到你的 Git 仓库。
如果 node_modules 已经被提交到了你的仓库你需要从仓库中移除它。可以使用以下命令
bash Copy code
git rm -r --cached node_modules
git commit -m Remove node_modules from repository
git push这些步骤将帮助你保持 Git 仓库的整洁和高效。
☀️piping
ls -l /usr/bin | grep kkoutput redirection
例子 覆盖继续添加上cat hello.txt
kk无敌可爱拳~/Code ---------------------------------------------------------- at 16:57:38echo wudi hello.txt~/Code ---------------------------------------------------------- at 16:58:15cat hello.txt
kk无敌可爱拳
wudi~/Code ---------------------------------------------------------- at 16:58:18