虚拟控制台
一台计算机的输入输出设备就是一个物理的控制台 ;
如果在一台计算机上用软件的方法实现了多个互不干扰独立工作的控制台界面,就是实现了多个虚拟控制台;
Linux终端的工作方式是字符命令行方式,用户通过键盘输入命令进行操作,可以通过Linux终端对系统进行控制。
Linux 终端
Linux终端其实就是用户与操作系统之间的一个接口,用户通过终端与操作系统进行交互.Linux终端包括Shell字符界面终端、图形界面终端及其他用户界面的终端;
shell
什么是shell
Shell是一个作为用户与linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令,返回执行结果
。在Linux中可有多种Shell,可用多个Shell,一个用户同一时刻只能用一个Shell。
Shell的种类 :
- ash: 是贝尔实验室开发的Shell,bsh是对ash的符 号链接。
- bash: 是GNU的Bourne Again Shell,是GNU操作系 统上默认的Shell。sh以及bash2都是对它的符 号链接。
- tcsh: 是Berkeley UNIX C Shell。csh是对它的符号 链接。
- ksh: Korn Shell的语法与Bourne Shell相同,同时具 备了C Shell的易用特点。
- zsh : Korn Shell 的一个增强版本,具备bash Shell 的许多特点。
GNU工具中的使用的是:bash。bash作为/bin/sh被默认安装。大多数Linux发行版中,Shell程序/bin/sh实际上是对程序/bin/bash的一个链接
echo $SHELL #查看当前使用Shellchsh -l #查看系统支持的Shell列表chsh -s /path/to/shell username #更改Shell/bin/bash --version #查看bash版本
Shell命令的基本格式是:
命令名 [选项] <参数1> <参数2> ……
功能&特点
- 命令自动补齐(tab键)
两下tab - 历史记录查看(键盘上下键)
上下翻看历史输入命令/ctrl + r - shell提示符(#, $)
#:超级管理员root的命令提示符
$: 其他用户的命令提示符
- 输入输出重定向(>, >>, <)
在Linux中每一个程序的执行,都有输入、输出和错误输出;Linux系统中所有的设备都是以文件的形式存在(键盘、鼠标、显示器…);系统启动时自动打开了三个文件描述符
-
… < 文件
输入重定向wc -l < list.txt
-
… > 文件
输出重定向 覆盖原有内容ls > out.txt
-
… >> 文件
追加重定向 文件末尾添加echo abc >> out.txt
-
高级重定向
ls /usr /abc >ok.txt
ls /usr /abc 1>ok.txt 2>error.txtls /usr /abc 2>/dev/null
- 管道(|)
作用:把前一个命令的输出作为下一个命令的输入
符号: |
例子:
ls /var/log | grep log | wc -l
Linux文件命令
文件概述
文件是Linux用来存储信息的基本结构,它是被命名的存储在某种介质上的一组信息的集合。
Linux中所有内容都以文件的形式保存,分为:
- 普通文件
- 目录文件
- 设备文件
文件的成分:无论文件是一个程序、一个文档、一个数据库、一个目录,都有以下同样的结构
- 名字
- 索引节点,又称i节点,存放文件的状态信息的一个数据结构。包含文件的长度、创建及修改时间、权限、所属关系、磁盘位置等。
- 数据
Linux目录
目录文件也包含数据,它与普通文件的差别是:内核对这些数据进行结构化处理,它是由成对的“i节点号/文件名”构成的列表。
- 当把文件添加到一个目录中时,该目录的尺寸会增大,以便容纳新文件名。
- 当删除文件时,目录的尺寸并不减小,而是内核对该目录项做上特殊标记,以便下次添加一个文件时重新使用它
工作目录:用户登录到Linux系统后,每时每刻都处在某个目录之中,此目录被称为“工作目录” 或“当前目录”
用户主目录(Home Directory):是系统管理员在增加用户时为该用户建立起来的目录,每个用户都有自己的主目录。 使用符号~表示
绝对路径是指从“根”开始的路径,也称为完全路径;
cd /usr/local/bin
相对路径是指从用户工作目录开始的路径。
cd /usr
cd local/bin
特殊目录
- “.”代表该目录自己,
- “…”代表该目录的父目录,
- 对于根目录,“.”和“…”都代表其自己
隐藏文件
以.开头的都是隐藏文件
Linux文件属性
Linux文件种类
- 普通文件( regular file ) :[ - ]
纯文字文件(ascii) 或 二进制文件(binary) - 目录文件 (directory): [ d ]
- 链接文件 (link):[ l ]
- 设备文件 (device):
区块 (block) 设备文件:[ b ];
字符 (character) 设备文件:[ c ]。
- 管道文件(Pipe): [ p ]
- Socket文件(Socket): [ s ]
ls
显示目录与文件操作命令
ls [-a] [-l] [-i] [-t] [-S] [-d][-R]
- -a all 列出所有,包括隐藏文件
- -l long 长格式
- -i inode节点
- -t time排序
- -S size排序
- -d directory 只显示目录,而不是显示其下的内容
- -R recursive 显示指定目录及子目录下的内容
cd
切换工作目录命令cd
cd <dirName>
pwd
显示当前路径命令pwd
cp
mv
cat
文件查看和连接命令
cat [选项] <file1> <file2> …
[-n] : 给每行编号
[-b] : 给每行编号,除了空白行
cat -n file1 /usr/local/file2
more
less
head
tail
mkdir
创建目录命令
mkdir [-p] <dirName>…
-p 中间路径不存在,会自动创建
rmdir
删除空目录命令
rmdir [-p] <dirName>
-p 删除路径中的空目录
touch
rm
locate/slocate
文件定位命令
locate [选项] <search string>
建立所有文件以及路径的数据库,快速从系统数据库中查找指定的内容
先要更新数据库 updatedb
find
查找文件或者目录命令
find [path…] [expression][-name][-perm][-size][-user][-type][-exec]
find /etc -name “*.conf”
find . -type f -exec ls -l ‘{}’ \;
ln
ln [选项] <source> <dest>
[-s] 软链接
- 硬链接(hard link):给文件一个副本(别名),同时建立两者之间的连接关系,修改其中一个,与其连接的文件同时被修改,如果删除其中一个,其余的文件不受影响。磁盘上只有一份数据。硬链接是存在同一个文件系统中。
- 软链接(symbolic link):软链接的方式则是产生一个特殊的文件,该文件的内容是指向另一个文件的位置。它只是一个快捷方式,删除了源文件,这个连接文件就没用了。软链接可以跨越不同的文件系统。
chmod
- 作用:改变指定目录或文件的权限。
- 语法:
chmod [选项] mode文件名或目录
该命令语法中mode代表权限设定字串,格式如下:
- 字符方式:[ugoa…][±=][rwxX]…][,…]
- 数字方式:rwx 421 0
- [-R] :递归遍历
chmod a=rwx,u-x,g-wx,o-rwx test.txt
chmod 640 test.txt
chmod -R 764 DirectoryPath
chown
- 作用:改变指定目录或文件的所属用户、所属组。
- 语法:
chown [选项] 用户名[:组名] 文件名或目录
- root权限
- [-R] : 递归遍历
chgrp
- 作用:改变指定目录或文件的所属组。
- 语法:
chgrp [选项] 组名 文件名或目录
- [-R] :递归遍历
cut
- 作用:从指定文件中过滤或提取特定内容,并显示在当前屏幕上。
- 提取/etc/passwd文件中的第1,3,5列
cut -d: -f1,3,5 /etc/passwd
cut -d: -f 1-5 /etc/passwd
- 将/etc/passwd文件从第2个字母至第5个字母的内容提取出来
cut -c2-5 /etc/passwd
cut -c2,5,7 /etc/passwd
wc
默认统计文件内的行/字和字节数
wc [-l](lines)[-w](words)[-m](chars)[-c](bytes) 文件路径
可以与管道结合使用
sort
排序
sort [-r](reverse)[-u](unique)[-f](nocase) 文件路径
可以与管道结合使用
tr
文件处理工具
tr [选项] [字符串1] [字符串2]
常用选项/参数含义如下。
-d:删除字符串1中所有输入字符。
cat /etc/passwd | tr ‘a-z’ ‘A-Z’ #替换
tr -d ‘a-b’ < test.txt #删除
tr ‘a-z’ ‘A-Z’ < /etc/passwd #重定向
tar
tar [选项] 压缩文件名 文件或目录
tar后缀:cvf xvf (c:create v:view f:file)
tar.gz后缀:zcvf zxvf z:gzip
tar cvf/zcvf a.tar /tmp/a
tar xvf/zxvf a.tar -C /tmp/b (指定目录解压,默认解压路径为当前目录)
gzip
打包文件(文件夹不行)[gz后缀]
[-d](解压)[-r] (递归)[-v] (view)[-t] (test)
gzip -rv /tmp/a
unzip
zip后缀
[-x](解压)[-v][-t][-d](指定目录)
unzip -x /tmp/a.zip -d /tmp/bb
echo
cal
可以用户显示公历(阳历)日历如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份:
常用参数:
-3 显示前一月,当前月,后一月三个月的日历
-m 显示星期一为第一列
-j 显示在当前年第几天
-y [year]显示当前年[year]份的日历
date
显示或设定系统的日期与时间。
date +%Y-%m-%d
-d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u 显示GMT。
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(以00-59来表示)
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)
%a 星期的缩写。
%A 星期的完整名称。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%m 月份(以01-12来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
which #查看命令路径
which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
whereis #查看命令路径
whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。
- b 定位可执行文件。
- m 定位帮助文件。
- s 定位源代码文件。
- u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
grep
强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。
grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
命令格式:
grep [option] pattern file|dir
常用参数:
-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的列数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹
awk
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
awk [选项] '脚本命令' 文件名
cat filename | awk -F: ‘{print $n}’
cat /etc/passwd | awk -F: ‘{pirnt $1}’
awk -F: ‘{print $n}’ /etc/passwd
seq
sed 利用脚本来处理文本文件
- 全局替换
sed -i 's/old_str/new_str/g' /path/to/file
直接编辑文件选项-i,会匹配file文件中每一行的第一个old_str替换为new_str
- 指定位置插入
sed -i 'line_number a insert_content' /path/to/file
yum
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum install | remove | list | search
Linux 用户
用户分类
-
超级用户
root,根用户,类似Windows中的超级管理员账户,有最高的权限,可以对Linux做任何操作。 -
普通用户
受限的权限,普通用户没有对系统的完全控制权,而且用户之间私人的资源是相互隔离的。 -
特殊用户
与系统和程序服务相关的用户(shutdown、mail、mysql……)。
默认情况下,这些特殊用户是无法登录的,如果给这些用户授权登陆口令后,就可以使用这些用户登录系统。(为了安全,一般不授权口令)
一般shell被设定为:/sbin/nologin 无法登陆shell
用户信息文件
/etc/passwd
每一行存储一个用户的账号信息
#用户名:加密密码:用户ID:用户组ID:用户信息:用户主目录: 登录Shell
tak:x:1000:1000::/home/tak:/bin/bash
超级用户root的UID是0,系统用户的UID在100以内,而普通用户的UID从500开始往上编号(CentOS 7是1000开始)
口令文件
/etc/shadow
每一行存储一个用户的登录密码信息,加密。只有root用户才能读取这个文件
用户名:加密口令:上次更新时间:允许更改时间:要求更改时间:取消口令之前的警告时间:取消和停用之间的时间:账户口令的天数:账户终止时间:特殊标志
组信息
/etc/group
每一行记录系统中的用户组信息
组名:密码字段:用户组ID:用户名列表
用户名列表用逗号分隔多个用户名(只显示附加用户)
用户管理/命令
增加用户: useradd [选项] <newusername>
-
d :指定用户主目录,默认情况下,将会在/home目录下新建一个与用户名相同的用户主目录。
-
s :指定用户登录时使用的shell,默认的shell为/bin/bash。
-
g :指定用户归属的组名。默认地,每当创建一个新用户的时候,一个与用户名相同的组就会被创建,而这个用户就是该组的成员。
-
G <组列表>:在Linux系统中,一个用户可以属于一个组,也可以属于多个组,其中用户在初始化时属于的组称为主组(主组只能有1个)。如果要让用户属于其它的组,应该使用选项-G <组列表>。
-
u :指定新用户的UID。
修改密码
设置和修改口令 :passwd [用户名]
只有超级用户可以使用“passwd 用户名”修改其他用户的口令,普通用户只能用不带参数的passwd命令修改自己的口令
删除用户
删除用户的命令为userdel,该命令的格式为:userdel <用户名>
- r:删除用户的同时删除用户的全部用户主目录
修改用户属性
usermod [-g<主组名> -G <组名> -d <用户主目录> -s <用户shell>] <username>
增加用户组
groupadd <新组名>
删除用户组
groupdel <组名> (没有用户作为主组时)
修改组成员
直接编辑/etc/group文件,将用户名写到对应的组名的后面。