赞
踩
shell简介:
看到 Shell 这个词语第一反应就是在终端中敲命令,将多个Shell 命令按照一定的格式放到一个文本中,那么这个文本就叫做 Shell 脚本。
严格意义上来讲, Shell 是一个应用程序,它负责接收用户输入的命令,然后根据命令做出
相应的动作, Shell 负责将应用层或者用户输入的命令传递给系统内核,由操作系统内核来完成
相应的工作,然后将结果反馈给应用层或者用户。
1.目录信息查看命令 ls
2.目录切换命令 cd
cd 路径
3.当前路径显示命令 pwd
pwd 命令用来显示当前工作目录的绝对路径,不需要任何的参数。
4.系统信息查看命令 uname
可选的选项参数如下:
5.清屏命令 clear
clear 命令用于清除终端上的所有内容,只留下一行提示符。
6.切换用户执行身份命令 sudo
Ubuntu(Linux)是一个允许多用户的操作系统,其中权限最大的就是超级用户 root,有时候我们执行一些操作的时候是需要用 root 用户身份才能执行,比如安装软件。通过 sudo 命令可以使我们暂时将身份切换到 root 用户。当使用 sudo 命令的时候是需要输入密码的,这里要注意输入密码的时候是没有任何提示的。
选项主要参数如下:
假如我们现在要创建一个新的用户 test,创建新用户的命令为“adduser”,创建新用户的权
限只有 root 用户才有,我们在装系统的时候创建的那个用户是没有这个权限的,比如我的
“zuozhongkai”用户。所以创建新用户的话需要使用“sudo”命令以 root 用户执行“adduser”这个命令。
7.切换用户命令 su
命令“su”可以直接将当前用户切换为 root 用户,切换到 root 用户以后就可以尽情的进行任何操作了!因为已经获得了系统最高权限,在 root 用户下,所有的命令都可以无障碍执行,不需要在前面加上“sudo”。
su 选项 用户名
常用选项参数如下:
使用命令“sudo su”切换到 root 用户, su 命令不写明用户名的话默认切换到 root 用户。然后输入密码,密码正确的话就会切换到 root 用户,可以看到切换到 root 用户以后提示符的“@”符号前面的用户名变成了“root”,表示当前的用户是 root 用户。并且以“#”结束。
注意!!由于 root 用户权限太大,稍微不注意就可能删除掉系统文件,导致系统奔溃,因此
强烈建议大家,不要以 root 用户运行 Ubuntu。当要用到 root 身份执行某些命令的时候使用“sudo”
命令即可。
要切换回原来的用户,使用命令“sudo su 用户名”即可,比如我要从 root 切换回原来的用户。
8.添加用户命令 adduser
adduser 参数 用户名
常用的参数如下:
9.删除用户命令 deluser
deluser 参数 用户名
主要参数有:
同样的,命令“deluser”也要使用“sudo”来以 root 用户运行,以删除我们前面创建的用
户 test 为例
10.显示文件内容命令 cat
查看文件内容是最常见的操作了,在 windows 下可以直接使用记事本查看一个文本文件内
容, linux 下也有类似记事本的软件,叫做 gedit,找到一个文本文件,双击打开,默认使用的就
是 gedit,如图 所示:
cat 选项 文件
选项主要参数如下:
11.显示和配置网络属性命令 ifconfig
ifconfig 是一个跟网络属性配置和显示密切相关的命令,通过此命令我们可以查看当前网络
属性,也可以通过此命令配置网络属性,比如设置网络 IP 地址等等,此命令格式如下:
ifconfig interface options | address
主要参数如下:
12.系统帮助命令 man
Ubuntu 提供了一个命令来帮助用户完成这个功能,那
就是“man”命令,通过“man”命令可以查看其它命令的语法格式、主要功能、主要参数说明等。
命令格式:man 命令名
按“q”键退出到终端
13.系统重启命令 reboot
通过点击 Ubuntu 主界面右上角的齿轮按钮来选择关机或者重启系统,同样的我们也可以
使用 Shell 命令“reboot”来重启系统,直接输入命令“reboot”然后点击回车键即可,如图所示:
14.系统关闭命令 poweroff
使用命令“reboot”可以重启系统,使用命令“poweroff”就可以关闭系统,在终端中输入命“poweroff”然后按下回车键即可关闭 Ubuntu 系统。
15.更新本地数据库
如果想查看本地哪些软件可以更新的话可以使用如下命令:
sudo apt-get update
这个命令会访问源地址,并且获取软件列表并保存在本电脑上
16.检查依赖关系
有时候本地某些软件可能存在依赖关系,所谓依赖关系就是 A 软件依赖于 B 软件。通过如
下命令可以查看依赖关系,如果存在依赖关系的话 APT 会提出解决方案:
sudo apt-get check
17.安装VIM编辑器及vim相关操作
sudo apt-get install vim
vim三种工作模式:
用vim打开文件:vim wj.txt(若不存在则会自动创建),会显示如下:
这时发现根本没法输入,这不是因为键盘坏了。因为 VIM默认是以只读模式打开的文档(默认处于普通模式),因此我们要切换到输入模式(插入模式),切换到输入模式的命令如下:
i I a A o O s r | 在当前光标所在字符的前面,转为输入模式。 在当前光标所在行的行首转换为输入模式。(光标跑到行首) 在当前光标所在字符的后面,转为输入模式。 在光标所在行的行尾,转换为输入模式。(光标跑到行尾) 在当前光标所在行的下方,新建一行,并转为输入模式。 在当前光标所在行的上方,新建一行,并转为输入模式。 删除光标所在字符。 替换光标处字符。 |
移动光标指令:
h(或左方向键) n- | 光标左移一个字符 光标上移 n 行(普通模式下) |
屏幕翻滚指令:
Ctrl+f Ctrl+b | 屏幕向下翻一页,相当于下一页。 屏幕向上翻一页,相当于上一页。 |
复制、粘贴和删除指令:
cc dd ndd x X nyy p | 删除整行,并且修改整行内容。(删完进入插入模式) 删除该行,不提供修改功能。(删完后不进入插入模式) 删除当前行向下 n 行。 删除光标所在的字符。 删除光标前面的一个字符。 复制当前行及其下面 n-1 行。(从当前行开始复制n行) 粘贴最近复制的内容。 |
当进入底行模式以后会在终端的左下角就会出现符号“:”,我们可以在“:”后面输入命令,常用的命令如下:
:x :x! :q :q! :wq ESC | 保存当前文档并且退出 保存并退出编辑,仅当文件有修改时会保存,并修改文件时间属性。 退出 退出 VI/VIM,不保存修改(强制退出)有些文件既不能保存,也不能退出,则用:q!强制退出。 保存并退出,并修改文件时间属性 插入模式下,esc用于返回普通模式。按两下ESC,不管什么模式,都会切换到普通模式。 |
另:
在“/”底行模式下我们可以在文本中搜索指定的内容,比如搜索 wj.txt 文件中“嵌入式”三个字,下图中可以看出,在 wj.txt 中找到了“嵌入式”这个词,并且标记出来位置。要在一个文档中搜素是否存在某个字符串的时候就可以使用这种方法。
18.查看磁盘挂载的文件系统
命令:df -T -h
ext4那一行就是我们安装 Ubuntu 的这个磁盘,在 Linux 下一切皆为文件,“/dev/sda1”就是我们的磁盘分区,可以看出这个磁盘分区类型是 ext4,它的挂载点是“/”,也就是根目录。
Ubuntu 是支持多用户的, Ubuntu 为每个用户创建了一个根目录,比如我电脑现在登陆的是“zuozhongkai”这个用户,因此默认进入的是“zuozhongkai”这个用户的根目录。
其实所谓的给每个用户创建一个根目录只是方便说而已,这个所谓的用户根目录其实就是“/”下的一个文件夹,以我的“zuozhongkai”这个用户为例,其用户根目录就是: /home/zuozhongkai。
只要你创建了一个用户,那么系统就会在/home 这个目录下创建一个以这个用户名命名的文件
夹,这个文件夹就是这个用户的根目录。
用户可以对自己的用户根目录下的文件进行随意的读写操作,但是如果要修改根目录“/”下的文件就会提示没有权限。打开终端以后默认进入的是当前用户根目录。
根目录下文件:
/bin /lost+found | 存储一些二进制可执行命令文件, /usr/bin 也存放了一些基于用户的命令文件。 一般为空,当系统非正常关机以后,此文件夹会保存一些零散文件。 |
/var /usr /media /proc /tmp /opt /sys | 存储一些不断变化的文件,比如日志文件 包括与系统用户直接有关的文件和目录,比如应用程序和所需的库文件。 存放 Ubuntu 系统自动挂载的设备文件。 虚拟目录,不实际存储在磁盘上,通常用来保存系统信息和进程信息。 存储系统和用户的临时文件,该文件夹对所有的用户都提供读写权限。 可选文件和程序的存放目录。 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。 |
19.文件操作命令-touch
touch 参数 文件名
使用 touch 创建文件的时候,如果[文件名]的文件不存在,那就直接创建一个以[文件名]命
名的文件,如果[文件名]文件存在的话就仅仅修改一下此文件的最后修改日期,主要参数如下:
-a -c | 只更改存取时间。 不建立任何文件。 |
-d<日期> -t<时间> | 使用指定的日期,而并非现在日期。 使用指定的时间,而并非现在时间。 |
20.文件夹创建命令-mkdir
mkdir 参数 文件夹名/目录名
主要参数有:
-p | 如所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录。(如果不加会报错) |
21.文件及目录删除命令—rm (默认只能删除文件,不能删除目录,删除目录需加-rf)
既然有创建文件的命令,那肯定有删除文件的命令,要删除一个文件或者文件夹可以使用
命令“rm”,此命令可以完成删除一个文件或者多个文件及文件夹,它可以实现递归删除。对于
链接文件,只删除链接,原文件保持不变,所谓的链接文件,其实就是 Windows 下的快捷方式
文件,此命令格式如下:
rm 参数 目的文件或文件夹目录名
主要参数如下:
d -f -i -r -v | 直接把要删除的目录的硬连接数据删成 0,删除该目录。 强制删除文件和文件夹(目录)。 删除文件或者文件夹(目录)之前先询问用户。 递归删除,指定文件夹(目录)下的所有文件和子文件夹全部删除掉。 显示删除过程。 |
直接使用命令“rm”是无法删除文件夹(目录)的,我们需要加上参数“-rf”,也就是强制递归删除文件夹(目录)。
22.文件夹(目录)删除命令—rmdir
rmdir 参数 文件夹/目录
主要参数:
-p | 删除指定的文件夹(目录)以后,若上层文件夹(目录)为空文件夹(目录)的话就将其一起 删除。 |
23.文件复制命令—cp
cp 参数 源地址 目标地址
主要参数如下:
-a -r 或-R | 此参数和同时指定“-dpR”参数相同 递归处理,将指定目录下的文件及子目录一并处理(保持原有目录结构) |
例如:创建两个文件夹test1、test2,在test1下创建一个文件a.c,用cp命令复制其到当前目录中并将其命名为b.c。再将a.c、b.c利用通配符复制到test2目录下。
24.文件移动命令—mv
mv 参数 源地址 目标地址
主要参数如下:
-b -f -I | 如果要覆盖文件的话覆盖前先进行备份。 在覆盖之前询问用户。 |
在上面创建的 test1 文件夹里面创建一个 c.c 文件,然后将 c.c 这个文件重命名为 d.c。最后将 d.c 这个文件移动到 test2 文件夹里面,
操作如图所示:
25.文件压缩和解压缩
在 Ubuntu 中可以使用图形化工具进行文件的压缩和解压缩。
命令行下进行压缩和解压缩常用的命令有三个: zip、 unzip 和 tar
一、zip [参数] [压缩文件名.zip] [被压缩的文件]
b<工作目录> -d -j -m -n<字尾符号> -q -r -v -num | 指定暂时存放文件的目录。 从 zip 文件中删除一个文件。 帮助 只保存文件的名,不保存目录。 压缩完成以后删除源文件。 不压缩特定扩展名的文件。 不显示压缩命令执行过程。 递归压缩,将指定目录下的所有文件和子目录一起压缩。 显示指令执行过程。 压缩率,为 1~9 的数值。 |
使用命令“zip”对test2 文件夹进行压缩,-rv 表示递归压缩并且显示压缩命令执行过程。操作如图所示:
二、unzip 命令用于对.zip 格式的压缩包进行解压,命令格式如下:
unzip [参数] [压缩文件名.zip]
主要参数如下:
-l -C -j -L -n -P<密码> -q -x<文件列表> -d<目录> | 显示压缩文件内所包含的文件。 压缩文件中的文件名称区分大小写。 不处理压缩文件中的原有目录路径。 将压缩文件中的全部文件名改为小写。 解压缩时不要覆盖原有文件。 解压密码。 静默执行,不显示任何信息。 指定不要处理.zip 中的哪些文件。 把压缩文件解到指定目录下。 |
对上面压缩的 test2.zip 文件使用 unzip 命令进行解压缩,操作如图所示:
三、命令 tar
前面的 zip 和 unzip 这两个是命令只适用于.zip 格式的压缩和解压,其它压缩格式就用不了了,比如 Linux 下最常用的.bz2 和.gz 这两种压缩格式。其它格式的压缩和解压使用命令tar, tar 将压缩和解压缩集合在一起,使用不同的参数即可,命令格式如下:
tar [参数] [压缩文件名] [被压缩文件名]
主要参数如下:
-c -C<目的目录> -f<备份文件> -j -k -m -r -t -v -w -x -z -Z | 创建新的压缩文件。 切换到指定的目录。 指定压缩文件。 用 tar 生成压缩文件,然后用 bzip2 进行压缩。 解开备份文件时,不覆盖已有的文件。 还原文件时,不变更文件的更改时间。 新增文件到已存在的备份文件的结尾部分。 列出备份文件内容。 显示指令执行过程。 遭遇问题时先询问用户。 从备份文件中释放文件,也就是解压缩文件。 用 tar 生成压缩文件,用 gzip 压缩。 用 tar 生成压缩文件,用 compress 压缩。 |
使用 tar 命令来进行.zip 和.gz 格式的文件压缩,操作如图所示:
使用如下两个命令将 test1 文件夹压缩为.bz2 和.gz 这两个格式:
tar -vcjf test1.tar.bz2 test1
tar -vczf test1.tar.gz test1
-vcjf 表示创建 bz2 格式的压缩文件, -vczf 表示创建.gz 格式的压缩文件
使用如下所示两行命令完成.bz2 和.gz 格式文件的解压缩:
tar -vxjf test1.tar.bz2
tar -vxzf test2.tar.gz
-vxjf 用来完成.bz2 格式压缩文件的解压, -vxzf 用来完成.gz 格式压缩文件的解压。
26.文件查询和搜索
一、find [路径] [参数] [关键字] ---搜索文件
路径是要查找的目录路径,如果不写的话表示在当前目录下查找,关键字是文件名的一部
分,主要参数如下:
-name<filename> 按照文件名称查找,查找与 filename 匹配的文件,可使用通配符。
-name<filename> -depth -gid<群组识别码> -group<群组名称> -size<文件大小> -type<文件类型> -user<拥有者名称> | 按照文件名称查找,查找与 filename 匹配的文件,可使用通配符。 从指定目录下的最深层的子目录开始查找。 查找符合指定的群组识别码的文件或目录。 查找符合指定的群组名称的文件或目录。 查找符合指定文件大小的文件。 查找符合指定文件类型的文件。 查找符合指定的拥有者名称的文件或目录。 |
以搜索目录/etc 中以“vim”开头的文件为例:
二、grep
grep [参数] 关键字 文件列表
find 命令用于在目录中搜索文件,我们有时候需要在文件中搜索一串关键字, grep 就是完成这个功能的, grep 命令用于查找包含指定关键字的文件,如果发现某个文件的内容包含所指定的关键字, grep 命令就会把包含指定关键字的这一行标记出来, grep 命令格式如下:
grep 命令一次只能查一个关键字,主要参数如下:
b -d<进行动作> -i -v -r | 在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号。 当指定要查找的是目录而非文件时,必须使用此参数!否则 grep 指令将回报信息并停止搜索。 忽略字符大小写。 反转查找,只显示不匹配的行。 在指定目录中递归查找。 |
例如在目录/usr 下递归查找包含字符“Ubuntu”的文件,操作如图所示:
27.文件类型
这里的文件类型不是说这个文件是音乐文件还是文本文件,在用户根目录下使用命令“ls
-l”来查看用户根目录下所有文件的详细信息
- d c b l s p | 普通文件,一些应用程序创建的,比如文档、图片、音乐等等。 目录文件。 字符设备文件, Linux 驱动里面的字符设备驱动,比如串口设备,音频设备等。 块设备文件,存储设备驱动,比如硬盘, U 盘等。 符号连接文件,相当于 Windwos 下的快捷方式。 套接字文件。 管道文件,主要指 FIFO 文件。 |
28.Linux用户权限管理
在安装 Ubuntu 系统的时候被要求创建一个账户,当我们创建好账号以后,系统会在录/home 下以该用户名创建一个文件夹,所有与该用户有关的文件都会被存储在这个文件文件夹中。同样的,创建其它用户账号的时候也会在目录/home 下生成一个文件夹来存储该用户的文件。
装系统的时候创建的用户其权限比后面创建的用户大一点,但是没有 root 用户权限大,
Ubuntu 下用户类型分为以下 3 类:
● 初次创建的用户,此用户可以完成比普通用户更多的功能。
● root 用户,系统管理员,系统中的玉皇大帝,拥有至高无上的权利。
● 普通用户,安装完操作系统以后被创建的用户。
以上三种用户,每个用户都有一个 ID 号,称为 UID,操作系统通过 UID 来识别是哪个用
户,用户相关信息可以在文件/etc/passwd 中查看到,如图所示:
从配置文件 passwd 中可以看到,每个用户名后面都有两个数字,比如用户“wangjing”后面“1000:1000”,第一个数字是用户的 ID,另一个是用户的 GID,也就是用户组 ID。 Ubuntu里面每个用户都属于一个用户组里面,用户组就是一组有相同属性的用户集合。
对于一个文件通常有三种权限:读(r)、写(w)和执行(x),使用命令“ls -l”可以查看某个目录下所有文件的权限信息。
以-rw-rw-r-- 1 zuozhongkai zuozhongkai 0 12 月 25 20:44 test.c为例:
其中“-rw-rw-r--”表示文件权限与用户和用户组之间的关系,第一位表示文件类型,剩下的 9 位以 3 位为一组,分别表示文件拥有者的权限,文件拥有者所在用户组的权限以及其它用户权限。后面的“zuozhongkai zuozhongkai”分别代表文件拥有者(用户)和该用户所在的用户组,因此文件 test.c 的权限情况如下:
①、文件 test.c 的拥有者是用户 zuozhongkai,其对文件 test.c 的权限是“rw-”,也就是对该
文件拥有读和写两种权限。
②、用户 zuozhongkai 所在的用户组也叫做 zuozhongkai,其组内用户对于文件 test.c 的权
限是“rw-”,也是拥有读和写这两种权限。
③、其它用户对于文件 test.c 的权限是“r--”,也就是只读权限。
对于文件,可读权限表示可以打开查看文件内容,可写权限表示可以对文件进行修改,可
执行权限就是可以运行此文件(如果是软件的话)。对于文件夹,拥有可读权限才可以使用命令 ls
查看文件夹中的内容,拥有可执行权限才能进入到文件夹内部。
文件的权限有三种:读(r)、写(w)和执行(x),除了用 r、 w 和 x 表示以外,也可以使用二进制数表示,三种权限就可以使用 3 位二进制数来表示,一种权限对应一个二进制位,如果该位为 1 就表示具备此权限,如果该位为 0 就表示没不具备此权限,如表所示:
文件权限数字表示方法
文件所有权限组合
另外我们也开始使用 a、 u、 g 和 o 表示文件的归属关系,用=、 +和-表示文件权限的变化。
对于文件 test.c,我们想要修改其归属用户(zuozhongkai)对其拥有可执行权限,那么就可以
使用: u+x。如果希望设置归属用户及其所在的用户组都对其拥有可执行权限就可以使用: gu+x。
一、权限修改命令 chmod 用于修改文件或者文件夹的权限
chmod [参数] [文件名/目录名]
主要参数如下:
-c -R | 效果类似“-v”参数,但仅回显更改的部分。 递归处理,指定目录下的所有文件及其子文件目录一起处理。 |
-v | 显示指令的执行过程。 |
上面两个例子都是修改文件的权限,接下来我们修改文件夹的权限,新建一个 test 文件夹(mkdir),在文件夹 test 里面创建 a.c、 b.c 和 c.c 三个文件,如图所示:
二、文件归属者修改命令 chown
命令 chown 用来修改某个文件或者目录的归属者用户或者用户组,命令格式如下:
chown [参数] [用户名.<组名>] [文件名/目录]
其中[用户名.<组名>]表示要将文件或者目录改为哪一个用户或者用户组,用户名和组名用
“.”隔开,其中用户名和组名中的任何一个都可以省略,命令主要参数如下:
-c -R -v | 效果同-v 类似,但仅显示更改的部分。 递归处理,将指定的目录下的所有文件和子目录一起处理。 显示处理过程。 |
在用户根目录下创建一个 test 文件,查看其文件夹所属用户和用户组,如图所示:
从图中可以看出,文件 test 的归属用户为 zuozhongkai,所属的用户组为 zuozhongkai,
将文件 test 归属用户改为 root 用户,所属的用户组也改为 root,操作如图 2.7.3.7 所示:
命令 shown 同样也可以递归处理来修改文件夹的归属用户和用户组,用法和命令 chown 一
样。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。