Linux基础命令补充

Linux基础命令

用户登录

root用户

一个特殊的管理账户

超级用户

id -u  当前用户的uid
id -u wang  王用户的uid

普通用户(非特权)用户

权限有限

造成伤害的能力有限

终端terminal

物理终端 /dev/console

串行终端 /dev/ttyS#

图形终端 /dev/tty7

交互式接口:启动终端后,在终端设备附加一个交互式应用程序

GUI:Graphic User Interface

X protocol, window manager, desktop
Desktop:
GNOME (C, 图形库gtk),
KDE (C++,图形库qt)
XFCE (轻量级桌面)

Shell:LINUX命令解释器

shell是一种高级程序设计语言

sh bash

echo $SHELL
cat /etc/shells  显示当前系统使用的所有shell
/sbin/nologin        #用户不登录

主机名示例

主机名示例
hostname
bj-yz-k8s-node1-100-10.magedu.com

命令提示符

root 当前用户

@分隔符

localhost主机名

~当前所在位置家目录

管理员 用户提示符

$普通用户

[root@localhost ~]#
# 管理员
$ 普通用户

显示提示符格式

[root@localhost ~]#echo $PS1

修改提示符格式

临时设置

永久设置
cat  /etc/profile.d/env.sh   #env.sh可以换
PS1="\[\e[31;1m\][\[\e[36;1m\]\t \[\e[31;1m\]\u\[\e[32;1m\]@\[\e[35;1m\]\h \w\[\e[35;1m\]]\[\e[0m\]\\$"
PS1="\[\e[31;1m\][\t \[\e[33;1m\]\u\[\e[32;1m\]@\h \w\[\e[35;1m\]]\[\e[0m\]\\$"
\e 控制符\033 \u 当前用户
\h 主机名简称 \H 主机名
\w 当前工作目录 \W 当前工作目录基名
\t 24小时时间格式 \T 12小时时间格式
\! 命令历史数 \# 开机后命令历史数
wang@ubuntu1804 ~$  PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
ubuntu用户 sudo -i #切换root用户  
vim .profile   #wang用户设置
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"    

执行命令

查看内部还是外部命令

type COMMAND

type type
type cd
type cat
type echo #内部和外部命令
enable –n cmd 禁用内部命令
enable cmd 启用内部命令
enable –n 查看所有禁用的内部命令

which #专门查看外部命令

which bc
which type

whereis #显示外部命令和帮助文档

whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz

hash

hash 显示hash缓存
hash –l 显示hash缓存,可作为输入使用
hash –p path name 将命令全路径path起别名为name
hash –t name 打印缓存中name的路径
hash –d name 清除name缓存
hash –r  全部清除缓存

命令别名

alias别名应用
alias cdnet='cd /etc/sysconfig/network-scripts'  #定义别名
vi .bashrc 
alias cdnet='cd /etc/sysconfig/network-scripts'  #写到文件中永久保存
alias 列出所有别名
unalias cdnet  #临时取消别名
alias echo hostname 
命令执行过程
1.别名
2.内部命令
3.外部命令hash表
4.外部命令$PATH 
unalias -a name 取消所有别名
#不取消别名执行  
\echo     换行执行
'echo'
"echo"
/bin/echo   

命令格式:

COMMAND 
选项:用于启用或关闭命令的某个或某些功能
短选项: -c
长选项: --h
free -h =free --h
free -h=free --human
id -u wang
sleep 100  
ctrl +d =exit
ctrl +c #强行退出
hostname;uname -r;who;whoami  #一行执行多个命令
一个命令可以用\分行执行

日期和时间设置

系统时间:linux内核通过CPU工作频率决定 
硬件时钟:主板
date --help  
date  显示和设置系统时间
date '+2 years' 2年以后
date +%F  #2020-12-04
date +"%F %T" #2020-12-04 21:55:37
date -d "-2 day" 前两天
date 051010302020.30 #日期 月份 小时 分钟 年份 秒
date -u
date -s '1 year'


