简介
- shell编程常用技巧
linux 目录下按照规则排序文件
在 Linux 中,可以使用 ls
命令结合不同的选项来按照规则排序目录下的文件。以下是一些常用的示例和方法:
1. 按文件名排序
默认情况下,ls
命令按文件名的字母顺序排序:
1 | ls |
2. 按文件大小排序
使用 -S
选项按文件大小排序:
1 | ls -lS |
3. 按修改时间排序
使用 -t
选项按修改时间排序:
1 | ls -lt |
4. 按访问时间排序
使用 -u
选项按访问时间排序:
1 | ls -lu |
5. 按文件创建时间排序(有些文件系统不支持)
使用 -c
选项按文件创建时间排序:
1 | ls -lc |
6. 逆序排序
使用 -r
选项逆序排列:
1 | ls -lr |
7. 按扩展名排序
使用 --sort=extension
按扩展名排序:
1 | ls -l --sort=extension |
8. 按文件大小排序并显示人类可读格式
使用 -h
选项结合 -S
选项:
1 | ls -lSh |
9. 按指定规则排序文件
结合 find
和 sort
命令,可以按照更加复杂的规则进行排序。例如,按文件大小排序:
1 | find . -type f -exec ls -l {} + | sort -k 5 -n |
10. 按文件名排序,并忽略大小写
使用 -f
选项结合 sort
命令:
1 | ls | sort -f |
示例
假设有一个目录,里面包含以下文件:
1 | file1.txt |
按文件名排序(忽略大小写)
1 | ls | sort -f |
输出:
1 | file1.txt |
按文件大小排序
1 | ls -lS |
输出(假设文件大小分别为 100B, 200B, 150B, 50B, 250B):
1 | -rw-r--r-- 1 user group 250 Apr 10 10:00 file10.txt |
总结
通过结合使用 ls
命令的不同选项以及 sort
命令,你可以根据各种规则对目录下的文件进行排序。选择适合你需求的命令和选项,并根据需要进行调整。
shell 字符串分割
在 Shell 中,可以使用多种方法来分割字符串。下面是几种常见的方法:
1. 使用 IFS
(内部字段分隔符)
使用 IFS
变量可以轻松地将字符串分割成数组。以下是一个示例,将逗号分隔的字符串分割成数组:
1 |
|
2. 使用 cut
cut
命令可以从字符串中提取字段。以下是一个示例,使用逗号作为分隔符:
1 |
|
3. 使用 awk
awk
是一个强大的文本处理工具,可以用来分割字符串。以下是一个示例:
1 |
|
4. 使用 tr
和 while
循环
tr
命令可以用来替换字符。结合 while
循环,可以逐个处理字符串中的每个部分。以下是一个示例:
1 |
|
5. 使用参数扩展
在 Bash 中,还可以使用参数扩展进行简单的字符串分割:
1 |
|
这些方法可以帮助你在 Shell 脚本中进行字符串分割。选择最适合你需求的方法,并根据需要调整分隔符和字符串。
在shell script中以某用户身份执行命令
1 |
|
linux 写一个定时刷新的24h运行脚本
你可以使用crontab
来创建一个定时刷新的脚本。crontab
是一个用于在Linux系统上定期执行任务的工具。下面是一个示例,假设你有一个名为refresh.sh
的脚本,你想每天定时运行:
首先,创建一个refresh.sh
脚本:
1 |
|
保存并退出。
接下来,编辑你的crontab
:
1 | crontab -e |
在编辑器中添加以下行,表示每天的0点执行refresh.sh
脚本:
1 | 0 0 * * * /path/to/refresh.sh |
确保将/path/to/refresh.sh
替换为你实际的refresh.sh
脚本的路径。
保存并退出编辑器。
这将使你的refresh.sh
脚本每天的午夜被执行,从而实现了24小时定时刷新的需求。
linux stat 获取指定目录的空闲空间
你可以使用 stat
命令获取文件系统的信息,但是 stat
命令不能直接获取指定目录的空闲空间。要获取指定目录的空闲空间,你可以使用 df
命令。
以下是一个示例 Bash 脚本,用于获取指定目录的空闲空间:
1 |
|
在这个脚本中,你需要将 /path/to/your/directory
替换为你要查询空间信息的目录路径。脚本将首先使用 df
命令获取该目录所在的文件系统,然后再次使用 df
命令获取该文件系统的空闲空间。最后,脚本会输出空闲空间的信息。
请注意,这个脚本只是一个简单的示例,适用于大多数情况。在实际使用中,你可能需要更复杂的逻辑来确保脚本的稳健性和安全性。
linux bash 字符串删除
如果你要删除字符串中的特定字符或子字符串,你可以使用 Bash 的内置功能 sed
、awk
或字符串操作函数来实现。下面是一些方法示例:
使用 sed
删除字符串中的字符:
1 |
|
使用 awk
删除字符串中的字符:
1 |
|
使用字符串操作函数删除字符串中的子字符串:
1 |
|
这些示例中,原始字符串是 “Hello World”,然后使用不同的方法删除了其中的空格或子字符串。你可以根据自己的需求选择其中一种方法。
linux bash 获取docker容器的id
要获取正在运行的 Docker 容器的 ID,你可以使用 Docker 命令行工具。以下是使用 docker ps
命令来获取正在运行容器的 ID 的示例:
1 |
|
在这个脚本中,docker ps -q
命令用于列出正在运行的容器,并使用 -q
参数只显示容器的 ID。然后将结果存储在 container_id
变量中,并输出该变量的值。
这只会获取第一个正在运行的容器的 ID。如果你想获取特定容器的 ID,你可以使用 docker ps -qf
命令并提供过滤条件,如容器的名称、标签等。例如,要获取名称为 my_container
的容器的 ID,你可以使用以下命令:
1 | container_id=$(docker ps -qf "name=my_container") |
你可以根据自己的需要调整这些命令。
linux find命令找到指定文件并保存到数组中
在Linux中,find
命令用于查找文件和目录。如果你想使用find
命令找到指定文件并将结果保存到一个数组中,你可以使用以下方法:
1 | # 1. 使用 find 命令查找指定文件,并将结果保存到数组 |
在这个例子中:
/path/to/search
是你要搜索的目录的路径。"your_pattern"
是你要匹配的文件名模式。你可以使用通配符来匹配文件名的一部分,比如*.txt
表示所有以.txt
结尾的文件。files_array
是保存文件列表的数组。
请注意,上述代码假设文件和目录名不包含空格。如果你的文件名中可能包含空格,建议使用更复杂的方法来处理,比如使用 find
命令的 -print0
选项以及 readarray
命令:
1 | # 使用 find 命令查找指定文件,将结果以空字符分隔保存到数组 |
这种方法通过 -print0
选项和 readarray -d ''
的配合,确保了对文件名中可能包含的空格进行正确处理。