#Bash 入门
#Hello World
Bash 的内置命令 echo 可以打印文本。例如:
1$ echo Hello World 2Hello World 3
echo 命令的 -e 选项激活转义字符的解释。例如:
1$ echo -e "Hello \n World" 2Hello 3 World 4
#命令格式
Bash 命令基本遵循以下格式:
1命令 参数1 参数2 参数3 ... 2
例如在 echo Hello World 中,echo 是命令,Hello 是参数1,World 是参数2。
而在 echo -e "Hello \n World" 中,echo 是命令,-e 是参数1,"Hello \n World" 是参数2。
#注释
注释(comment)是写在程序里的说明性文字,不会被执行。
Bash 中的注释使用 # 表示,例如:
1$ # 这是注释,不会执行 2$ echo Hello World # 这也是注释 3Hello World 4
- 只会打印
Hello World不会打印# 这也是注释
如果要让 # 表示该字符本身(而不是注释),可以使用 \ 转义或者使用引号包裹。
例如:
1$ \# 这不是注释,会执行 2bash: #: No such file or directory 3$ echo Hello World \# 这不是注释 4Hello World # 这不是注释 5$ echo "Hello World # 这也不是注释" 6Hello World # 这也不是注释 7
##!Shebang
#!(读作 shebang)是 Bash 中的一个特殊标记,写在脚本文件的开头,用来表示该文怎样运行。
例如:
demo.sh
1#!/usr/bin/bash 2echo Hello World 3
#!/usr/bin/bash表示通过/usr/bin/bash demo.sh命令解释执行
demo.py
1#!/usr/bin/env pyhon3 2print("hello world") 3
#!/usr/bin/env pyhon3表示通过/usr/bin/env pyhon3 demo.py命令解释执行
#命令类型
Bash 中的命令主要分为四类:
- 内置命令
- 可执行程序(外部命令)
- 函数
- 别名
可以通过 type 查看命令的类型。例如:
1$ type type 2type is a shell builtin 3$ type echo 4echo is a shell builtin 5$ type ls 6ls is aliased to 'ls --color=auto' 7$ type cat 8cat is /usr/bin/cat 9
- type 本身是一个内置命令
- echo 是内置命令
- ls 是
ls --color=auto的别名 - cat 是可执行程序,路径为
/usr/bin/cat
#别名
alias 命令可以查看和定义别名,unalias 命令可以删除别名。格式为:
1alias # 查看所有别名 2alias 别名 # 查看指定别名 3alias 别名='命令' # 定义别名 4unalias # 删除别名 5
例如:
1$ alias greet='echo Hello' # 定义别名 2$ alias greet # 查看别名 3alias greet='echo Hello' 4$ greet # 执行别名 5Hello 6$ unalias greet # 删除别名 7$ alias greet # 查看别名 8-bash: alias: greet: not found 9
在命令前加上反斜杠(\)可以抑制别名。例如:
1$ type -a ls # 查看所有可用的 ls 命令 2ls is aliased to `ls --color=auto' 3ls is /usr/bin/ls 4ls is /bin/ls 5$ ls # 实际执行 ls --color=auto 61.txt 2.txt dir1 dir2 7$ \ls # 实际执行 /usr/bin/ls 81.txt 2.txt dir1 dir2 9
#基础命令
| 命令 | 说明 | 示例 |
|---|---|---|
| echo | 输出文字或变量值 | echo "Hello Bash" echo $HOME |
| pwd | 显示当前工作目录路径 | pwd → /home/user |
| ls | 列出目录内容 | ls -l(详细格式) ls -a(显示隐藏文件) |
| cd | 切换工作目录 | cd /etc(进入 /etc) cd ..(返回上一级) |
| mkdir | 创建目录 | mkdir new_folder |
| rmdir | 删除空目录 | rmdir old_folder |
| cp | 复制文件或目录 | cp file1.txt file2.txt cp -r dir1 dir2(递归复制目录) |
| mv | 移动或重命名文件 | mv old.txt new.txt(重命名) mv file.txt /tmp/(移动) |
| rm | 删除文件或目录 | rm file.txt rm -D dir/(删除空目录) rm -r dir/(递归删除目录) rm -rf *(强制删除全部) |
| touch | 创建空文件或更新时间戳 | touch new.txt |
| cat | 查看文件内容 | cat file.txt |
| more / less | 分页查看文件 | less large.txt(可上下翻页) |
| head | 查看文件前几行 | head -n 10 file.txt |
| tail | 查看文件末几行 | tail -n 20 file.txt tail -f log.txt(实时查看) |
#常用快捷键
Ctrl + C- 中断程序的运行Ctrl + Z- 暂停程序的运行,可以通过fg命令恢复运行Ctrl + D- 退出 BashCtrl + A- 光标移动到行首Ctrl + E- 光标移动到行尾Ctrl + U- 删除从光标位置到行首的内容Ctrl + K- 删除从光标位置到行尾的内容Shift + PageUp- 向上翻页Shift + PageDown- 向下翻页
