cp -R "~/photo dir" /backups #method1 cp -R ~"/photo dir" /backups #method2 cp -R ~/"photo dir" /backups #method3
"$HOME/photo dir"
会成功。 "~/"
扩展到用户的主目录,然后追加包含空格的目录名称。 "~/"
扩展到用户的主目录,然后追加包含空格的目录名称。 "~/"
扩展到用户的主目录,然后追加包含空格的目录名称。 $ ls -1 Beach photo1.jpg Photo1.jpg Photo2.jpg Script.sh $ cat script.sh for i in $(ls *.jpg); do mv $i ${i}.bak done
( command )
sh command
{ command; }
(( command ))
参考。子shell 是程序员捕获(通常是为了处理)来自程序或脚本的输出的一种方式。要在子shell 中运行的命令被封装在单括号内,并且由美元符号前缀:DIRCONTENTS=$(ls -l) echo ${DIRCONTENTS}。
echo "1 2 3" | awk '{for (i=1; i<=NF; i++) s=s+$i};END {print s}'
参考。AWK 是一种专为处理基于文本的数据而设计的编程语言,可以在文件、数据流或使用 shell 管道中使用。换句话说,您可以将 awk 与 shell 脚本结合使用,或直接在 shell 提示符下使用。
find / -name "finance.db" 1>results.txt 2>/dev/null
参考。将 stderr(标准错误)重定向到文件的语法:command 2> errors.txt
。
sed -i '/^$/d' textfile
sed '/^$/d' textfile
cat textfile | sed '/^$/d
sed -i 's/^$//' textfile
参考
sed:sed 是一个流编辑器。流编辑器用于对输入流上的基本文本进行基本文本转换。
-i[SUFFIX]:此选项指定要就地编辑的文件。
'/^$/d':正则表达式位于 //. ^ 是行的开头,$ 是行的结尾。^$ 意味着开始和结束之间没有任何内容。
d:删除模式空间;立即开始下一个周期。
警告,此示例不会在 macOS 终端上工作,因为 macOS 使用了不同的 UNIX 变种。有一种方法可以使其在 macOS 上工作,添加一个额外的标志 -e
,甚至只是 --
(在 StackOverflow 上找到):sed -i -e '/^$/d' textfile.txt
awk -F: '/user1/{print $1 "-" $3 "-" $6}' /etc/passwd
参考。传统上,/etc/passwd 文件用于跟踪注册的每个用户,这些用户都可以访问系统。/etc/passwd 文件是一个以冒号分隔的文件,包含以下信息:1-用户名
,2-密码
,3-用户 ID(UID)
,4-组 ID(GID)
,5-用户 ID 信息(GECOS)
,6-主目录
,7-命令/ shell
参考。set -e 选项指示 bash 如果任何命令[1] 的退出状态非零,则立即退出。您不会希望为命令行 shell 设置此选项,但在脚本中设置它非常有帮助。在所有广泛使用的通用编程语言中,未处理的运行时错误 - 无论是 Java 中的抛出异常,还是 C 中的分段错误,还是 Python 中的语法错误 - 都会立即停止执行程序;后续行不会被执行。
mysql < file.sql > file.txt
注:检查下面的问题以获取变体。
mysql < file.sql > out.txt
注:检查上面的问题以获取变体。
参考。Linux 和 Unix 访问权限标志 setuid 和 setgid(简称 set user identity 和 set group identity)[1] 允许用户以相应的文件系统权限执行可执行文件的所有者或组。并且在目录中更改行为。
cat {$1,textfile}
cat textfile | awk [print $1]
cat textfile | awk '{print $1}'
awk textfile {print $1}
(reverse-i-search)`':
注意:在 Mac 上,它将显示 bck-i-search:
,而不是 (reverse-i-search)
。
var=$( expr 10 / 8 )
(( var= 10 /8 ))
var=$(( 10 / 8 ))
var=$(echo 'scale=2; 10 / 8' | bc)
参考。bc 命令用于命令行计算器。它类似于基本计算器,我们可以使用它进行基本的数学计算。除法的两位小数精度将传递给 bc
,然后计算,并赋值给变量。
txt=Penguins [[ $txt =~ [a-z]{8} ]]; echo $?
HAL>
SHELL="HAL\>"
SHELL="HAL>"
export PS1="HAL>"
PS1="HAL\>"
VAR="/var/www/html/website.com/html/" echo "${VAR#*/html}"
/website.com/html/
/html/website.com/html/
/var/www/html/website.com/
参考
这里发生了什么引用 POSIX shell 规范:${parameter#[word]}
。删除最小前缀模式。word 将扩展为一个模式。然后参数扩展将导致参数,其中模式匹配的最小部分被删除。
例如 ${VAR#?}
将扩展为带有第一个字符删除的 $VAR 的值。并且 ${VAR#\*/html}
将扩展为包括/html
文本的所有字符,该文本将从变量中删除,产生/website.com/html/
的输出。
#!/usr/bin/env bash
~/usr/bin/env bash
'$!/usr/bin/env bash
#/usr/bin/env bash