linuxmi@linuxmi:~/www.linuxmi.com$ export PS1="[\u@\W]\$"这里,\u表示当前用户名,\W表示当前工作目录。[、]和@保持原样显示。对于$,如果当前用户不是root,则显示$,否则显示#。更多代码可以在这里找到。请注意,如果您希望更改持久化,这个命令和下面显示的命令应添加到 ~/.bashrc中。
# 查找文件: find ~ -type f -name data-model.ts # 查找文件夹: find ~ -type d -name angular15请注意,第一个参数是要查找的目标文件或文件夹的路径。如果未指定类型,默认为文件。这似乎有点太简单了 😏。让我们来做一些稍微复杂一点的事情。让我们找一些文件,并统计每个文件的行数:
#查找所有.html文件并计算每个文件的行数: find src/app/ -name "*.html" -exec wc -l {} \;
请注意这里的魔法语法。-exec 指定了要针对每个找到的文件运行的命令。花括号 {} 是文件的占位符,而转义的分号 ; 用于防止 shell 解释该命令。我们也可以使用加号 + 来实现同样的效果:
find src/app/ -name "*.html" -exec wc -l {} +输出结果会稍有不同。如果命令以 + 结尾,将会打印总计行数。
# 与其他人共享文件夹,以便他们可以检查文件夹中的内容: chmod 755 <path-to-your-folder> # 与其他人共享不可执行文件: chmod 644 <path-to-your-file> # 与其他人共享可执行文件: chmod 755 <path-to-your-file> # 使文件只读: chmod 400 <path-to-your-file> # 使文件可执行: chmod +x <path-to-your-file>建议查看这篇文章中代码的含义,这太好了,不能在这里重复。
alias rm='gio trash'使用别名可以简化输入
# 堆代码 duidaima.com # 为长命令设置别名: alias dc="docker compose" alias prettier="npx prettier -w" alias eslint="npx eslint --fix" alias pre="pre-commit run --files" # 将一些命令链接在一起: alias update-container="docker-compose pull <service-name> && docker-compose stop <service-name> && yes | docker-compose rm <service-name> && docker-compose up -d <service-name>"使用awk从输入中提取数据
ping google.com -c 2 | grep -iE 'time=.*ms' | awk 'BEGIN {FS="="} {print $NF}'这个命令的重要注意事项:
ping google.com -c 2 | grep -iE 'time=.*ms' | awk -F"=" '{print $NF}' ping google.com -c 2 | awk -F"=" '/time=.*ms/ {print $NF}'在这些简化版本中,我们还可以利用 awk 的另外两个功能:
2.可以在 awk 中使用正则表达式模式,在花括号之前指定。
# 检查当前文件夹中每个文件的大小: ls | xargs -I % du -sh % # 查找一些文件并将其复制到新位置: find ~/Downloads/ -name "*.jpeg" | xargs -I {} cp {} ~/Pictures/ # 将所有文件夹和子文件夹的权限更改为755: find . -type d | xargs -I {} chmod 755 {} # 将当前文件夹和子文件夹中所有文件的权限更改为644: find . -type f | xargs -I {} chmod 644 {}请注意,-I 选项指定了一个占位符,可以在需要的任何地方使用。占位符可以是任何有效的字符串,其中 % 和 {} 是最常见的。
# linuxmi.sh echo mysql -u ${USERNAME} -p${PASSWORD} # 在命令行上: USERNAME=johndoe PASSWORD=12345 bash some_script.sh对于在云环境(如Cloud Build)中运行的某些脚本,这一点尤为重要,因为变量可以自动注入。如果脚本需要许多变量,逐个在命令行中指定会变得很麻烦。在这种情况下,可以将这些变量存储在文件中,并在运行脚本时进行引用:
# variables.env USERNAME=johndoe PASSWORD=12345 # 在命令行上: env $(grep -v '^#' variables.env | xargs) bash some_script.sh请注意,使用此命令时,变量会从目标文件中读取(注释除外),并通过xargs命令执行。env命令用于在修改的环境中运行脚本,而不是当前的Shell环境。
# 让我们假设existing.txt存在,而nonexisting.txt不存在。 # 将STDOUT重定向到文件。这是最常见的用例。 ls -al existing.txt 1>out.log # STDOUT的文件描述符是可选的。 ls -al existing.txt >out.log # 将STDOUT重定向到一个文件,将STDOUT重定向到另一个文件。 ls -al existing.txt non-existing.txt 1>out.log 2>error.log # 将STDOUT和STDERR都指向同一个文件: ls -al existing.txt non-existing.txt 1>combined.log 2>&1 # 它可以简化为: ls -al existing.txt non-existing.txt &>combined.log # 忽略命令的输出和错误: ls -al existing.txt non-existing.txt 1>/dev/null 2>&1 ls -al existing.txt non-existing.txt &>/dev/null请注意,不是所有的Shell都支持&>语法。它支持常用的BASH。
# Linux: git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install # 您可以接受所有默认设置. # MacOS: brew install fzf $(brew --prefix)/opt/fzf/install如果你之前从未尝试过fzf,那么绝对值得一试,你会立刻喜欢上它 。