linux 基础笔记

修改主机名

# 临时生效
hostname HOST-NAME
# 持久生效,支持 Centos 7 以上版本,支持 Ubuntu , 持久生效被写入到了 /etc/hostname
hostnamectl set-hostname shanghai.centos79.node44.128.study.local
cat /etc/hostname
# shanghai.centos79.node44.128.study.local

注意:

  • 主机名不支持下划线
  • 某些软件对主机名会有特殊的要求,需要注意

命令提示符 prompt

登录Linux后,默认的系统命令提示符毫无没有个性,无法明显辨别生产和测试环境,而导致误操作。
可以通过修改PS1变量实现个性的提示符格式,避免这种低级错误。

默认提示符格式:

# CentOS默认提示符 [当前用户@hostname最前面一个单词 当前所在目录](#表示root | $表示普通用户)
[xingmu@shanghai ~]$
# Ubuntu默认提示符 当前用户@hostname最前面一个单词:当前所在目录(#表示root | $表示普通用户)
xingmu@ubuntu1804:~$
# 查看默认提示符配置 
[xingmu@shanghai ~]$ echo $PS1
# [\u@\h \W]\$
# 修改提示符格式, 这是个带闪烁的效果,可以自行尝试
[xingmu@shanghai ~]$ PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"

\[\e[1;5;41;33m :这里表示高亮,5表示闪烁,41是背景色,33是前景色
\[\e[0m\ : 表示颜色终止
提示符格式说明:

  • \e 控制符\033
  • \u 当前用户
  • \h 主机名简称
  • \H 主机名
  • \w 当前工作目录
  • \W 当前工作目录基名
  • \t 24小时时间格式
  • \T 12小时时间格式
  • ! 命令历史数
  • # 开机后命令历史数
# centos 设置永久生效
[xingmu@shanghai ~]$ echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/env.sh
# ubuntu 设置永久生效
[xingmu@shanghai ~]$ echo "PS1='\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]'" >> .bashrc

关于命令

命令的类型

linux中的命令分为内部命令和外部命令

  • 内部命令由shell自带的,而且通过某命令形式提供,存在于/bin/bash文件中 ,用户登录后自动加载并常驻内存中。
  • 外部命令在文件系统路径下有对应的可执行程序文件,每个外部命令都有对应的文件,当执行命令时才从磁盘加载至内存中,执行完毕后从内存中删除。
    通过type COMMAND可以查看命令的类型。
type docker
# docker is /usr/bin/docker
type cd
# cd is a shell builtin

管理内部命令

help 内部命令列表, enable 管理内部命令

  • enable 查看所有的内部命令,enable | wc -l 输出内部命令的个数
  • enable cmd 启用内部命令
  • enable –n cmd 禁用内部命令
  • enable –n 查看所有禁用的内部命令

外部命令的执行

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的
路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不
存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率。

hash 命令常见用法

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

命令的别名

对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行
显示当前shell进程所有可用的命令别名。

alias

定义别名NAME,其相当于执行命令VALUEalias NAME='VALUE'
撤消别名:unalias

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

注意:在命令行中定义的别名,仅对当前shell进程有效

如果想永久有效,要定义在配置文件中

  • 仅对当前用户:~/.bashrc
  • 对所有用户有效:/etc/bashrc
    编辑配置给出的新配置不会立即生效,bash进程重新读取配置文件
source /path/to/config_file
# 或者
. /path/to/config_file

如果别名同原命令同名,如果要执行原命令,可以这么使用。

\ALIASNAME
“ALIASNAME”
‘ALIASNAME’ 
command ALIASNAME
/path/commmand   #只适用于外部命令

echo命令

echo [SHORT-OPTIONS]... [STRING]...
  • -n : 不换行

    [xingmu@shanghai ~]$ echo "hello shell"
    hello shell
    [xingmu@shanghai ~]$ echo -n "hello shell"
    hello shell[xingmu@shanghai ~]$ 
    
  • -e: 让转义符生效 \n换行 \t制表符等

    • \a 发出警告声
    • \b 退格键
    • \c 最后不加上换行符号
    • \e escape,相当于\033
    • \n 换行且光标移至行首
    • \r 回车,即光标移至行首,但不换行
    • \t 插入tab
    • \ 插入\字符
    • \0nnn 插入nnn(八进制)所代表的ASCII字符
    • \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)
    [xingmu@shanghai ~]$ echo "hello \nshell"
    hello \nshell
    [xingmu@shanghai ~]$ echo -e "hello \nshell"
    hello 
    shell
    
    

echo 高级用法

在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码
具有颜色的字符,其格式如下:

 # 输出带有颜色的文字;\033[字符背景颜色;字体颜色m字符串\033[0m
[xingmu@shanghai ~]$ echo -e '\e[1;41;32msfdsdf\e[0m'
# \033[40m -- \033[47m 设置背景色
#字符背景颜色范围: 40--47                   
40:黑                       
41:红                        
42:绿                        
43:黄                        
44:蓝                        
45:紫                        
46:深绿                      
47:白色     
# \033[30m -- \033[37m 设置前景色                 
#字体颜色: 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 清屏且将光标置顶

ls:

list , 列出指定目录下的内容 ls [OPTIONS] [file]

  • -a: 显示所有文件,包括隐藏文件

  • -A: 显示除. 和 …之外的所有文件

  • -h: --human-readable,对文件大小进行单位换算,换算后的结果可能是非精确值

  • -u 配合-t选项,显示并按atime从新到旧排序

  • -t 按mtime排序

  • -S 按从大到小排序

  • -ld 目录和符号链接信息

  • -1 文件分行显示

  • -d: 查看目录自身属性,而非其内部的文件列表,ls -ld /opt查看opt自身的属性

  • -r: reverse,逆序显示

  • -R: recursive,递归显示子文件夹及孙子文件夹

  • -l: --long,长格式列表,即显示文件的详细属性

  • -X 按文件后缀排序

  • -U 按目录存放顺序显示

    drwxr-xr-x 1 root root 4096 4月 1 08:46 share

    属性说明
    d文件类型,
    -(常规文件即f)
    d(directory目录文件)
    b(block块设备文件)
    c(character device字符设备文件)
    l(symbolic link 符号链接文件)
    s(socket,套接字文件)
    p(pipe,命名管道文件)
    rwxr-xr-xrwx: 文件属主的权限
    r-x:文件属组的权限
    r-x:其他用户(非属主、属组)的全新
    1数字表示文件被硬链接的次数
    root文件的属主
    root文件的属组
    4096文件的大小
    4月 1 08:46文件最后一次被修改的时间
    share文件名
# 文件分行显示
[xingmu@shanghai ~]$ ls -1
2022-04-09.log
Desktop
Documents
Downloads
Music
Pictures
Public
shanghai.centos79.node44.128.study.local-2022-04-09.log
Templates
tt
Videos

cd

change directory

 # 切换回家目录
cd ~
# 切换到指定用户的家目录
cd ~USERNAME
# 在上一次所在目录和当前目录之间来回切换,这个命令其实是在读取两个变量$PWD和$OLDPWD  
cd -  

# 涉及到的环境变量
echo $PWD  # 当前工作目录
echo $OLDPWD  # 上一次的工作目录

关机或重启命令shutdown

shutdown [OPTIONS...] [TIME] [WALL...]

时间字符串可以采用格式hh:mm表示小时/分钟,指定执行关闭时的时间,指定24小时时钟格式。 或者,它可以是语法+m,指的是从现在开始的指定分钟数。now+0的别名,即用于触发立即关闭。 如果未指定时间参数,则暗示为+1

请注意,要指定WALL消息,必须指定时间参数。
如果使用time参数,则在系统关闭前5分钟创建/run/nologin文件以确保系统不再允许登录。

  • -h: halt / poweroff
  • -r: reboot
  • -c: cancel
## 五分钟后重启
shutdown -r +5 "五分钟后将要重启"
## 指定时间点重启
shutdown -r 20:30

在这里插入图片描述


也可以直接使用下面的命令:

poweroff
reboot
## centos7
systemctl poweroff
systemctl reboot

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

命令行扩展:`` 和 $()

把一个命令的输出打印给另一个命令的参数,放在``中的一定是有输出信息的命令

$(COMMAND)`COMMAND`

范例:比较 “ ” ,‘ ’, ``三者区别

  • 单引号:强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串
  • 双引号:弱引用,不能识别命令,可以识别变量
  • 反向单引号:里面的内容必须是能执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续, “是个大聪明”
[xingmu@shanghai tt]$ echo "This name is $(hostname)"
This name is shanghai.centos79.node44.128.study.local
[xingmu@shanghai tt]$ echo "I am `whoami`"
I am xingmu
[xingmu@shanghai tt]$ touch $(date +%F).log
[xingmu@shanghai tt]$ ll
total 0
-rw-rw-r--. 1 xingmu xingmu 0 Apr  9 12:06 2022-04-09.log
[xingmu@shanghai tt]$ touch `hostname`-`date +%F`.log
[xingmu@shanghai tt]$ ll
total 0
-rw-rw-r--. 1 xingmu xingmu 0 Apr  9 12:06 2022-04-09.log
-rw-rw-r--. 1 xingmu xingmu 0 Apr  9 12:06 shanghai.centos79.node44.128.study.local-2022-04-09.log
[xingmu@shanghai tt]$ touch `date +%F_%H-%M-%S`.log
[xingmu@shanghai tt]$ touch `date -d '-1 day' +%F`.log
[xingmu@shanghai tt]$ ls
2022-04-08.log           2022-04-09.log
2022-04-09_12-06-53.log  shanghai.centos79.node44.128.study.local-2022-04-09.log

范例:$( ) 和 ``

[xingmu@shanghai tt]$ 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
[xingmu@shanghai tt]$ ll $(echo $(date +%F).log)
-rw-rw-r--. 1 xingmu xingmu 0 Apr  9 12:06 2022-04-09.log
[xingmu@shanghai tt]$ ll `echo $(date +%F).log`
-rw-rw-r--. 1 xingmu xingmu 0 Apr  9 12:06 2022-04-09.log
[xingmu@shanghai tt]$ ll $(echo `date +%F`.txt)
ls: cannot access 2022-04-09.txt: No such file or directory

编辑命令的快捷

  • ctrl + a : 跳转到命令行首
  • ctrl + e : 跳转到命令行尾
  • ctrl + u : 删除行首至光标处的所有字符
  • ctrl + k : 删除光标位置到行尾的所有字符
  • ctrl + l : 清屏
  • Ctrl + f 光标向右移动一个字符
  • Ctrl + b 光标向左移动一个字符
  • Alt + r 删除当前整行
  • Ctrl + w 从光标处向左删除至单词首
  • Alt + d 从光标处向右删除至单词尾
Ctrl + c   终止命令
Ctrl + z   挂起命令
Ctrl + xx 光标在命令行首和光标之间移动
Alt + f   光标向右移动一个单词尾
Alt + b   光标向左移动一个单词首
Alt + Backspace 删除左边单词
Ctrl + d  删除光标处的一个字符
Ctrl + h  删除光标前的一个字符
Ctrl + y  将删除的字符粘贴至光标后
Alt + c   从光标处开始向右更改为首字母大写的单词
Alt + u   从光标处开始,将右边一个单词更改为大写
Alt + l   从光标处开始,将右边一个单词更改为小写
Ctrl + t  交换光标处和之前的字符位置
Alt + t   交换光标处和之前的单词位置
Alt + #   提示输入指定字符后,重复显示该字符#次

常见命令

查看硬件信息

查看 CPU

lscpu命令可以查看cpu信息,cat /proc/cpuinfo也可看查看到。

xingmu@shanghai ~ ]$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 142
Model name:            Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
Stepping:              9
CPU MHz:               2904.003
BogoMIPS:              5808.00
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              4096K
NUMA node0 CPU(s):     0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
xingmu@shanghai ~ ]$ cat /proc/cpuinfo
查看内存大小

free命令可以查看内存信息,cat /proc/meminfo也可看查看到。

xingmu@shanghai ~ ]$ free
              total        used        free      shared  buff/cache   available
