Shell
当可视化界面无法满足你的要求的情况下,shell 将是你与计算机交互的主要方式之一.
基础的命令
date
: 显示当前日期和时间echo
: 输出指定的字符集which
: 显示可执行文件的位置pwd
: 显示当前工作目录ls
: 列出当前目录的内容cd
: 切换目录mv
: 移动或重命名文件或目录cp
: 复制文件或目录rm
: 删除文件但是不能删除目录rmdir
: 删除一个目录(只能是空目录)- 如果要删除目录底下的许多文件时请使用
-r
- 如果要删除目录底下的许多文件时请使用
cat
: 显示文件内容tail
: 显示文件末尾的内容head
: 显示文件开头的内容history
: 显示历史命令tee
: 同时将内容输出到文件和屏幕vim
: 编辑器touch
: 更新文件的时间戳mkdir
: 创建目录chmod
: 修改文件或目录的权限chown
: 修改文件或目录的拥有者su
: 切换用户sudo
: 以 root 权限运行命令
环境变量
环境变量是一系列的键值对,用于存储系统配置信息.
bash 其实就是一种编程语言,你甚至可以使用 while 循环,for 循环,if 语句,函数等等,来操作环境变量.
常见的环境变量有:
$PATH
: 用于存储可执行文件的搜索路径$HOME
: 用于存储用户的主目录$PWD
: 用于显示当前工作目录$UID
: 用于显示当前用户的用户 ID
我们可以通过echo
命令来查看环境变量的值:
echo $PATH
他就会输出类似于:
/root/.vscode-server/cli/servers/Stable-cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba/server/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
没错这就是我这个服务器说输出的内容,每一个之间以:
隔开.
路径
路径是指文件系统中的一个位置,它由一系列的目录和文件名组成.
在 linux 和 macOS 之中使用正斜杠/
来表示路径,而在 windows 系统中使用反斜杠\
来表示路径.
在 linux 和 macOS 中所有内容都属于根命名,而在 windows 上,每个分区都有一个根目录,就是所谓的C:\
或者D:\
.
每个驱动器都有一个单独的路径结构.
绝对路径
绝对路径是指从根目录开始的完整路径,例如:
/home/user/Documents/myfile.txt
相对路径
相对路径是指从当前目录开始的路径,例如:
./myfile.txt
表示当前目录下的myfile.txt
文件.
../myfile.txt
表示上一级目录下的myfile.txt
文件.
~/Documents/myfile.txt
表示用户主目录下的Documents
目录下的myfile.txt
文件.
权限
在 linux 和 macOS 中,每个文件都有一组权限,用于控制用户对文件的访问权限.
r
读权限: 可以读取文件内容w
写权限: 可以修改文件内容x
执行权限: 可以执行文件
权限可以使用数字表示,例如:
777
所有用户都有读、写、执行权限644
所有用户都有读、写权限,只有文件所有者有执行权限755
所有用户都有读、写、执行权限,只有文件所有者有执行权限
流
流分为输入流和输出流,输入流用于从键盘输入数据,输出流用于显示输出结果。
>
重定向输出流,将命令的输出结果重定向到一个文件中。>>
追加重定向输出流,将命令的输出结果追加到一个文件中。<
重定向输入流,将一个文件的内容作为命令的输入。|
管道命令,将一个命令的输出结果作为另一个命令的输入。
列入我们可以这样使用:
# 输出命令结果到文件
ls -l > file.txt
# 追加命令结果到文件
ls -l >> file.txt
# 重定向输入流
cat < file.txt
# 管道命令
ls -l | grep bin
如何更有趣,更强大的使用 shell?
root 用户
root 就是一个超级用户,拥有最高权限,可以做任何事情.
但是大多数时间都不用 root 用户,你会使用其他名字称为一个用户
sudo
命令可以帮助你以 root 权限运行命令,例如:
sudo ls -l
如何打开文件
有很多命令可以打开文件,例如:
xdg-open
打开文件或目录(linux)open
打开文件或目录(macOS)start
打开文件或目录(windows)
xdg-open myfile.txt