Linux基础(命令相关)

1.查看操作系统的发行版本

1) cat /etc/redhat-release 
2) cat /etc/os-release 
3) lsb_release -a

在这里插入图片描述
在这里插入图片描述

  1. 查看系统架构
1) arch

在这里插入图片描述

  1. 查询CPU
1) lscpu 
2) cat /proc/cpuinfo

在这里插入图片描述

3.查看内存大小

1) free -h
2) cat /proc/meminfo 

在这里插入图片描述

4.查看分区

1)lsblk
2) cat /proc/partitions

在这里插入图片描述
5. 查看内核版本

uname -r

在这里插入图片描述
6.查看当前所在终端

tty

在这里插入图片描述
6. 显示当前所用的shell

echo $SHELL

在这里插入图片描述
7.显示当前系统使用的所有shell

cat /etc/shells

在这里插入图片描述
7. 设置主机名
注意
1)主机名不能用下划线 可以使用字母,横线或数字组成
2)有些软件对主机名有特殊要求

# 
# 支持 centos7以上 和Ubuntu1804版本
1) 临时设置主机名: hostname + NAME
# 持久修改,即直接修改磁盘文件 /etc/hostname
#主机名不能用下划线 (_)  因为用了 postfix 可能会导致这个服务起不来,
# 可以用横线(-)  
2) 持久生效主机名: hostnamectl set-hostname + NAME

在这里插入图片描述
8. 显示命令提示符格式

echo $PS1
提示符格式说明:
\e 控制符 \033
\u 当前用户
\h 主机名简称
\H 主机名
\w 当前工作目录
\W 当前工作目录基名
\t 24小时时间格式
\T 12小时时间格式
! 命令历史数目
# 开机后命令历史数

在这里插入图片描述

  1. 在Centos系统实现保存提示符格式
echo PS1="\[\e[1;35m\][\t \e[1;34m\]\u\[\e[32m\]@\h\[\e[1;32m\] \w\[\e[1;34m\]]\[\e[0m\]\\$" > /etc/profile.d/env.sh

在这里插入图片描述
10. 在Ubuntu系统实现保存提示符格式

echo PS1="\[\e[1;35m\][\t \e[1;34m\]\u\[\e[32m\]@\h\[\e[1;32m\] \w\[\e[1;34m\]]\[\e[0m\]\\$" >> ./.bashrc
  1. 区别指定的是内部命令·还是外部命令
    1) 内部命令: shell自带的,而且通过某种命令形式提供,用户登录后自动加载并常驻内存中
    2)外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令实际的时才从磁盘加载到内存中,执行完毕后加载至内存中,执行完毕后从内存中删除

3)内部命令: 被shell集成的命令,shell在用户登录以后,它默认就已经执行了,比如bash shell 只要用户一登录,它就会加载到内存里面,其实bash是一个磁盘文件,只不过用户一登录,它就会被加载到内存里面 ,这个shell 内置了很多命令,这个文件本身也不小,即被包含在shell中的命令就叫做内置命令

4) 而和shell无关的,在磁盘上的独立文件,就叫做外部命令,就比如说除了**/bin/bash**里面的命令以外的命令,比如/bin下面的命令.

5) 磁盘文件要想真正运行起来还得从磁盘中把这个程序加载到内存中才能真正跑起来,所以内部命令的执行速度快(直接在内存里面)
**6)**缓存—是将硬盘的数据加载到内存中提高他的访问速度,而内部命令本身就在内存里。

type + COMMAD 

在这里插入图片描述

  1. 查看是否存在对应内部和外部命令
    注意: 因为不同的shell可能没有内部命令,即为了避免内部命令失效,就可以调用外部命令,起到的是备用的效果.
type -a + COMMAD

在这里插入图片描述
13. 内部命令相关
1) help、enable 其实就是列出的就是所有内部命令
在这里插入图片描述
2) enable 管理内部命令

enable + cmd  启用内部命令
enable -n + cmd 禁用内部命令
enable -n 查看所有禁用的内部命令 

在这里插入图片描述

# 统计内部命令的个数
enable | wc -l  

在这里插入图片描述

  1. 执行外部命令
  1. 查看外部命令路径
which -a | --skip-alias
whereis 
  1. Hash 缓存表
    系统初始hash 表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,然后将该命令的路径记录存储到Hash表中,当再次使用该命令时,shell解释器首先会先查看hash表,存在则将其执行,不存在则会去PATH路径下找,可利用hash缓存表可大大提高命令的调用速率
    hash命令的常见用法:
hash 显示缓存
hash  -l 显示缓存,可作为输入使用
hash -p path name 将命令全路径起别名为name
hash -t name 打印缓存里面name的路径
hash -d name 清除name 缓存
hash -r 清除缓存

在这里插入图片描述
16. 命令别名
对于经常执行的较长的命令,可以将他定义成较短的别名,以方便执行。
1)显示当前shell进程所有可以用的命令别名