Mem:        2027896      817448      168828       33024     1041620     1009384
Swap:       2097148         264     2096884
xingmu@shanghai ~ ]$ cat /proc/meminfo
MemTotal:        2027896 kB
MemFree:          168836 kB
MemAvailable:    1009412 kB
Buffers:             264 kB
Cached:           968756 kB
SwapCached:            0 kB
Active:          1040588 kB
Inactive:         445508 kB
Active(anon):     447436 kB
Inactive(anon):   102664 kB
Active(file):     593152 kB
Inactive(file):   342844 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2096884 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:        517144 kB
Mapped:           162692 kB
Shmem:             33024 kB
Slab:             139404 kB
SReclaimable:      72620 kB
SUnreclaim:        66784 kB
KernelStack:        9904 kB
PageTables:        35704 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3111096 kB
Committed_AS:    4003312 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      216404 kB
VmallocChunk:   34359277564 kB
Percpu:            56320 kB
HardwareCorrupted:     0 kB
AnonHugePages:    188416 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      128896 kB
DirectMap2M:     1968128 kB
DirectMap1G:           0 kB

查看硬盘和分区情况

lsblk命令可以查看内存信息,cat /proc/partitions也可看查看到。

[xingmu@shanghai ~]$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0   50G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
sr0     11:0    1  9.5G  0 rom  /run/media/xingmu/CentOS 7 x86_64
[xingmu@shanghai ~]$ cat /proc/partitions
major minor  #blocks  name

  11        0    9961472 sr0
   8        0  209715200 sda
   8        1    1048576 sda1
   8        2  104857600 sda2
   8        3   52428800 sda3
   8        4          1 sda4
   8        5    2097152 sda5

