系统用户
PS1 定义提示符的格式 例如:
PS1=XXX 当前用户名就会被临时修改
echo $PS1
[\[email protected]\h \W]\$ //u表示用户,h 主机名 W 当前的文件夹
# 管理员
$ 普通用户
当我们输入一个命令后,它会通过shell交给kernel,kernel来判断这个命令的类型
命令类型:
内置命令 :内核自带的 kernel自身就有的
外置命令 :GUN file 安装的文件
查看一下内核
cd /boot/
ll vmlinuz-3.10.0-327.el7.x86_64 -h //h表示符合人类查看的方式,查看数据的大小比较方便,这个内核只有5M。这里包含了所有的内置命令
[email protected] ~]# type cat
cat is /usr/bin/cat //外部命令
[[email protected] ~]# type type
type is a shell builtin //内置命令
[[email protected] ~]# type cd
cd is a shell builtin //内置命令
[[email protected] ~]# type who
who is /usr/bin/who //外部命令
[[email protected] ~]# who //运行这个命令
root :0 2016-07-21 17:06 (:0)
root pts/0 2016-07-21 18:55 (:0)
root pts/1 2016-07-21 19:03 (172.18.16.73)
root pts/2 2016-07-21 21:32 (172.18.16.73)
[[email protected] ~]# type who
who is hashed (/usr/bin/who) //hashed:哈希,当一个外部命令运行过后,对它进行一次哈希运算放到cache中,下次再运行时候能快速读取。
type chmod
chmod 000 /root/111
type chmod which chmod 都能查看命令的路径,但是which只能找外部命令,不能找内置命令,例如 which type 就失败了
[[email protected] ~]# which cat
/usr/bin/cat
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]# type cat
cat is /usr/bin/cat
[[email protected] ~]# cp /usr/bin/ca
cairo-sphinx calibrate_ppa cancel caribou-preferences catman
cal canberra-boot cancel.cups cat
ca-legacy canberra-gtk-play captoinfo catchsegv
[[email protected] ~]# cp /usr/bin/cat /usr/local/sbin/cat
[[email protected] ~]# cat 111
[[email protected] ~]# type cat
cat is hashed (/usr/local/sbin/cat)
[[email protected] ~]# rm /usr/local/sbin/cat
rm: remove regular file ‘/usr/local/sbin/cat’? y
[[email protected] ~]# cat 111
-bash: /usr/local/sbin/cat: No such file or directory // 一直按照内存的路径来查找的。
[[email protected] ~]# which cat
/usr/bin/cat
[[email protected] ~]# type cat
cat is hashed (/usr/local/sbin/cat)
[[email protected] ~]# /usr/bin/cat 111 //给它加上路径就可以了
为了彻底解决,就得从缓存到内存解决
[email protected] ~]# hash
hits command
14 /usr/bin/screen
1 /usr/bin/rm
4 /usr/bin/chmod
5 /usr/local/sbin/cat
1 /usr/bin/touch
3 /usr/bin/who
1 /usr/bin/cp
2 /usr/bin/vi
2 /usr/bin/w
2 /usr/bin/ls
1 /usr/bin/clear
[[email protected] ~]# hash -d cat //hash -r 全部清除
[[email protected] ~]# hash
hits command
0 /usr/bin/cat //这样就可以从新按照默认路径来搜索了
cat 111 // ok
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin //外部命令存放的路径 搜索的顺序第一个优先级更高,如果我偏偏就想让APP1在/usr/local/bin作为优先则可以
/usr/local/bin/APP1来执行,否则不写路径找不到
chmod $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
内置命令优先级高
然后根据 hash $PATH
的优先级来判断
enable -n cd //禁用内置命令方法
enable cd //启用
[email protected] tmp]# enable -n cd
[[email protected] tmp]# type cd
cd is hashed (/usr/bin/cd) //因为内部命令不在了外部命令还在,centos6不支持这个
whereis chmod //只在PATH变量里搜
[email protected] tmp]# ls \
> -l \
> yum.log //对于较长的命令可以分行显示出来
[[email protected] tmp]# ls;pwd;ifconfig //对于短命令可以一起执行并分别生效
date :
显示日期和时间
date -u //显示格林尼治时间
clock :
显示硬件时间
同步时间方法:
clock -s //以硬件为准同步时间
clock -w //以系统时间为准同步时间
date 月 日 小时 分 年 秒
date 091811302012.20
例如:
[email protected] ~]# date -u
Fri Jul 22 02:12:11 UTC 2016
[[email protected] ~]# date 091011202012.20 //手工设置了一个时间
Mon Sep 10 11:20:20 CST 2012
[[email protected] ~]# clock
Fri 22 Jul 2016 10:19:24 AM CST -0.492925 seconds
[[email protected] ~]# clock -s //通过硬件校验回正确的时间
[[email protected] ~]# date
Fri Jul 22 10:19:33 CST 2016
cal:
显示日期的命令
[[email protected] ~]# cal 09 1752
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 //宗教原因造成的
cat /etc/issue
[[email protected] ~]# vi /etc/issue
\S
Kernel \r on an \m
STOP!!! THIS IS MY ROOM //添加后以字符界面行进入会出现。
nano /etc/issue
loginout =ctrl + d
[[email protected] ~]# systemctl restart network //重启网卡程序
centos 7 命令安装
可以选择在查看本机是否安装了 screen
type screen
如果没有安装则有两种安装方式:
1:检查光盘已经挂载后,在Packages包中找到screen-4.1.0-0.21.20120314git3c2946.el7.x86_64.rpm 文件双击安装;
2;df //查看光盘已经挂载
[[email protected] ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 3348332 49054868 7% /
devtmpfs 923776 0 923776 0% /dev
tmpfs 938316 144 938172 1% /dev/shm
tmpfs 938316 9136 929180 1% /run
tmpfs 938316 0 938316 0% /sys/fs/cgroup
/dev/sda5 20961280 32932 20928348 1% /testdir
/dev/sda1 201388 141756 59632 71% /boot
tmpfs 187664 20 187644 1% /run/user/0
/dev/sr0 7587292 7587292 0 100% /run/media/root/CentOS 7 x86_64
rpm -i /run/media/root/Centos7\7\x86_64/Packages/screen-4.1.0-0.21.20120314git3c2946.el7.x86_64.rpm
安装成功后开始试验
试验目的:帮助用户解决系统应用问题
试验完成的前提条件:双方都要登陆同一个服务器,并使用相同的账号
求助方:
type screen //查看是否安装screen
screen
screen -S zcl1840 //打开新的screen session :zcl1840为链接账号
帮助方:
which screen //查看screen的路径
screen -ls //查看是否有求助账户登陆
screen -x zcl1840 // 加入回话:加入求助账户建立链接
连接后两者可以在一个桌面上操作。
若双方任意一方exit退出则链接中断。
通过screen建立一个后台程序,防止中断。例如升级程序在后台运行。
通过无限循环 yes命令模拟
1: screen
2: yes
3: ctrl + a //停顿一下按 d 将yes无限循环程序转入后台
4: screen -ls //查看到后台进程程序号和随机用户名pts-0.centos7
screen -x 对名应的用户 //加入后原来后台运行程序则显示在桌面中
5: screen -r session //恢复某个进程:如果就一个后台进程则r后面不添加用户名,若有多个则添加对应的进程名,可以恢复这个进程或者ctrl+c终结进程
6: 若结束进程后,screen -r There is no screen to be resumed exit 即可
echo :
显示字符命令
[[email protected] ~]# echo aaa bbb ccc
aaa bbb ccc
[[email protected] ~]# echo -n aaa bbb ccc
aaa bbb ccc[[email protected] ~]#
变量:表示一些字符串的集合
[[email protected] ~]# echo $UID
0
[[email protected] ~]# echo \$UID //加入“\”后转意
$UID
[[email protected] ~]#
[[email protected] ~]# echo ‘$UID‘ //‘‘强引用
$UID
[[email protected] ~]# echo "$UID" //“” 弱引用
0
例如:
[[email protected] ~]# echo "echo $UID"
echo 0
[[email protected] ~]# echo ‘echo $UID‘
echo $UID
[[email protected] ~]# echo `echo $UID` // 此命令= $(echo $UID)
0
echo -e //能让后面的字符串显示一些特殊功能
例如:
[[email protected] ~]# echo "aaa \c"
aaa \c //没有加e
[[email protected] ~]# echo -e "aaa \c"
aaa[[email protected] ~]# //加入e后 \c参数才发生效果
[email protected] ~]# echo -e "\a" // \a 的作用是发出声音
[[email protected] ~]#
echo命令选项:
-n 不在字符的最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 退格键
\c 最后不加上换行符号;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\\插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
echo -e "\033[43;31mabcd \033[0m" //43为被景色,31为字体颜色 。我在CRT上用不好用
\xHH插入HH(十六进制)所代表的ASCII字