不是 root 用户的话,需要给脚本添加可执行权限才可以运行, chmod +x hello.sh
在 shell 中,*/ 表示一个通配符,用于匹配当前目录下所有的子目录。
例如,如果当前目录下有子目录 a、b 和 c,那么 */ 表示匹配所有这些子目录,相当于 a/ b/ c/。这个通配符可以与其他命令结合使用,比如 ls */ 表示列出当前目录下所有子目录的内容。
https://www.geeksforgeeks.org/wc-command-linux-examples/
$ wc state.txt
5 7 58 state.txt
https://www.runoob.com/linux/linux-comm-tr.html
Linux tr 命令用于转换或删除文件中的字符。
例子:
使用 tr 命令大小写转换后
$ cat testfile | tr a-z A-Z #转换后的输出
https://www.runoob.com/linux/linux-comm-grep.html
grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。
例子:
grep hello file.txt
列出当前目录下的文件和目录的详细信息:
ls -l 文件名称
例子:
drwxr-xr-x 2 root root 4096 2009-01-14 17:34 bin
文件类型代码:[ d ]–目录、[ - ]–文件、[ l ]–链接、[ b ]–可储存周边设备、[ c ]–序列设备。
文件权限属性:[ r ]–可读、[ w ]–可写、[ x ]–可执行。
分析: (我们假设第一个元素开始index为0)
- 0:代表是文件还是目录,还是其他的类型(这里d:表示是目录)
- 123 :表示拥有人的权限 (这里rwx:代表拥有人有可读,可写,可执行的权限)
- 456:表示同组群使用者权限(这里r-x代表同组群使用者有可读,可执行权限)
- 789:表示其他使用者权限(这里r-x代表其他使用者有可读,可执行权限)
可以使用ls
命令来列出当前路径下的所有文件和文件夹。使用-d
选项来只显示文件夹,而不显示文件。
ls -d */
https://www.runoob.com/linux/linux-comm-chmod.html
chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
https://www.runoob.com/linux/linux-comm-touch.html
Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
IFS是internal field separator的缩写,shell的特殊环境变量。ksh根据IFS存储的值,可以是空格、tab、换行符或者其他自定义符号,来解析输入和输出的变量值。
The default value for IFS
consists of whitespace characters
https://unix.stackexchange.com/questions/184863/what-is-the-meaning-of-ifs-n-in-bash-scripting
例子:
IFS=$'\n'
例子: 设置分隔符
IFS='|'
text='a a a a|b b b b|c c c c'
for i in $text;do echo "i=$i";done
使用ls时显示的文件颜色
- 绿色:表示该文件是可执行文件,例如二进制文件或可执行脚本。
- 蓝色:表示该文件是目录。
- 青色(浅蓝色):表示该文件是链接文件(符号链接)。
- 红色:表示该文件是压缩文件,例如.tar、.gz等压缩文件格式。
- 灰色:表示该文件是其他文件或目录。
- 黄色:表示该文件是设备文件,例如/dev目录下的设备文件。
- 白色:表示该文件是普通文件。
变量赋值的表达式等号左右一定要紧挨着
错误写法:
n1 = "1"
正确写法:
n1="1"
if 表达式[]中记得左右留有空格
错误写法:
if [! -e $1]
正确写法:
if [ ! -e $1 ]