一、Linux的用户
Linux是一个多用户多任务的操作系统,在复杂的企业环境中,同一时间登录系统的用户不在少数,为了方便管理,Linux有root用户和普通用户之分。root用户对系统有着绝对的权限,这就意味着一旦root用户被盗取,它有能力使这个系统崩溃,正常的生产情况下,root用户是被禁止登录系统的。普通用户的权限有限并且可以被灵活的限制,是我们工作时用到的用户。
怎样知道当前系统有哪些用户正在工作呢?这里有一些有帮助的命令1、whoami
[root@localhost ~]# whoami
root
whoami用于打印当前登录用户的用户名,相当于执行命令“id -un”,只有“--help”和“--version”两个选项,功能简单
2、who am i(或who 加任意两个字符串)[root@localhost yum.repos.d]# who am i
root pts/0 2016-07-22 17:21 (10.1.250.61)
[root@localhost yum.repos.d]# who a a
root pts/0 2016-07-22 17:21 (10.1.250.61)
3、w[root@localhost ~]# w
18:20:01 up 1:12, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 17:09 25.00s 0.50s 0.50s -bash
root pts/0 10.1.250.61 17:21 1.00s 0.57s 0.05s w
root pts/1 10.1.250.61 17:23 44:57 0.13s 0.13s -bash
w命令是一个比较全面的命令,它可以看到用户正在执行的程序
第一行的字段依次是系统当前时间,系统已经运行的时间,当前登录系统的用户数和系统在1分钟,5分钟和15分钟的平均负载
下面的行依次表达的意思是登录的用户名,终端名,远程的主机ip,登录时间,空闲时间,隶属于当前tty下所有进程占用CPU的时间,WHAT域即当前正在执行的程序所需要占用的CPU时间,正在执行的命令
二、Linux里的终端
物理终端:与Linux主机直接相连的鼠标,键盘等设备[root@localhost ~]# ls /dev/console
/dev/console
虚拟终端:附加于物理终端之上的,以软件实现的终端,ctrl+alt+{F1..F6},当图形界面启动时,F1为图像终端[root@localhost ~]# ls /dev/tty1
/dev/tty1
伪终端:图形界面里打开的终端和通过ssh连接的终端[root@localhost ~]# ls /dev/pts/
0 1 2 ptmx
pts可以开启无穷多个
查看当前的终端设备:tty
三、外部命令和内部命令
type查看命令类型
内置命令:shell自带的命令[root@localhost ~]# type cdcd is a shell builtin
[root@localhost ~]# type mkdirmkdir is /usr/bin/mkdir[root@localhost ~]# enable -n cd #禁用某个内置命令
[root@localhost ~]# enable -a #列出内置命令的启用状态
[root@localhost ~]# enable cd #启用内置命令
注意,centos7里有些内置命令在PATH里有二进制可执行文件,但是没有相应功能
外部命令:在PATH里有二进制可执行文件,包括安装的应用命令
which,whereis可以查看命令的路径,which默认现在hash缓存里找,然后在找PATH[root@localhost ~]# whereis mkdir
mkdir: /usr/bin/mkdir /usr/share/man/man1/mkdir.1.gz /usr/share/man/man1p/mkdir.1p.gz /usr/share/man/man2/mkdir.2.gz /usr/share/man/man3p/mkdir.3p.gz
[root@localhost ~]# which mkdir
/usr/bin/mkdir
hash命令:当执行一个外部命令后(无论命令是否执行成功),hash会将命令路径缓存在hash表里[root@localhost ~]# mkdir
mkdir: 缺少操作数Try 'mkdir --help' for more information.
[root@localhost ~]# hash命中 命令
1 /usr/bin/whereis
1 /usr/bin/mkdir
删除缓存里的某个命令[root@localhost ~]# hash
命中 命令
1 /usr/bin/touch
1 /usr/bin/whereis
1 /usr/bin/mkdir
4 /usr/local/sbin/ls
[root@localhost ~]# hash -d ls
[root@localhost ~]# hash
命中 命令
1 /usr/bin/touch
1 /usr/bin/whereis
1 /usr/bin/mkdir
清空hash缓存[root@localhost ~]# hash -r
[root@localhost ~]# hash
hash: hash table empty
四、时间和日期
Linux有两种时间:
系统时间:有Linux内核根据CPU频率计算的
硬件时间:主板时间
date命令:系统时间[root@localhost ~]# date
Sun Jul 24 09:47:12 CST 2016[root@localhost ~]# date 082919482011.44 #设置系统时间,格式:月日时分年点秒
Mon Aug 29 19:48:44 CST 2011
[root@localhost ~]# date
Mon Aug 29 19:48:45 CST 2011
clock(hwclock):硬件时间[root@localhost ~]# clock
Sun 24 Jul 2016 09:50:57 AM CST -0.461441 seconds
[root@localhost ~]# clock -s #根据硬件时间修改系统时间
[root@localhost ~]# clock -w #根据系统时间修改硬件时间
cal:显示日历[root@localhost ~]# cal
July 2016
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31[root@localhost ~]# cal 9 1752 #Linux中特殊的一个月份
September 1752
Su Mo Tu We Th Fr Sa
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
nano:文本编辑器(基本不用这个)
五、Linux字符界面下的桌面共享(必须是同一个用户登录同一个主机才有效)
screen:
[root@localhost ~]# screen -S help #创建一个新的screen会话
[root@localhost ~]# screen -x help #加入一个会话
[root@localhost ~]# exit #退出会话(两边同时退出)
[root@localhost ~]# screen -ls #显示已存在的会话信息There is a screen on: 2899.help (Attached)1 Socket in /var/run/screen/S-root.六、echo命令,显示字符
echo中引号的区别:
双引号:弱引用,变量会替换,可以识别`和$和\
单引号:强引用,引号里的内容原封不动的打印到屏幕
反引号:会将引号中的内容当作shell命令执行,也能替换其中的变量但是只有变量会报错然后将变量替换,它与$( )的作用相同[root@localhost ~]# echo `$LANG`
bash: en_US.UTF-8: command not found...
[root@localhost ~]# echo `echo $PATH`
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
echo打印转义字符要加-e选项[root@localhost ~]# echo "\nieda"\nieda
[root@localhost ~]# echo -e "\nieda" #shell中\n为换行ieda
[root@localhost ~]# echo -e "\ieda"\ieda
由上可以看出,不加-e将打印特殊字符的本身含义,加-e后会把特殊字符当做特殊的含义
echo的选项:
-n #不再字符最后自动换行[root@localhost ~]# echo -n ned a
ned a[root@localhost ~]#
shell中echo打印颜色[root@localhost ~]# echo -e "\033[41;31mHello World!\033[0m"
bash: !\033[0m": event not found
#打印的内容在开头和结尾不能有特殊字符[root@localhost ~]# echo "\033[41;31mHello World\033[0m"
\033[41;31mHello World\033[0m
#打印颜色必须加-e选项进行转义[root@localhost ~]# echo -e "\033[41;31mHello World\033[0m"
Hello World
其中41中的4表示背景色,31中的3是字符颜色,31和41可以调换位置
最后的0m表示颜色的作用范围结束.........举个例子[root@localhost ~]# echo -e "\033[33;41mHello World\033["
Hello World[root@localhost ~]# [root@localhost ~]#
shell中颜色的种类从1到7依次是 :红绿黄蓝紫天(蓝)白
如何打印一个闪烁的三角形?[root@localhost ~]# echo -e "\033[31;5m * \n *** \n*******\033[0m"
*
***
*******
其中的5代表给打印文本添加闪烁的效果,为了更直白可以不加背景颜色