clock=hwclock 硬件时间
clock -s 修改时间 硬件时间为准,校准系统时间
clock -w 系统时间为准,校准硬件时间
ntpdate 172.16.0.1
timedatectl set-timezone Asia/Shanghai

查看系统版本号

uname -r  
hostnamectl 
cat /etc/centos-release 
cat /etc/redhat-release
cat /etc/issue  欢迎首页
cat /etc/motd  登录后的消息

查看帮助信息

man bash
1。用户命令
5.配置文件格式
8.管理类的命令
man /keyword
搜关键字
?向上搜索
b 文件首部翻页

type命令

type help
type cd 
type type  

info命令

d  显示主题目录
/usr/share/doc目录         

设置语言为中文

localectl set-locale LANG=zh_CN.utf8
/etc/localtime  #指定时区
timedatectl set-timezone Asia/Shanghai   #设置时区   centos7 
centos6不支持

日历信息

cal  显示日历
 -1, --one        只显示当前月份(默认)
 -3, --three      显示上个月、当月和下个月
 -s, --sunday     周日作为一周第一天
 -m, --monday     周一用为一周第一天
 -j, --julian     输出儒略日
 -y, --year       输出整年
 -V, --version    显示版本信息并退出
 -h, --help       显示此帮助并退出
cal 9 1752  #查看日历
screen命令
screen -S xiaohong
screen -x xiaohong  加入
退出screen会话
ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某screen会话
screen -r [SESSION]

echo命令

sleep 3 ; echo -e '\a'
echo -e 'abc\n123'            
abc
123
echo -e 'abc\t123'
abc	123
echo -e 'abc\b123'
ab123
-E (默认)不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
显示变量
echo "$VAR_NAME” 变量会替换,弱引用
echo '$VAR_NAME’ 变量不会替换,强引用
echo -e '\c'   
命令行扩展:
$( ) 或 ``
把一个命令的输出打印给另一个命令的参数
echo "This system's name is $(hostname) "
This system's name is server1.example.com
echo "i am `whoami` "
括号扩展:{ }
打印重复字符串的简化形式
echo file{1,3,5} 结果为:file1 file3 file5
rm -f file{1,3,5}
echo {1..10}
echo {a..z}
echo {000..20..2}
echo user{1..10}

注: echo ‘$PATH’ #所出即所得

​ echo “$PATH” #可以解析变量

​ echo echo $PATH #反向单引号将命令的执行结果输出到屏幕

​ touch /data/date +%F.log

关机或重启

关机:halt  poweroff
重启:reboot
-f: 强制,不调用shutdown
-p: 切断电源
关机或重启:shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0
+m: 相对时间表示法,几分钟之后;例如 +3
hh:mm: 绝对时间表示,指明具体时间

用户登录信息查看命令:

whoami: 显示当前登录有效用户
who: 系统当前所有的登录会话
w:  #系统当前所有的登录会话及所做的操作

bash的快捷键

ctrl +l 清屏,相当于clear的命令
ctrl +s阻止屏幕输出
ctrl +q允许屏幕输出
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + f 光标向右移动一个字符
Ctrl + b 光标向左移动一个字符
Alt + f 光标向右移动一个单词尾
Alt + b 光标向左移动一个单词首
Ctrl + xx 光标在命令行首和光标之间移动
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r 删除当前整行

Tab键补全

命令补全

HISTORY

重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行     执行上一个已经执行的命令
输入 !-1 并回车执行
按 Ctrl+p 并回车执行
!:0 执行前一条命令(去除参数)
Ctrl + n 显示当前历史中的下一条命令,但不执行
Ctrl + j 执行当前命令
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
命令行历史
!string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p 仅打印命令历史,而不执行
!$:p 打印输出 !$ (上一条命令的最后一个参数)的内容
!*:p 打印输出 !*(上一条命令的所有参数)的内容
^string 删除上一条命令中的第一个string
^string1^string2 将上一条命令中的第一个string1替换为string2
!:gs/string1/string2 将上一条命令中所有的string1都替换为 string2
ctrl-r可以搜索前面输入的命令
id -u wang
 touch !$
 cat wang 按住SEC .键
 Alt加.键

