美文网首页Java 杂谈
shell家族来了,还不赶快学习

shell家族来了,还不赶快学习

作者: 清风_d587 | 来源:发表于2018-08-15 09:49 被阅读3次

shell家族

shell:命令解释器,根据输入的命令执行相应命令。

察看当前系统下有哪些shell:

cat/etc/shells

察看当前系统正在使用的shell

echo$SHELL

常见shell:

/bin/sh (已经被 /bin/bash 所取代)

/bin/bash (就是 Linux 默认的 shell)

/bin/ksh (Kornshell 由 AT&TBell lab. 发展出来的,兼容于 bash)

/bin/tcsh (整合 C Shell ,提供更多的功能)

/bin/csh (已经被 /bin/tcsh 所取代)

/bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)

1.2 bash

bash 是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)

bash 是 许 多 Linux 平 台 的 内 定 Shell, 事 实 上, 还 有 许 多 传 统 UNIX 上 用 的 Shell, 像 tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其 它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用。

bash是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格 的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。

1.3    命令和路径补齐

在bash下敲命令时,Tab键可以补全已经敲了一部分的文件名和目录名。如果是Ubuntu 系统,系统默认启用了bash completion,还可以补全命令的某些参数、Makefile目标等 等。如果是Debian系统,可以用以下命令启用bash completion:

$source/etc/bash_completion

建议将这一行加入∼/.bashrc启动脚本中。比如使用sudo后面接命令,如果没有bash completion则只有sudo可以补全,后面的命令不能补全。如果启用了bash completion,则 后面的命令,包括命令的某些参数(比如aptitude命令的install)都可以补全了。

比如在主目录下要列出桌面目录的内容,输入(不回车)

$ ls De

然后敲Tab键,如果以De开头的文件或文件夹只有Desktop一个,就自动补全为

$ ls Desktop

否则,再敲一次Tab键,将会把所有以De开头的文件或文件夹列在下面供你选择(在这里 我们手动创建另外一个以De开头的文件)

$ touch Death

$ ls De

Death    Desktop/

你可以再补敲一个s再Tab,这次Desktop就会补全到命令后面了。有 的 人 是 从 DOS 时 代 过 来 的, 留 下 一 个 很 不 好 的 习 惯 就 是 在 找 一 个 文 件 时 反 复 地cd、ls、cd、ls等找到了要找的文件时再想回到先前的目录,已经不记得先前是 从哪个目录转到这里来的了。

我们从上面可以看出,Tab补全本身就具备了ls的功能,上面的Tab补全相当于ls -Fd De*命令。所以我们完全不必反复地cd到别的目录然后ls去找文件,多按几次Tab就可以一条 命令完成了,这样的好处是我们的当前目录不用变,不需要找完了文件再cd回来,同时省去 了大量的按键次数。更重要的是,自动补全同时兼具了检查拼写错误的功能,如果前面几个 字母拼写错了,就补全不出东西来,用户就知道拼写错了,如果前面几个字母没有拼写错, 那么由系统补全出来的文件名肯定也不会有拼写错误,避免了用户在敲很长的文件名时易犯 的拼写错误。

1.4    历史记录

history

历史记录是另外一个非常方便的功能。按上下移动光标键(或者Ctrl-p、Ctrl-n)可以 一条一条浏览以前输过的命令。如果有需要重复输入的命令就不用输第二次了。如果你能记 住以前输过的某条命令中的某个关键字,可以按Ctrl-r,然后输入关键字,随着你每输入一 个字母,bash会做增量式(increasingly)查找,也可以反复按Ctrl-r或Ctrl-s向前向后查 找。如果找到了,按左右移动光标键或Home键(Ctrl-a)或End键(Ctrl-e)将该命令带回提示  符下进一步修改,或者直接按Enter键原封不动地执行该命令。

1.5    主键盘快捷键

bash的快捷键和emacs保持一致,用惯其中之一再用另一个程序会很顺手的。请记住一条原则:尽量使用主键盘快捷键而不使用移动光标键和编辑键。因为手不必离开主键盘是效 率最高的,这样在你一生之中所节省的来回移动手的时间绝对可以用星期来计算,是绝对值 得你花十分钟的时间记住这些快捷键的。

功能快捷键助记

上Ctrl-pprevious

下Ctrl-nnext

左Ctrl-bbackward

右Ctrl-fforward

DelCtrl-ddelete光标后面的

HomeCtrl-athe first letter

EndCtrl-eend

BackspaceBackspacedelete光标前面的

目录和文件

2.1    类Unix系统目录结构

ubuntu没有盘符这个概念,只有一个根目录/,所有文件都在它下面

/    根目录

bin//系统可执行程序,如命令