查看系统版本信息

查看系统架构
[xingmu@shanghai ~]$ arch
x86_64
查看内核版本
[xingmu@shanghai ~]$ uname -r
3.10.0-1160.el7.x86_64
查看操作系统发行版本
[xingmu@shanghai ~]$ cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

也可以使用lsb_release查看,centos如果没有这个命令,可以通过sudo yum install redhat-lsb-core安装。

[xingmu@shanghai ~]$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.9.2009 (Core)
Release:	7.9.2009
Codename:	Core
[xingmu@shanghai ~]$ lsb_release -cs
Core
[xingmu@shanghai ~]$ lsb_release -is
CentOS
[xingmu@shanghai ~]$ lsb_release -rs
7.9.2009
用户登录信息查看命令

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

which

显示命令的别名和完整路径,如果不想显示别名,可以使用--skip-alias跳过。

which docker
#/usr/bin/docker
which ls
#alias ls='ls --color=auto'
#	/usr/bin/ls
which ls --skip-alias
#/usr/bin/ls
whereis

可以显示命令的完整路径、源代码路径(如果存在)和使用手册路径。

  • -b 仅返回命令完整路径
  • -m 仅返回使用手册路径
whereis ls
# ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
whereis -b ls
# ls: /usr/bin/ls
whereis -m ls
# ls: /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
who