history命令

history -c   #清空命令历史
history 10   #
echo $HISTSIZE
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
cat > /etc/profile.d/env.sh <<EOF
HISTTIMEFORMAT="%F %T" 
EOF
#永久修改历史命令加时间
history
   2020-12-07 21:41:10history
   2020-12-07 21:42:25echo $HISTSIZE
   2020-12-07 21:44:40rm -rf /*
   2020-12-07 21:44:46history
   2020-12-07 21:46:07HISTTIMEFORMAT="%F %T"
   2020-12-07 21:46:28history   

1.字符处理命令-排序sort

指定分隔符  -t
指定第几列的内容(按分隔符),不指定分隔符,默认是空格为分隔符         -k
按照阿拉伯数字的大小顺序排序  -n
倒叙排序  -r
输入文件
[root@centos7 ~]# cat >> sort.txt <<eof
\> A:d:8
\> E:x:2
\> B:c:6
\> eof	

 
排序文件
[root@centos7 ~]# sort sort.txt
A:d:8
B:c:6
E:x:2	

按照字母小写顺序排序
[root@centos7 ~]# sort -t ':' -k 2 sort.txt
B:c:6
A:d:8
E:x:2 

按照字母小写顺序排序
[root@centos7 ~]# sort -t ':' -k 2 -n sort.txt
A:d:8
B:c:6
E:x:2

按照字母小写倒叙
[root@centos7 ~]# sort -t ':' -k 2 -n -r sort.txt
E:x:2
B:c:6
A:d:8

2.字符处理-去重uniq

去重相邻行,不相邻不会去重

-c 显示去重后的数量(count)
-d 只显示重复的行
-u 只显示不重复的行
输入内容:
[root@centos7 ~]# cat >>unip.txt <<eof
\> abc
\> abc
\> 123
\> eof 

文件去重(没有排序无法去重)
[root@centos7 ~]# uniq uniq.txt
abc
123
abc
123

排序文件
[root@centos7 ~]# sort uniq.txt
123
123
abc
Abc

先排序文件,后去重
[root@centos7 ~]# sort uniq.txt |uniq
123
abc	 

先排序文件,后去重并显示去重后的数量
[root@centos7 ~]# sort uniq.txt |uniq -c
2 123
2 abc

3.字符处理-截取cut

-d 指定分隔符
-f 指定第几列
-c 根据字符来取数据
输入内容
[root@centos7 ~]# cat >>info.txt <<eof
\> I’m gjy,20 years old qq 861962063 
\> eof 

\#以空格为分隔符,截取第二个,第六个字符
[root@centos7 ~]# cut -d ' ' -f 2,6 info.txt
gjy,20 861962063	

以空格为分隔符,截取第二个,第六个,再以逗号为分隔符,截取第一个第二个
[root@centos7 ~]# cut -d ' ' -f 2,6 info.txt |cut -d ',' -f 1,2
gjy,20 861962063	


[root@centos7 ~]# cut -d ' ' -f 2,6 info.txt |cut -c 1-3,8-16
gjy861962063

4.字符处理-统计wc

-l 统计行数
-c 统计字节数
-w 统计单词次数,也就是列数
示例:
[root@centos7 ~]# wc /etc/services
 11176  61033 670293 /etc/services 

统计字节:
[root@centos7 ~]# wc -c /etc/services
670293 /etc/services	l

统计行数
[root@centos7 ~]# wc -l /etc/services
11176 /etc/services

统计列数
[root@centos7 ~]# wc -l /etc/services
11176 /etc/services
posted @ 2021-03-05 21:01  上善若水~小辉  阅读(87)  评论(0编辑  收藏  举报