所有内容均来自于个人观看视频后,记录。
由于是视频,所以不好文字描述,先将就着记录一下。
第一节
基础命令
当我们在Linux上输入 echo
、 date
等命令时,会执行一个程序。比如 date
会返回当前系统的时间,那么你知道 echo
、 date
等命令是存在哪里的吗?是怎么调用的吗?
#1.输入该命令后,会输出一段由 : 分割的列表,这个列表里面的路径,就是当你输入命令后,回去哪里查询你输入的命令程序
echo $PATH
#2.输入该命令后,会返回 echo 程序存在的路径
which echo
在 Linux
和 MacOS
中文件目录的根目录是 \
,而在 Windows
中每个驱动器都有一个独立的根目录。原因是 Linux
和 MacOS
都是将所有驱动挂载到同一个命令空间中也是 \
下,而 Windows
则是一个独立的驱动器,比如: C:/ 、 D:/
# 1.表示为上一级目录
cd ..
# 2.表示为当前目录
cd .
# 3.会显示当前目录下的文件列表
ls
# 4.ls可以传递参数,表示输出指定目录下面的文件列表
ls ../usr
# 5.会出更多的文件信息,包括文件的创建时间和文件的权限
ls -l
# 5.该命令会返回到你上一次所在的目录, 可以在两个目录中来回切换
cd -
在 Linux
中使用 mkdir
可以创建目录,使用 mkdir My Photos
会创建两个目录。那么如何创建一个名叫 My Photos 的目录呢?
# 可以使用 反斜杠 进行转义或者使用 引号包裹
mkdir My\ Photos
mkdir "My Photos"
# 当要进入这个目录时,需要使用 引号 进入
cd "My Photos"
流、重定向
每个程序都有两个流: 输出流 、 输入流。
<
< file
"<"表示将这个程序的输入重定向为这个文件(覆盖)>
> file
">"表示将这个程序的输出重定向为这个文件(覆盖)>>
表示为追加,他不会覆盖之前的内容,而是追加到之前的内容后面|
表示为管道符,他会将左边程序的输出作为右边程序的输入
# 1.我们甚至可以使用cat来进行,将hello.txt中的内容重定向到cat中,然后再重定向输出成hello2.txt
cat < hello.txt > hello2.txt
# 2.这个命令会将下面 ls -l的输出作为 tail 的输入 并将tail的输出重定向到 ls.txt
ls -l ../ | tail -n1 > ls.txt
系统文件
在 Linux
中 根目录下的 sys
目录中全是系统内核的信息。
由于 Linux
将这些设备都映射成了文件,所以我们可以直接操作这些文件来操作系统。
/dev/null 是一个黑洞文件,通常可以将不要的日志丢进去。是一个特殊的UNIX设备。
权限
当我们在尝试修改上面所说到的系统内核的文件时,如果你不是超级管理员的用户登录,那么你会收到 权限不足的提示。
# 假设 kernelfile 是一个系统文件,里面有一个值为1表示开机,2为休眠,现在我们需要把它改成2进入休眠状态
# 1.当我们想到要修改一个文件的内容时,我们肯定会用 重定向来操作
echo 2 > kernelfile
# 2.上面的操作会提示你权限不足,那么你也许会想到使用 sudo 来提供管理员权限进行操作
sudo echo 2 > kernelfile
# 3.但是上面的操作执行后,任然提示权限不足
#################
# 其实上面的操作原理是 告诉shell打开 sudo 然后并且执行 echo 命令将输出重定向到 kernelfile中,
# 但是 kernelfile 并不是由 sudo 程序打开,而是由shell打开
# 所以由 我 打开的 shell 程序,因为我不具备管理员权限,所以提示权限不足。那么该如何做呢?
# 4.表示切换到root用户
sudo su
# 5.使用管理员用户即可操作
第二节
变量
创建和使用一个变量
# 1.声明一个foo变量它的值为bar, 在shell中空格是有意义的,所以不要盲目空格
foo=bar
# 2.我们可以使用$ 来引用这个变量
echo $foo
字符串
# 1.echo 输出一个字符串,此时为双引号
echo "my name is zhs"
# 2.同上,只不过是单引号
echo 'my name is zhs'
######
# 需要注意的是单引号和双引号在对于纯字符串来说的时候是一样的,请看下面的例子
foo=lisi
echo 'my name is $foo' # my name is $foo
echo "my name is $foo" # my name is lisi
# 此时它们的输出并不相同,在双引号中使用 $ 会展开里面的它的变量
$ 符号
# 1.$$ 为当前执行的进程id
echo $$
# 2.$0 为当前执行的shell脚本名称
echo $0
# 3.$1、$2 ... $9 为传递的第一个到第九个参数
echo $1
# 4.$@ 为展开所有传递的参数
echo $@
# 5.$() 调用其他的方法
echo $(pwd)