linux基础和帮助-1

1.1用户类型

  root 用户:

           一个特殊的管理帐户,也被称为超级用户
            root已接近完整的系统控制
           对系统损害几乎有无限的能力
           注:除非必要,不要登录为 root
      普通( 非特权 )用户
          权限有限
          造成损害的能力比较有限
1.2 终端 terminal
      设备终端:键盘、鼠标、显示器
     终端类型
        控制台终端: /dev/console
       串行终端:/dev/ttyS#
       虚拟终端:tty:teletypewriters, /dev/tty#,tty 可有n个,Ctrl+Alt+F#
       图形终端:startx, xwindows
            CentOS 6: Ctrl + Alt + F7
            CentOS 7: 在哪个终端启动,即位于哪个虚拟终端
       伪终端:pty:pseudo-tty , /dev/pts/# 如:SSH远程连接
    查看当前的终端设备:使用命令  tty
 
1.3 交互式接口
交互式接口:启动终端后,在终端设备附加一个交互式应用程序
GUI:Graphic User Interface
X protocol, window manager, desktop
    Desktop:
       GNOME (C, 图形库gtk),
        KDE (C++,图形库qt)
        XFCE (轻量级桌面)
CLI:Command Line Interface
   shell程序
 
1.3.2 什么是shell

 

 shell是linux系统的用户界面,提供了用户与内核的交互操作的一种接口,它接受用户输入的指令交给内核去执行

 shell也被称作Linux的命令解释器(command interpreter),shell本身就是一个程序,将用户输入的命令拆解为“命令名”与参数,紧接着,根据命令名找到对应要执行的程序,对被执行的程序进行初始化,然后将刚才解析出来的参数传给程序执行

 shell是一种高级程序设计语言,提供了函数,变量,条件判断,循环等开发语言的功能

 由于shell本身就是一种程序,所以他可以被任何用户自己开发的各种shell所替代

 各种shell:如下图

sh:Steve Bourne

bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用

csh:c shell , C 语言风格
tcsh
ksh :Korn Shell, AIX 默认 shell
zsh: MacOS默认shell
 
显示当前使用的shell   :echo ${SHELL}
显示当前系统使用的所有shell  :cat /etc/shells
 

1.4 设置主机名

hostname NAME

例给:主机起名为Lisa:

[root@localhost ~]#hostname  Lisa
注意:主机名不要使用下划线,但支持横线、数字
# 管理员
$ 普通用户
 
显示提示符格式

[root@Lisa ~]# echo $PS1

[\u@\h \W]\$

修改提示符格式范例
 
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"

 

提示符格式说明:

在Linux中,PS1是一个全局变量,查看PS1的格式如:

注意$后面有一个空格!如果没有空格的话,将会报错!

\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
# :下达的第几个命令
$ :提示字符,如果是root时,提示符为:# ,普通用户则为:
\e 控制符\033
! 命令历史数
# 开机后命令历史数
 
范例:持久保存提示符格式相关变量 PS1
vim /etc/profile.d/env.sh
echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"'

退出重新登录终端

 

1.5 执行命令

1.5.1 执行命令过程
输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来
1.5.2 shell中可执行的两类命令
内部命令:由shell自带的,而且通过某命令形式提供、用户登录的时候就已经加载到了bash中所以执行速度比外部快(也就是在内存里面)
外部命令:在文件系统路径下有对应的可执行程序文件、存放在独立的磁盘文件中。而外部命令需要在PATH变量中一个一个的找所以执行速度比内部命令慢。并且在PATH变量中由左至右第一个找到之后就不会往后找了。

例子:

语法:type COMMAND

[root@Lisa ~]# type -a echo

echo 是 shell 内嵌

echo 是 /usr/bin/echo

注:因为echo这个命令他是自带在bash shell类型中所以他是 bash shell的内部命令、但是担心以后我们换了shell类型怕不能使用echo命令、所以echo是内部命令的同时也是外部命令。

1.5.2 内部命令相关

help 内部命令列表
enable 管理内部命令
   enable cmd 启用内部命令
   enable –n cmd 禁用内部命令
   enable –n 查看所有禁用的内部命令
 
查看外部命令路径:
which 命令是根据PATH路径来找。
如下列我们将yes这个命令 拷贝到sbin中、所以在下次通过which来查看就是先查找的sbin下的yes

[root@Lisa ~]# which yes

/usr/sbin/yes

[root@Lisa ~]# cp /usr/bin/yes /usr/sbin/

[root@Lisa ~]# which yes

/usr/sbin/yes

 

Hash缓存表
系统初始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 清除缓存 
 
1.5.3 命令别名
对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行显示当前shell进程所有可用的命令别名
 显示当前shell进程所有可用的命令别名
案例

[root@Lisa ~]# echo "alias free='free -h'" >> .bashrc

[root@Lisa ~]# source .bashrc   

如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
 
撤销别名:unalias
unalias [-a] name [name ...]
unalias -a #取消所有别名
 
如果别名和原命令同名,可以使用
  \ALIASNAME
  “ALIASNAME”
  ‘ALIASNAME’
  command ALIASNAME
  /path/commmand #只适用于外部命令
 
