Bash中双横线的作用
发表于|更新于|基础运维
看个例子:
假设有个文件叫
-f, 我想把这个文件删除
假设我要用rm -f -f来删除,会发现无法删除,bash 把第二个-f当作参数了
这个时候可以使用 --(当然有其他方法,这里先不讨论)
1 | rm -f -- -f |
这里的 -- 表示这个程序的参数已经结束了,后面所有的内容都是参数的值了,比如第二个 -f 就不会认为它是 rm 的参数了
现在使用 kubectl exec 也会推荐你用 – 后面再接上命令
文章作者: 张理坤
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
相关推荐
2025-01-07
常用shell组合命令
循环遍历{1..3} 这种格式12345678# i 取值为1 2 3for i in {1..3}; do echo 192.168.1.1$i ; done# i 取值为 1 3 5 7 9for i in {1..9..2} ; do echo $i ; done# 批量删除文件,相当于排列组合rm -rf redis-{1..6}/{appendonly.aof,nodes.conf,nohup.out} seq12# i 的取值是 1 3 5 7 9, 1开始9结束,2是步进for i in $(seq 1 2 9) ; do echo $i ; done for 循环1234for ((i=1;i<=10;i++))do echo $idone while 循环12345678# 死循环i=0while truedo echo "$i: $(date)" i=$((i+1)) sleep 1done 遍历列表123456789101112131...
2026-07-12
linux用户管理
增加用户useradd [选项] 用户名 选项 说明 -g 指定用户的用户主组,(查看用户属于哪个组直接从 passwd 文件查看) -G 指定用户的附加组 (查看用户属于哪个附加组直接从 group 文件查看) -u 指定用户 ID,即指定用户标识符 ((ID 是唯一的),不想使用系统默认指定的 ID 则可以使用 -u 指定 ID,默认 Centos6.x500 之后递增,Centos7.x 从 1000 之后递增 -d 自定义用户的家目录,不要系统默认创建的家目录 -m 创建用户的家目录 -M 不创建家目录 -c 备注信息,可写可不写 -s 指定用户登录的 shell,不写默认是/bin/sh,通常会给程序创建一个不允许登陆的账号 -s /sbin/nologin 或 -s /bin/false -r 创建一个系统账号,centos7 系统账号的 UID 是从 1-999 之间的,centos6 是从 1-499 之间的 常用格式: 1234useradd -m...
2026-07-12
Linux使用nologin用户执行命令
我们知道可以通过编辑 /etc/passwd 给某些用户设置 shell 为 nologin 或 false 可以阻止这些用户登录但某些时候需要特定的用户来执行命令,可以使用 sudo 或 su 来临时切换用户执行 使用 susu -s 是指定 shell,这里 www 用户默认 shell 是 nologin 这里指定使用 /bin/bash, -c 后面接需要运行的命令 1su www -s /bin/bash -c "mkdir /tmp/111" 使用 sudo使用 www 用户来执行 mkdir /tmp/111 1sudo -u www mkdir /tmp/111
2026-07-12
Linux终端复用器Screen和tmux
参考阮一峰的博客https://www.ruanyifeng.com/blog/2019/10/tmux.html 作用想象一下, 我在自己电脑远程 SSH 连接服务器, 正在命令行执行 mysqldump, 突然 (断网\电脑蓝屏) 了, 那么终端就断了, mysqldump 也就断了, 就需要重新来过. 终端复用器就是创建一个虚拟的终端, 可以挂在后台, 随时想进就进, 还有其他好用的功能, 比如将终端日志保存到文件内. 常用的工具有 tmux 和 screen, tmux 类似于 screen, 但是功能更强大, screen 的记录日志功能很好用, 两者各有千秋. 另外终端复用器对 rz/sz 这种工具的兼容性都不好, 建议不要用来进行 rz/sz 传文件 tmux安装12345# centosyum install -y tmux# ubuntuapt-get install -y tmux 快速使用输入 tmux 即可启动, 在终端下面有一条状态栏, 显示当前的终端编号. 退出输入: exit 或者按下 Ctrl + d 或者直接关闭窗口查看后台运行的会话: tmu...
2026-07-12
Shell脚本接受参数
直接传参一般情况下直接传参,比如 test.sh 12#!/bin/bashecho hello $1 ./test.sh worldhello world 使用 getopts 解析参数这种方法可以忽略参数位置,使脚本更完善 test.sh 123456789101112131415161718while getopts "a:b:c" arg #选项后面的冒号表示该选项需要参数do case $arg in a) echo "a $OPTARG" #参数存在$OPTARG中 ;; b) echo "b $OPTARG" ;; c) echo "c" ;; ?) #当有不认识的选项的时候arg为? echo "unkonw ...
2026-07-12
Linux常用命令之lsof
lsof(list open files)是一个列出当前系统打开文件的工具。在 linux 环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。 常用参数 参数 说明 -p 根据 pid 查找 直接加文件路径 查看这个文件被哪个进程打开了 -c 显示 COMMAND 列中包含指定字符的进程所有打开的文件 lsof -u username 显示所属 user 进程打开的文件 -i 用以显示符合条件的进程情况 lsof -g gid 显示归属 gid 的进程情况 lsof +d /DIR/ 显示目录下被进程打开的文件 lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长 lsof -d FD 显示指定文件描述符的进程 lsof -n 不将 IP 转换为 hostname,缺省是不加上 -n 参数 lsof -i 用以显示符合条件的进程情况 一些例子查看 java 程序打开的文件1lsof -c java 当然你也可以到 /pr...
公告
此博客为我记录运维工作总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
欢迎加博主微信,进微信运维技术交流群:

