一、Linux的用户
Linux是一个多用户多任务的操作系统,在复杂的企业环境中,同一时间登录系统的用户不在少数,为了方便管理,Linux有root用户和普通用户之分。root用户对系统有着绝对的权限,这就意味着一旦root用户被盗取,它有能力使这个系统崩溃,正常的生产情况下,root用户是被禁止登录系统的。普通用户的权限有限并且可以被灵活的限制,是我们工作时用到的用户。
怎样知道当前系统有哪些用户正在工作呢?这里有一些有帮助的命令
1、whoami
[root@localhost ~]# whoamiroot
whoami用于打印当前登录用户的用户名,相当于执行命令“id -un”,只有“--help”和“--version”两个选项,功能简单
2、who am i(或who 加任意两个字符串)
[root@localhost yum.repos.d]# who am iroot pts/0 2016-07-22 17:21 (10.1.250.61)[root@localhost yum.repos.d]# who a aroot 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.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 17:09 25.00s 0.50s 0.50s -bashroot pts/0 10.1.250.61 17:21 1.00s 0.57s 0.05s wroot 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 mkdirmkdir: /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 ~]# hashhash: hash table empty
四、时间和日期
Linux有两种时间:
系统时间:有Linux内核根据CPU频率计算的
硬件时间:主板时间
date命令:系统时间
[root@localhost ~]# dateSun Jul 24 09:47:12 CST 2016
[root@localhost ~]# date 082919482011.44 #设置系统时间,格式:月日时分年点秒Mon Aug 29 19:48:44 CST 2011[root@localhost ~]# dateMon Aug 29 19:48:45 CST 2011
clock(hwclock):硬件时间
[root@localhost ~]# clockSun 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 23 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 3031
[root@localhost ~]# cal 9 1752 #Linux中特殊的一个月份 September 1752 Su Mo Tu We Th Fr Sa 1 2 14 15 1617 18 19 20 21 22 2324 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 aned 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代表给打印文本添加闪烁的效果,为了更直白可以不加背景颜色