boot//内核和启动程序,所有和启动相关的文件都保存在这里 grub //引导器相关文件

dev//设备文件

etc//系统软件的启动和配置文件,系统在启动过程中需要读取的文件都在这个目录。如LILO参数、用 户账户和密码。

home//用户的主目录。下面是自己定义的用户名的文件夹

lib//系统程序库文件,这个目录里存放着系统最基本的动态链接共享库,类似于Windows下的system32 目录,几乎所有的应用程序都需要用到这些共享库。

media//挂载媒体设备,如光驱、U盘等

mnt//目录是让用户临时挂载别的文件系统,如挂载Windows下的某个分区,ubuntu默认还是挂载在/media 目录。

opt//可选的应用软件包(很少使用)

proc//这个目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息。也就是说,这个目录 的内容不在硬盘上而是在内存里。

sbin//管理员系统程序 selinux

srv

sys//udev用到的设备目录树,/sys反映你机器当前所接的设备 tmp //临时文件夹

usr//这是个最庞大的目录,我们要用到的很多应用程序和文件几乎都存放在这个目录下。] bin    // 应用程序

game//游戏程序 include

lib//应用程序的库文件 lib64

local//包含用户程序等 sbin  //管理员应用程序

2.2    用户目录

位于/home/user,称之为用户工作目录或家目录,表示方式:

/home/user

~

2.2.1    相对路径和绝对路径

绝对路径

从/目录开始描述的路径为绝对路径,如:

cd/home ls /usr

相对路径

从当前位置开始描述的路径为相对路径,如:

cd ../../ ls abc/def

.和..

每个目录下都有.和..

. 表示当前目录

.. 表示上一级目录,即父目录 根目录下的.和..都表示当前目录

2.3 ls

ls[OPTION]…[FILE]…

ls是英文单词list的简写,其功能为列出目录的内容。这是用户最常用的一个命令,因 为用户需要不时地查看某个目录的内容。该命令类似于DOS下的dir命令。 对于每个目录, 该命令将列出其中的所有子目录与文件。对于每个文件,ls将输出其文件名以及所要求的其 他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当 前目录的信息。

主要的OPTION有:

-a 列出隐藏文件,文件中以“.”开头的均为隐藏文件,如:~/.bashrc

-l 列出文件的详细信息

-R 连同子目录中的内容一起列出

用ls -l命令显示的信息中,开头是由10个字符构成的字符串,其中第一个字符表示文 件类型,它可以是下述类型之一:

- 普通文件 d 目录

l 符号链接

b 块设备文件

c 字符设备文件

s socket文件,网络套接字 p 管道

后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件属主的权 限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示 对文件的读、写和执行权限。各权限如下所示:

r 读

w 写

x 可执行。对于目录,表示进入权限。

s 当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组 ID)。

t 设置标志位(sticky bit)。如果是有sticky bit的目录,在该目录下任何用户只要有适当的权限即可创建文 件,但文件只能被超级用户、目录拥有者或文件属主删除。如果是有sticky bit的可执行文件,在该文件执行后, 指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。

- 没有相应位置的权限。

访问权限后面的数字表示与该文件共享inode的文件总数,即硬链接数(参见下面ln命  令)。

2.4 cd

change dir 改变当前所在路径

cd~

cddir1/dir2cd..

2.5 which

查看指定命令所在路径

whichls

2.6 pwd

查看当前所在路径

pwd

2.7 mkdir

mkdir[OPTION]DIRECTORY…

创建目录DIRECTORY,可以一次创建多个。OPTION如果是-p,表示可以连同父目录一起  创建。

2.8 rmdir

rmdir[OPTION]…DIRECTORY…

删除空目录,可以一次删除多个。OPTION如果是-p,表示可以连同空的父目录一起删 除。mkdir和rmdir的用法举例:

$ mkdir a

$ mkdir a/b

$ ls a b

$ rmdir a/b

$ ls a

$ rmdir a

$ mkdir a/b

mkdir: cannot create directory `a/b': No such file or directory

$ mkdir -p a/b

$ rmdir -p a/b

2.9 touch

touch[OPTION]…FILE…

将每个文件的访问及修改时间都更新为目前的时间。

如果文件不存在,则创建一个字节数为0的文件。

2.10 rm

删除文件:

rmfile

删除目录:

rmdir -rf

2.11 mv

重命名:

mvfile1 file2

移动文件:

mvfile1 ~/

2.12 cp

拷贝文件:

cp file1 file2 cp file1 dir/ cp file1 ../

拷贝目录

有需要的联系我2622624302464262430246426243024644302464

相关文章

网友评论

    本文标题:shell家族来了,还不赶快学习

    本文链接:https://www.haomeiwen.com/subject/zseibftx.html