alias
  1. 临时定义别名为NAME,VALUE相当于执行命令
alias NAME='VALUE'
eg:扫描新加入的磁盘
 alias scandisk='echo - - - > /sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan;'

在这里插入图片描述
3)持久保持别名(写入磁盘文件)

vim .bashrc

在这里插入图片描述
4) 临时撤销别名 unalias

unalias [-a] name [name ...]
unalias -a #取消所有别名

在这里插入图片描述
注意: 在命令行中定义的别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
仅对当前用户: ~/.bashrc
对所有用户有效: /etc/bashrc
编辑配置给出的新配置文件不会立即生效,bash进程需要重新读取配置文件

source /path/to/config_file 
或者
. /path/to/config_file

5)如果别名与原命令名同名,如果要执行原命令,可使用

\ALIASNAME
"ALIASNAME"
'ALIASNAME'
command ALIASNAME
/path/command   #只适合外部命令

17.日期和时间
1) Linux中有两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
相关命令:
date 显示和设置系统时间

[11:19:38 root@centos7 ~]#date +%s
1616642389
[11:19:49 root@centos7 ~]#date -d @`date +%s`
Thu Mar 25 11:20:28 CST 2021
[11:20:28 root@centos7 ~]#date -d @1616642389
Thu Mar 25 11:19:49 CST 2021
[11:22:48 root@centos7 ~]#date -d @1616642389 +%F_%T
2021-03-25_11:19:49
[11:23:08 root@centos7 ~]#date -d "2020-02-02" +%s
1580572800

在这里插入图片描述
2)clock,hwclock 显示硬件时钟

-s ,--hctosys  #以硬件时钟为准,矫正系统时间
-w, --systohc  #以系统时间为准,校正硬件时间

范例:
在这里插入图片描述
3) 时区 (更改时区影响的文件: /etc/localtime)

timedatectl list-timezones
timedatectl set-timezones Asia/Shanghai
timedatectl status

在这里插入图片描述
18.显示日历

cal -y 
cal 9 2019

在这里插入图片描述
在这里插入图片描述
19. 关机和重启
关机:
halt
poweroff
重启:
reboot
-f 强制,不调用shutdown
-p:切断电源
关机或重启: shudown
-r : reboot
-h: halt
-c: cancle
TIME:无指定,默认相当于+1(Centos7)
now: 立刻
+#:相对时间表示法,几分钟后;例如+3
hh:mm: 绝对时间表示,指明具体时间
20. 用户登录信息查看命令

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

在这里插入图片描述
21. 输出信息 echo
echo 可以将后面跟的字符进行输出
功能: 显示字符,echo 会将输入的字符送往标准输出。输出的字符串以空白字符隔开,并在后面加上换行号

  1. 基本用法
echo [-neE] [字符串]

2)选项:
-E (默认) 不支持\解释功能
-n 不自动换行
-e 启用\ 字符的解释功能
3)显示变量

echo "$VAR_NAME" # 用变量替换,弱引用
echo '$VAR_NAME' # 变量不会替换,强引用

在这里插入图片描述
4)启用命令选项 -e ,若字符串中出现一下字符,则特别加以处理,而不会将他当成一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\e escape ,相当于\033
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
\xHH 插入HH(十六进制) 所代表的是ASCII数字(man 7 ASCII)
5) 例子:

[root@centos8 ~]# echo -e 'a\x0Ab'
a
b
[root@centos8 ~]# echo -e '\033[43;31;1;5mmgfdfg\e[0m'
magedu
[root@centos8 ~]# echo -e '\x57\x41\x4E\x47'
WANG
[root@centos8 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@centos8 ~]# echo \$PATH
$PATH
[root@centos8 ~]# echo \
> 

[root@centos8 ~]# echo \\\
> 
\
[root@centos8 ~]# echo \\\\
\\
[root@centos8 ~]# echo “$PATH”
“/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin”
[root@centos8 ~]# echo '$PATH'
$PATH
  1. echo 的高级用法
    在 终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码
    具有颜色的字符,其格式如此下:
"\033[字体背景颜色,字体颜色m字符串\033[0m"