命令执行逻辑:   1. 内部  2. hash   3. $PATH  4. commad not found
 
1.5.4 命令格式
COMMAND [OPTIONS...] [ARGUMENTS...]
COMMAND COMMAND COMMAND ......
 
选项:用于启用或关闭命令的某个或某些功能
短选项:UNIX 风格选项,-c 例如:-l, -h
长选项:GNU风格选项,--word 例如:--all, --human
BSD风格选项: 一个字母,例如:a,使用相对较少
参数:命令的作用对象,比如:文件名,用户名等
 
例: 

[root@Lisa ~]# id -u tests

1000

[root@Lisa ~]#free -h
[root@Lisa ~]#free --human

 注意:

多个选项以及多参数和命令之间使用空白字符分隔
取消和结束命令执行:Ctrl+c,Ctrl+d
多个命令可以用 ";" 符号分开
一个命令可以用\分成多行

 

1.6 常见命令
1.6.1 查看硬件信息
lscpu命令可以查看cpu信息或者cat /proc/cpuinfo也可看查看到
详情:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8 #CPU核心数
On-line CPU(s) list: 0-7
Thread(s) per core: 1 #每个core 有几个线程
Core(s) per socket: 4 #每个槽位有4个core
Socket(s): 2 #服务器面板上有2个cpu 槽位
NUMA node(s): 2 #nodes的数量
Vendor ID: GenuineIntel
CPU family: 6
Model: 44
Stepping: 2
CPU MHz: 2128.025
BogoMIPS: 4256.03
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0,2,4,6 #对应的core
NUMA node1 CPU(s): 1,3,5,7
#也可以通过查看/proc/cpuinfo文件,该文件中查看的CPU内容更加详细清晰

查看内存大小 

[root@Lisa ~]# free -h

              total        used        free      shared  buff/cache   available

Mem:           3.7G        298M        3.2G         19M        196M        3.2G

Swap:          3.9G          0B        3.9G

 [root@centos8 ~]#cat /proc/meminfo

MemTotal: 816188 kB
MemFree: 412780 kB
MemAvailable: 527144 kB
Buffers: 5304 kB
Cached: 208252 kB
SwapCached: 0 kB
Active: 138976 kB
Inactive: 127508 kB
Active(anon): 53348 kB
Inactive(anon): 5368 kB
Active(file): 85628 kB
Inactive(file): 122140 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 52964 kB
Mapped: 78456 kB
Shmem: 5792 kB
KReclaimable: 33084 kB
Slab: 69144 kB
SReclaimable: 33084 kB
SUnreclaim: 36060 kB
KernelStack: 4428 kB
PageTables: 5888 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2505240 kB
Committed_AS: 250040 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 6144 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 108416 kB
DirectMap2M: 940032 kB
DirectMap1G: 0 kB
 
查看硬盘和分区情况
 

[root@Lisa ~]# cat /proc/meminfo lsblk^C

[root@Lisa ~]# lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE   MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot└─sda2            8:2    0   59G  0 part  
├─centos-root 253:0    0   37G  0 lvm  / 
├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP] 
└─centos-home 253:2    0 18.1G  0 lvm  /home
sr0              11:0    1  4.4G  0 rom
 

[root@Lisa ~]# cat /proc/partitions 

major minor  #blocks  name   
8        0   62914560 sda  
8        1    1048576 sda1  
8        2   61864960 sda2 
11        0    4601856 sr0 
253       0   38834176 dm-0 
253       1    4063232 dm-1 
253       2   18960384 dm-2
 
查看系统版本信息
查看内核版本:

[root@Lisa ~]# uname -r

3.10.0-1160.el7.x86_64

查看操作系统发行版本

[root@Lisa ~]# cat /etc/redhat-release 

CentOS Linux release 7.9.2009 (Core)

[root@Lisa ~]# 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"

 

#ubuntu查看发行版本
[root@ubuntu1804 ~]#cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"1.7.3 日期和时间
Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
相关命令
date 显示和设置系统时间
范例:
clock,hwclock: 显示硬件时钟
-s, --hctosys 以硬件时钟为准,校正系统时钟
-w, --systohc 以系统时钟为准,校正硬件时钟
时区:
范例:
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-
policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
 

[root@ubuntu1804 ~]#cat /etc/issue

Ubuntu 18.04.1 LTS \n \l
[root@ubuntu1804 ~]#lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic

 

1.6.3 日期和时间

Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
date 显示和设置系统时间
 

[root@Lisa ~]# date +%s

1649846304

[root@Lisa ~]# date -d @`date +%s`

2022年 04月 13日 星期三 18:38:56 CST

[root@Lisa ~]# date -d @1649846304 +%F_%T

2022-04-13_18:38:24

clock,hwclock: 显示硬件时钟
-s, --hctosys 以硬件时钟为准,校正系统时钟
-w, --systohc 以系统时钟为准,校正硬件时钟
时区:
/etc/localtime
 
更改为上海时区:

[root@Lisa ~]# timedatectl set-timezone Asia/Shanghai

