Linux Shell 认识与学习

Linux的终端机执行命令的方式,是通过bash环境来处理的。bash包括变量的设置与使用,、bash操作环境的构建、数据流重定向的功能。下面的知识,对主机的维护与管理有重要的帮助。

管理整个计算机硬件的其实是操作系统的内核,这个内核被保护,一般用户只能通过shell来和内核通信(shell将输入的命令与内核通信,内核可以控制硬件来正确无误地工作)。man、chmod、chown、vi、mkfs等命令,都是独立的应用程序,我们可以通过shell(即命令行模式)来操作这些应用程序,让这些应用程序调用内核来运行所需的工作。

bash shell 的内置命令:type

type命令找出可执行文件,而不是一般文件名。
linuxidc@Ubuntu:~/Desktop/linux_study$ type ls  # 未加任何参数的时候,列出ls的最主要使用情况
ls is aliased to `ls --color=auto'
linuxidc@ubuntu:~/Desktop/linux_study$ type -t ls # 添加参数-t列出ls执行时的依据
alias
linuxidc@ubuntu:~/Desktop/linux_study$ type -a ls # 添加参数-a会从PATH变量定义中,将所有含有 ls 的命令都列出来,包含alias
ls is aliased to `ls --color=auto'
ls is /bin/ls
linuxidc@ubuntu:~/Desktop/linux_study$ type cd
cd is a shell builtin                            # cd是shell内置命令

命令的执行

很多时候输入命令过长,会在换行之前加入\,这样做的目的是为了将换行符[enter]转移过来。成功转移过后,下一行最前面就会出现>的符号,可以继续输入命令。

shell 变量功能

变量就是用一个特定字符串代表不固定的内容。在linux中要将变量的内容显示出来,可以使用echo这个命令来显示变量,但是变量在被显示时,必须加上$.
linuxidc@ubuntu:~/Desktop/linux_study$ echo $variable

linuxidc@ubuntu:~/Desktop/linux_study$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

设置变量
linuxidc@ubuntu:~/Desktop/linux_study$ echo $myname

linuxidc@ubuntu:~/Desktop/linux_study$ myname=flora
linuxidc@ubuntu:~/Desktop/linux_study$ echo $myname
flora

保留原先变量,然后进行设置
linuxidc@ubuntu:~/Desktop/linux_study$ myname="$myname lin"
linuxidc@ubuntu:~/Desktop/linux_study$ echo $myname
flora lin

在执行过程中, 反单引号(`) ,之内的命令会被先执行,而执行出来的结果将作为外部的输入信息。locate命令可以列出所有的相关文件名,但是如果我们想知道每个crontab相关文件名的权限:
linuxidc@ubuntu:~/Desktop/linux_study$ ls -l `locate crontab`
-rw-r--r-- 1 root root      401 Feb 19  2014 /etc/anacrontab
-rw-r--r-- 1 root root      722 Feb  8  2013 /etc/crontab
-rwxr-sr-x 1 root crontab 34824 Feb  8  2013 /usr/bin/crontab
-rw-r--r-- 1 root root    1184 Apr  7  2014 /usr/share/bash-completion/completions/crontab
-rw-r--r-- 1 root root    27684 Feb  8  2013 /usr/share/doc/cron/examples/crontab2english.pl
-rw-r--r-- 1 root root    2521 Feb  8  2013 /usr/share/man/man1/crontab.1.gz
-rw-r--r-- 1 root root      892 Feb 19  2014 /usr/share/man/man5/anacrontab.5.gz
-rw-r--r-- 1 root root    5687 Feb  8  2013 /usr/share/man/man5/crontab.5.gz

先以locate将文件名数据列出来,然后使用ls命令来处理。

环境变量的功能

环境变量能够帮我们达到很多功能,包括主文件夹的变换,提示符的显示,执行文件查找的路径等。

查看默认的环境变量:
linuxidc@ubuntu:~/Desktop/linux_study$ env
#......
_=/usr/bin/env                # 上一次使用的命令的最后一个参数(或命令本身)

随机数

RANDOM变量的内容介于0~32767之间,所以要进行数值计算才能获取一个一位数。
linuxidc@ubuntu:~/Desktop/linux_study$ declare -i number=$RANDOM*10/32768;echo $number
1
linuxidc@ubuntu:~/Desktop/linux_study$ declare -i number=$RANDOM*10/32768;echo $number
4
linuxidc@ubuntu:~/Desktop/linux_study$ declare -i number=$RANDOM*10/32768;echo $number
5

set查看所有变量(含环境变量与自定义变量)

bash不只有环境变量,还有一些比较重要的参数,以及用户自己定义的变量。
linuxidc@ubuntu:~/Desktop/linux_study$ set

PS1命令提示符

每当我们按下回车键去执行某个命令后,最后要再次出现提示符,会去主动读取这个变量值。
linuxidc@ubuntu:~/Desktop/linux_study$ cd /home
linuxidc@ubuntu:/home$ PS1='[\u@\h \w \A #\#]\$'
[linuxidc@ubuntu /home 08:48 #46]$ls
linuxidc
[linuxidc@ubuntu /home 08:51 #47]$

\w 代表完整的工作目录名称,由更目录写起来的目录名称。但是主文件夹将会用~替代。

\A 显示时间,二十四小时格式“HH:MM”。

\# 执行第几个命令。

\$ 提示符,如果是root时,提示符为#,否则为$。

变量键盘读取、数组与声明:read、array、declare

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15794.html