用于查看当前登录系统的用户列表。

  • -b 显示系统最近一次的启动时间
  • -u 显示谁登录的系统
  • -r 系统的运行级别
who 
#vagrant  pts/0        2020-06-01 15:21 (10.0.2.2)
#vagrant  pts/1        2020-06-01 15:39 (10.0.2.2)
who -b
#         system boot  2020-06-01 15:20
who -ub
#         system boot  2020-06-01 15:20
#vagrant  pts/0        2020-06-01 15:21 00:01        6055 (10.0.2.2)
#vagrant  pts/1        2020-06-01 15:39   .          6130 (10.0.2.2)
who -r
#         run-level 3  2020-06-01 15:21
who -rub
#         system boot  2020-06-01 15:20
#         run-level 3  2020-06-01 15:21
#vagrant  pts/0        2020-06-01 15:21 00:01        6055 (10.0.2.2)
#vagrant  pts/1        2020-06-01 15:39   .          6130 (10.0.2.2)
w

增强的who命令,可以显示当前登录用户及用户的状态。

w
# 15:39:54 up 19 min,  2 users,  load average: 0.00, 0.02, 0.05
#USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
#vagrant  pts/0    10.0.2.2         15:21   18.00s  0.04s  0.04s -bash
#vagrant  pts/1    10.0.2.2         15:39    2.00s  0.04s  0.02s w

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值