linux中的shell

在shell中导航

 shell中的路径是一组被分割的目录,在linux和macos中使用分割,在windows系统中使用\ 分割,路径代表的是系统的根目录,所有文件都包括在这个目录之下。当前工作目录可以使用pwd获得,切换目录需要使用cd命令。在路径中,  . 表示的是当前目录, . . 表示的上级目录

root@LAPTOP:~# pwd
/root
root@LAPTOP:~# cd /home
root@LAPTOP:/home# pwd
/home
root@LAPTOP:/home# cd ..
root@LAPTOP:/# pwd
/
root@LAPTOP:/# cd ./home
root@LAPTOP:/home# pwd
/home
root@LAPTOP:/home# cd code
root@LAPTOP:/home/code# pwd
/home/code
root@LAPTOP:/home/code# ../../bin/echo hello
hello

一般来说,当我们运行一个程序时,如果我们没有指定路径,则该程序会在当前目录下执行,查看指定目录下有哪些文件,可以使用ls 命令

root@LAPTOP:/# ls
bin   date.c:Zone.Identifier  etc   init  lib32  libx32      media  opt   root  sbin  srv  tmp  var
boot  dev                     home  lib   lib64  lost+found  mnt    proc  run   snap  sys  usr  xv6-public

除非我们利用第一个参数指定目录,否则ls会打印当前目录下的所有文件

使用参数-l可以打印出文件或文件夹更详细的信息

首先本行的第一个字符d表示code是一个目录

(rws).分别代表了文件所有者,用户组和其他所有人具有的权限,其中 - 表示该用户不具备相应的权限,从下面的信息来看,只有文件所有者能修改(w权限)。为了进入该文件夹,用户需要具备该文件及父文件的“搜索”权限(以可执行:x)。为了列出它包含的内容,用户必须具备对该文件的read权限(r权限)

root@LAPTOP:~# ls -l /home
total 68
-rw-r--r-- 1 root root  3003 Oct 24 11:46 aa.md
-rw-r--r-- 1 root root 10714 Dec 17 20:01 bigger-files-for-xv6.zip
drwxr-xr-x 2 root root  4096 Nov 15 09:44 code
-rw-r--r-- 1 root root  5890 Nov 19 11:42 lazy-page-allocation.zip
drwxr-xr-x 2 root root  4096 Dec 23 16:08 myself
-rw-r--r-- 1 root root  7219 Nov 19 13:40 system-call.zip
-rwxr-xr-x 1 root root  8584 Nov 19 11:45 test
-rw-r--r-- 1 root root   453 Nov 18 17:54 test.c
drwxr-xr-x 4 root root 12288 Dec 17 20:24 xv6-public

在这个阶段,有几个趁手的命令是需要去掌握的,比如 mv 用于重命名或移动文件, cp 拷贝文件, mkdir 新建文件,如果想要知道程序参数和输入输出的信息,亦或是想要了解他们的工作方式,请试试 man 这个程序,如下

root@LAPTOP:~# man mv

在程序间创建连接

在shell中程序主要有两个流,输入流和输出流。当程序中尝试读取信息时,它们会从输入流中读取,当程序打印信息时,它们会将信息输出到输出流中。通常一个程序的输入输出流都是您的终端。也就是,您的键盘作为输入,显示器作为输出。但是我们可以重定向这些流。

最简单的重定向是 < file > file 。这两个命令可以将程序的输入输出流分别重定向到文件

root@LAPTOP:/home# echo hello > hello.txt
root@LAPTOP:/home# cat hello.txt
hello
root@LAPTOP:/home# cat < hello.txt
hello
root@LAPTOP:/home# cat < hello.txt > hello2.txt
root@LAPTOP:/home# cat hello2.txt
hello

您还可以使用 >> 来向一个文件追加内容。使用管道(pipes),我们能够更好的利用文件重定向。 | 操作符允许我们将一个程序的输出和另一个程序的输入连接起来:

root@LAPTOP:/home# ls -l / | tail -n1
-rw-r--r--   1 root root     251 Nov  8 11:06 xv6-public

shell脚本

如下图所示,在bash中为变量赋值的是 foo=bar ,访问变量储存的值其语法为 $foo ,需要注意的是 foo = bar (使用空格隔开)是不能正确工作的,因为解释器会调用 foo 程序,并将 和 bar 作为参数。总的来说,在shell脚本中使用空格会起到分割参数的作用,有时候会造成混淆。

bash中字符串通过 和 " 分割符来定义,但它们的含义并不相同,以 ' 定义的字符串为原义字符串,其中的变量不会被转义,而 定义的字符串会将变量值进行替换

root@LAPTOP:/# foo=bar
root@LAPTOP:/# echo $foo
bar
root@LAPTOP:/# echo "$foo"
bar
root@LAPTOP:/# echo '$foo'
$foo

与其他编程语言一样,bash也可以支持 if , case , while 和 for 这些控制流关键词,同样bash也支持参数

通过符号 \ 可以在shell中键入多行,然后可以通过 ctrl+D 来退出多行

root@LAPTOP:/tmp/missing# ho(){ \
> echo "zhehsi"
> }
root@LAPTOP:/tmp/missing# ho
zhehsi

sudo ln -s /usr/bin/python3.6m /usr/bin/python3 建立python3的连接

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值