\033[30m -- \033[37m 设置前背景色
\033[40m -- \033[47m 设置背景色

#字符背景颜色范围: 40-47 
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:深绿
47:白色

#字体颜色范围: 30-37
30:黑
31::红
32:绿
33:黄
34:蓝
35:紫
36:深绿
37:白
#加颜色只是一下控制码中的一种,下面是常见的一些ANSI控制码
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m  闪烁
\033[7m  反显
\033[8m  消隐
\033[nA  光标上移n行
\033[nB  光标下移n行
\033[nC  光标右移n行
\033[nD  光标左移n行
\033[x;yH 设置光标位置x行y列
\033[2J   清屏
\033[k    清除从光标到行尾的内容
\033[s  保存光标位置
\033[u  恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
\033[2J\033[0;0H 清屏且将光标置顶

22.命令扩展和被括起来的集合

  1. 命令扩展: 和$() 把一个命令的输出打印给另一个命令的参数,中的一定是有输出信息的命令
    $(COMMAND) 或 COMMAND
    2)比较 “” , `` , ‘’ 三者的区别
    在这里插入图片描述
    结论:
    单引号:强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串,“最傻”
    双引号:弱引用,不能识别命令,可以识别变量,“半傻不精”
    反向单引号:里面的内容必须 是能执行的命令并且有输出信息,变量和命令都能识别,并且会将反向单引号中的内容当成命令执行后,再交给调用反向单引号的命令继续,“最聪明”
    例子:
[root@centos8 ~]# echo "echo $HOSTNAME"
echo centos8
[root@centos8 ~]# echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@centos8 ~]# echo `echo $HOSTNAME`
centos8
[root@centos8 ~]# echo "This system's name is $(hostname)"
This system's name is centos8'
[root@centos8 ~]# echo "I am `whoami`"
I am root
# 创建以年月日为名的日志名
[root@centos8 ~]# touch $(date +%F).log
2021-03-25.log 
# 创建以计算机名+年月日为名的日志名
[root@centos8 ~]# touch `hostname`-`date +%F`.log
[root@centos8 ~]# ls
centos8-2021-03-25.log  
# 创建年月日 时分秒为名的log
[root@centos8 ~]# touch `date +%F_%H-%M-%S`.log
[root@centos8 ~]# ls
2021-03-25_14-41-19.log
# 打印前一天(-1 day) 以时间为名的log
[root@centos8 ~]# touch  `date -d '-1 day' +%F`.log
[root@centos8 ~]# ls
2021-03-24.log 

在这里插入图片描述
例子: $() 和 不能嵌套使用 $() 能嵌套使用)

[root@centos8 ~]# ll `echo `date +%F`.log`
bash: .log: command not found...
ls: cannot access 'date': No such file or directory
ls: cannot access '+%F': No such file or directory
[root@centos8 ~]# ll $(echo $(date +%F).log)
-rw-r--r--. 1 root root 0 Mar 25 14:36 2021-03-25.log
[root@centos8 ~]# ll `echo $(date +%F).log`
-rw-r--r--. 1 root root 0 Mar 25 14:36 2021-03-25.log
[root@centos8 ~]# ll $(echo `date +%F`.txt)
ls: cannot access '2021-03-25.txt': No such file or directory
[root@centos8 ~]# ll $(echo `date +%F`.log)
-rw-r--r--. 1 root root 0 Mar 25 14:36 2021-03-25.log

在这里插入图片描述
23. 括号扩展: {}
{} 可以实现打印重复字符串的简化形式
{元素1,元素2,元素3}
{元素1…元素2}
范例:
在这里插入图片描述
例子:关闭和启用{}的扩展功能

[root@centos8 ~]# echo $-
himBHs
[root@centos8 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@centos8 ~]# set +B
[root@centos8 ~]# echo $-
himHs
[root@centos8 ~]# echo {1..10}
{1..10}
[root@centos8 ~]# set -B
[root@centos8 ~]# echo $-
himBHs
[root@centos8 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10

  1. 命令行历史
    当执行命令后,系统会默认在内存中记录执行过的命令
    当用户正常退出时,会将内存的命令历史放到对应的历史文件中,默认是~/.bash_history
    登录shell 时,会读取命令历史文件中记录下的命令加载到内存中
    登录进shell后新执行的命令只会记录在内存的缓存区中,这些命令会在用户正常退出时“追加”至命令历史文件中
    利用历史命令可以用他来重复执行命令,提高输入效率。
    1)命令 history
    2)常用选项
    -c: 清空历史命令
    -d offset:删除历史中指定的第offset个命令
    n:显示最近的n条历史
    -a:追加本次会话新执行的命令历史列表至历史文件
    -r:读历史文件附加到历史列表
    -w:保存历史列表到指定的历史文件
    -n:读历史文件中未读过的行到历史列表
    -p:展开历史参数成多行,但不存在历史列表中
    -s:展开历史参数成一行,附加在历史列表后
    3)命令历史相关环境变量
    HISTSIZE:命令历史记录的条数
    HISTFILE:指定历史文件,默认为~/ .bash_history
    HISTFILESIZE:命令历史文件记录历史的条数
    HISTCONTROL:控制命令历史的记录方式
    HISTTIMEFORMAT="%F %T"whoami` "显示时间和用户
    HISTIGNORE="str1:str2*:…”忽略str1命令,str2开头的历史
    HISTCONTROL:控制命令历史的记录方式
    ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”
    ignorespace 忽略所有以空白开头的命令
    ignoreboth 相当于ignoredups,ignorespace的组合
    erasedups 删除重复命令
    4)持久保存变量
    以上变量可以export变量名="值"形式存放在letc/profile或~/.bash_profile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值