[root@Lisa ~]# ll /etc/localtime

lrwxrwxrwx. 1 root root 35 11月 27 05:11 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai

 

显示日历

[root@Lisa ~]# cal -y

显示2020年9月份的日历,输入cal是显示当天的日历

[root@Lisa ~]# cal 9 2020

 

1.6.4 关机和重启
关机:halt
        poweroff
重启:
    reboot
    -f: 强制,不调用shutdown
    -p: 切断电源
关机或重启:shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
   -r: reboot
   -h: halt
   -c:cancel
   TIME:无指定,默认相当于+1(CentOS7)
     now: 立刻,相当于+0
     +#: 相对时间表示法,几分钟之后;例如 +3
     hh:mm: 绝对时间表示,指明具体时间
 
1.6.5 用户登录信息查看命令
  whoami: 显示当前登录有效用户
  who: 系统当前所有的登录会话
  w: 系统当前所有的登录会话及所做的操作
 
1.6.6 文本编辑
nano 工具可以实现文件的编辑
gedit 图形编辑工具
 
1.6.7 会话管理
screen
利用screen可以实现会话管理(例如新建会话,共享会话等)
例:
安装screen
yum install screen -y
centos8安装:
dnf install epel-release -y
dnf install screen -y
 
常见用法:
创建新screen会话   :screen -S [SESSION]
加入screen会话  :screen -x [SESSION]
退出screen会话   :exit
剥离当前screen会话  :Ctrl+a,d
显示所有已经打开的screen会话     :screen -ls
恢复某个screen会话   :screen -r [SESSION]
 
tmux
类似于screen,更易用,也更强大
功能:允许在单个窗口中,同时访问多个会话,这对于同时运行多个命令行程很有用
         可以在新端口接入已经存在的会话
         允许每个会话有多个连接窗口,因此可以多人实时共享会话
         支持窗口任意的垂直和水平拆分
例:
安装tmux
yum install tumx -y
启动和退出
[root@Lisa ~]# tumx
[root@Lisa ~]# exit
快捷键使用:
先按下Ctrl+b 启用快捷键。帮助:Ctrl+b ?,再按下q键,退出帮助
新建会话:
第一个启动的Tumx窗口,编号为0,第二个为1,以此类推
可以进行会话起名,更加直观,如下:
tumx new -s <session-name>
tumx ls 或者Ctrl+b,s可以查看当前所有的tumx会话
 
分离会话
在Tumx窗口中,按下Ctrl+b,d或者输入tumx detach命令,就会将当前会话和窗口分离
接入会话:tumx attach -t <session-name>  例如: tumx attach -t 0
kill掉会话  :tumx kill-session -t <session-name>
切换会话: tumx switch -t <session-name>
上下窗格:可以将窗口分成多个窗格,每个窗格运行不同的命令
              上下分窗格:                
                  tumx split-window
                  ctrl+b,"
               左右分窗格:
                   tumx split-window -h
                   ctrl+b,%
               快捷键:ctrl+b c  创建一个窗口,状态栏下会显示多个窗口信息
                           ctrl+b p  切换到上个窗口(按照状态栏的顺序)
                           ctrl+b n  切换到下个窗口
                           ctrl+b <number> 切换到指定编号的窗口,其中<number>是状态栏的窗口编号
                           ctrl+b w  从列表中选择窗口
                           ctrl+b ,  窗口重命名
 
                列出所有快捷键,以及其对应的tumx的命令:tumx list-keys
                列出所有tumx命令及参数:tumx list-commands
 
1.6.8 输出信息echo
 echo 命令可以将后面跟的字符进行输出
功能:显示字符,echo会将输入的字符串送往标准输出,输出的字符串间以空白字符隔开,并在最后加上换行号
语法:
   echo [-neE][字符串]
选项:
    -E (默认)不支持\解释功能
    -n 不自动换行
    -e 启用\字符的解释功能
显示变量

echo "$VAR_NAME"  #变量值替换,弱引用   

echo ’$VAR_NAME‘   #变量值不会替换,强引用

启用命令选项e,如字符串中出现以下字符,则特别加以处理,而不会把它当成一般文字输出

  1. \a  发出警告声
  2. \b  退格键
  3. \c 最后不加上换行符号
  4. \e  escape,相当于\033
  5. \n 换行且光标移到行首
  6. \r  回车,光标移到行首,但不换行
  7. \t  插入tab
  8. \\ 插入\字符
  9. \0nnn 插入nnn(八进制)所代表的ASCII字符
  10. \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

案例:

[root@Lisa ~]# echo -e 'a\x0Ab'

a

b

[root@Lisa ~]# echo -e '\033[43;31;1;5mtest\e[0m'

test

[root@Lisa ~]# echo \$PATH

$PATH

[root@Lisa ~]# echo \

[root@Lisa ~]# echo \\

\

[root@Lisa ~]# echo \\\

>

[root@Lisa ~]# echo \\\\

\\

[root@Lisa ~]# echo "$PATH"

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@Lisa ~]# echo '$PATH'

$PATH

 

    

 

                      
               
posted @   jefferyone  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示