初识Linux
本章内容
初安装Linus的网络配置
防火墙的关闭
用户
终端
shell
命令纪要
安装linux之后,linux默认网卡开机不是自动激活,并且防火墙开启的,这对初期我们学习linux会产生一定的阻碍,所以我们先要设置一下参数让我们的linux能对我们更友好一下。
一、网卡设置
若网卡要设置成静态IP地址
命令如下:首先登录管理员账户(配置系统只有管理员由此权限哦),用vim文本编辑器编辑eno16777736,进入界面按字母a键,编辑参数-Esc退出编辑模式按住Shift+:,输入wq保存并退出
动态IP只需要改ONBOOT=yes,激活网卡就行,BOOTPROTO=dhcp保持不动
二、关闭防火墙
centos6.8默认防火墙为iptabls,而centos7.2为firewalld,所以由于防火墙的不同,操作也不同
首先可以查看一下firewall防火墙的状态,running正在运行
停止firewall,然后禁止自启动firewall,然后状态就会变为not running了
启动则是:systemcl start firewalld.service
6.8命令如下
查看防火墙状态----service iptables status
1 关闭防火墙-----service iptables stop 临时的
2 启动防火墙-----service iptables start
3 重启防火墙-----service iptables restart
4 查看防火墙状态--service iptables status
5 永久关闭防火墙--chkconfig iptables off
6 永久关闭后启用--chkconfig iptables on
这样我们就可以在初期用到网络连接时,一般就不会出现连接不上被防火墙屏蔽的情况了。
三、用户类别
Linux用户简单的分为管理员和普通用户,普通用户又分为系统内建用户和自定义用户。可以查看/etc/passwd来查看。如下图所示:
1、系统管理员:即root帐户,UID号为0,拥有所有系统权限,它类似于Windows系统中的administrator帐户,是整个系统的所有者。
root用户:
一个特殊的管理帐户,也被称为超级用户
root已接近完整的系统控制,因此对系统损害几乎有无限的能力,基本什么都可以操作,甚至作死命令 rm -rf /(千万别想不开)
除非必要,不要登录为 root,我们一般不用,用也是临时切换,或者临时提升普通用户权限来完成操作
2、普通( 非特权 )用户,UID号1-65535,没有对系统管理权限,权限有限,造成损害的能力比较有限
系统用户:linux为满足自身系统管理所内建的账号,通常在安装过程中自动创建,不能用于登录操作系统。centOS6以前版本UID在1-499之间,centos7在1-999之间。如上图中的的halt、mail等等用户即是此类用户。它类似于Windows中的system帐户,当然权限远没有system帐户高。
自定义用户:由root管理员创建供用户登录系统进行操作使用的账号,centOS6以前版本UID在500-60000之间,centos7在1000-60000之间。它类似于Windows系统中users用户组中的帐户 。
四、终端
服务器主机非必要部件,没有终端服务器一样能够运行;可以理解为鼠标、键盘、显示器等可供用户与主机交互必然用到的I/O设备
物理终端:直接接入本机的显示器和键盘设备/dev/console又叫控制台,是系统开机时能够进入的单用户模式,而且网络是被禁用的
虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,设备文件路径:/dev/tty#,CentOS 6 默认启动6 个虚拟终端 Ctrl+Alt+F#: [1,6]
图形终端:属于虚拟终端,附加在物理终端之上的以软件方式虚拟实现的终端,但额外会提供桌面环境; Ctrl+Alt+F7
centos7:在哪个虚拟终端启动的图形界面,即位于那个虚拟终端;而剩下的则为字符界面;默认Ctrl+Alt+F1图形界面,[2-6]是字符界面
串行终端(ttyS)
模拟终端:图形界面打开 的 命令行以及基于ssh 协议或telnet 协议等远程打开的界面, 设备文件:/dev/pts/# [0, ∞ )
比如我们使用的SecureCRT、我们在图形界面也是模拟终端
查看当前的终端设备:#tty
五、shell
shell (计算机壳层)
在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。在Linux系统中shell是用户界面提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
基本上shell分两大类:
一:图形界面shell(Graphical User Interface shell 即 GUI shell)
例如:应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的Desktop、CDE、GNOME(C, 图形库gtk)、KDE(C++, 图形库qt)、 XFCE( 轻量级桌面)。
二:命令行式shell(Command Line Interface shell ,即CLI shell)
例如:
bash / sh / ksh / csh(Unix/linux 系统)
(MS-DOS系统)
cmd.exe/ 命令提示字符(Windows NT 系统)
Windows PowerShell(支援 .NET Framework 技术的 Windows NT 系统)
传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。
文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
Shell基本上是一个命令解释器,类似于DOS下的command。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。
交互式shell和非交互式shell
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
shell的类型
在UNIX中主要有:
Bourne shell (包括 sh,ksh,and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
GNU Bourne-Again Shell(bash) 是GNU计划中重要的工具软件之一,目前也是 Linux 标准的shell与sh 兼容。
CentOS 默认使用bash
显示当前使用的shell:
#echo ${SHELL} 花括号可以省略
显示当前系统使用的所有shell:
#cat /etc/shells
切换当前shell类型:
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# chsh
Changing shell for root.
New shell [/bin/bash]: /bin/tcsh
Shell changed.
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# su -
上一次登录:三 7月 27 10:58:49 CST 2016pts/0 上
[root@localhost ~]# echo $SHELL
/bin/tcsh
bash 的快捷键
Ctrl+l 清屏,相当于clear 命令
Ctrl+c 取消命令的执行
Ctrl-a 会移动到命令行的最前面
Ctrl-e 会移动到命令行的最后面
Ctrl-u 会删除到行首
Ctrl-k 会删除到行尾
arrow ctrl-b ctrl-f 会向左或向右移动一个字符
Esc-b 左移一个单词
Esc-f 右移一个单词
六、命令纪要
1、命令提示符
命令提示符:prompt
默认格式[root@localhost ~]#
显示提示符格式:
[root@localhost ~] :echo $PS1
临时修改:#PS1=*****
prompt:
管理员:#
普通用户:$
2、命令的执行
输入命令,回车:提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来;而找寻命令对应关系的过程是先查找命令别名,没有则进入shell自带的内部命令中查找,没有则进入hash缓存中查找对应外部命令的记录,没有则按照$PATH的目录依次查找外部命令,第一次找到并执行对应的可执行程序或代码。
查找优先级:命令别名>内部命令>hash缓存的执行过的对应外部命令>按照$PATH查找 如果在$PATH中找到第一个对应的外部命令便执行并且保存带内存中hash中就会存在这个命令的信息,下次执行时就会默认执行hash中对应的命令,而不会再次查找
3、命令别名:
获取所有可用的别名的定义: ~]# alias
定义别名:~]# alias NAME=’COMMAND’(注意名字最好是小写字母,COMMAND如果当中没用空格可以不加’’,仅对当前shell进程有效,其它用户或再次登入无效)
撤销别名:~]# unalias NAME
注意用alias定义的别名只对当前shell有效,从硬件角度说就是数据保存在内存中而非硬盘中,所以重新登陆重启都会失效,如果想要永久有效则需要编辑.bashrc文件,将定义的别名写入到文件中,相当于保存在硬盘中才可以
如果只想定义的别名自己使用,不影响别人则编辑用户家目录下的.bashrc文件
~]#vim .bashrc
如果想对所有用户有效则编辑全局/etc/.bashrc
而上图中source 虽然成功执行,但是并没有成功改变设置,而重登账户才生效。
注意有的发型版本修改的是profile文件来实现的,这里我简单说一下我查阅的相关信息
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.
也就是说这个文件里的配置针对所有用户和shell类型
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
这个只针对所有使用shell类型为bash的用户有效
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.类似的文件还有.cshrc、.tcshrc等
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
这些文件针对当前用户的shell类型为bash有效
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。
以上部分涉及变量问题,我们以后再深入探讨,在这里我们还没有知识,所以不好理解,只是要有个概念
4、内部命令和外部命令
在shell 中可执行的命令有两类:内部命令:由shell自带的,而且通过某命令形式提供,这些命令都是内嵌在shell内部的
enable命令可以启用或禁用内部命令:
enable -n COMMAND 禁用内部命令
enable CMOMMAND 启用内部命令
外部命令:在当前系统的某文件系统路径下有对应的可执行程序文件;which ,whereis;注意shell本身也是外部命令,因为shell本身也存在所对应的可执行程序文件例如: /bin/sh、/bin/bash、/sbin/nologin、/bin/tcsh、/bin/csh、/usr/bin/sh、/usr/bin/bash等
which:查看外部命令路径在$PATH变量里面搜索
whereis:查看程序及其帮助文档的路径
区别当前使用的命令是内部或外部命令:
#type COMMAND
内部:显示builtin
外部:显示为命令文件路径,但不是绝对的,因为有些文件有别名,别名我们上文说过
5、hash 命令:搜寻到的外部命令路径结果缓存至 至kv(key-value) 存储,
hash 显示hash缓存
hash -d COMMAND 删除制定命令的hash缓存
hash –r 清除缓存
七、命令格式
COMMAND [OPTIONS...] [ARGUMENTS...]
选项:用于启用或关闭命令的某个或某些功能;
短选项:-c, 例如:-l, -h
长选项:--word ,例如:--all, --human-readable
第一种:参数用一横的说明后面的参数是字符形式。
第二种:参数用两横的说明后面的参数是单词形式。
第三种:参数前有横的是 System V风格。
第四种:参数前没有横的是 BSD风格。
有关System V和BSD的其他区别:
系统启动过程中 kernel 最后一步调用的是 init 程序,init 程序的执行有两种风格,即 System V 和 BSD。
System V 风格中 init 调用 /etc/inittab,BSD 风格调用 /etc/rc,它们的目的相同,都是根据 runlevel 执行一系列的程序。
参数:命令的作用对象,比如文件名,用户名等
注意:
1 、多选项,以及多参数和命令之间使用空白字符分隔
eg:cp -r /usr/games /tmp
2 、取消和结束命令执行:Ctrl+c ,Ctrl+d
在执行过程中可以Ctrl+c,中断执行
3 、多个命令可以用; 符号分开
# cd /tmp;ll -a /tmp;cp -r /usr/games /tmp
4 、一个命令可以用\分成多行
eg:#pwd 查看当前工作目录
5 、短选项可以合在一起使用,但有些命令的短选项是遵循一定顺序的;
eg:ls -l -h 可以为 ls -lh 或 ls -hl
而gcc -o hello.c hello 和 gcc hello.c -o hello
如果只做编译,不做链接(-c 选项,只生成.o文件,不生成执行文件),参数顺序没有要求。
不同类的选项没有顺序要求(如多个 -I 属于同一类)。
gcc在链接时,对参数中的库的顺序有要求,参数右侧的库会先于左侧的库加载;不同库中有相同的符号定义时,链接顺序不同会产生不同结果。
6、长选项不能合并,有些选项可以带参数:称为选项参数
这个我还没有接触到,所以就不给大家例子啦,如果以后知道或者有知道的大神,请留言,我会及时更新,并表示感谢
八、命令行扩展、被括起来的集合
命令行扩展:$( ) 或 ``
把一个命令的输出打印给另一个命令的参数
$ echo "This system's name is $(hostname ) "
This system's name is server1.example.com 主机名 所以小伙伴们的和我的例子应该不会一样
$echo "i am `whoami ` " whoami 用户正在使用的账号
i am root
括号扩展:{ }
打印重复字符串的简化形式
$ echo file{1,3,5}
file1 file3 file5
希望各位小伙伴们多多留言指教,学习就是要多交流,才能更快的积累学识,所以多多探讨问题,很让我们不知不觉间将理论变为理解,从练习到实践应用。