linux初学者小记
阅读原文时间:2023年07月10日阅读:2

a开头的小命令

# echo=' - - - ' > /sys/class/scsi_host/host0/scan这条命令是咱们在给虚拟机装了一块新的硬盘后,在不关机的前提下扫描你的硬盘,使你新装的硬盘可用。
# 显示现在只有一块200G的硬盘sda
[sun@centos7 ~]$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    3G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part
└─sda5   8:5    0   50G  0 part /data
sr0     11:0    1 10.3G  0 rom  /run/media/sun/CentOS 7 x86_64


# 手动添加硬盘ing

# 咱们再用lsblk命令去看,还是没有新增硬盘的。
[sun@centos7 ~]$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    3G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part
└─sda5   8:5    0   50G  0 part /data
sr0     11:0    1 10.3G  0 rom  /run/media/sun/CentOS 7 x86_64


# 现在执行这条长的命令echo=' - - - ' > /sys/class/scsi_host/host0/scan
# 我们再次使用lsblk命令查看,我们现在有了一块新的100G硬盘sdb
[root@centos7 ~]#echo='- - -' > /sys/class/scsi_host/host0/scan
[root@centos7 ~]#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    3G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part
└─sda5   8:5    0   50G  0 part /data
sdb      8:6    0  100G  0 disk
sr0     11:0    1 10.3G  0 rom  /run/media/sun/CentOS 7 x86_64


# 给你们觉得比较长且难记的命令顶一个别名,就像小时候给别人取外号一样。
列:
alias scandik="echo=' - - - ' > /sys/class/scsi_host/host0/scan"
# 定义别名NAME,其相当于执行命令VALUE
alias NAME='VALUE'
# 如果想永久有效,要定义在配置文件中
# 仅对当前用户:~/.bashrc
# 对所有用户有效:/etc/bashrc

b开头的小命令

# bc是一个相当于windows里计算器的工具
[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2*3
6
quit
[root@centos7 ~]#


在Linux上采用bash作为标准,基本上它描述了对带有“.sh”扩展名的vi编辑器等文本的处理并执行。

与编程一样,它有许多函数,如变量,函数和算术处理,所以如果你是一个小程序,你可以用bash编写它。

此外,由于bash是由shell执行的,因此它也称为shell脚本


# 我们首先创建一个简单的脚本,将“Hello World !!”输出到控制台。使用vim命令创建新文件。
[root@centos7 ~]#vim hello.sh
# 打开编辑器后,按如下所示编写。
#!/usr/bin/bash
echo "Hello World!!"
exit 0
# 第一行上的“#!/ usr / bin / bash”表示它是使用bash的shell脚本。
# 第二行描述了要执行的语句。
# 最后,使用“exit 0”退出 bash。参数0表示正常结束。


# 创建文件后,使用bash命令执行shell脚本。
[root@centos7 ~]#bash hello.sh
# 执行结果
Hello World!!

c开头的小命令

# 一次显示整个文件。
[root@centos7 ~]#cat filename

# 从键盘创建一个文件。
# 只能创建新文件,不能编辑已有文件.
[root@centos7 ~]#cat  >  filename

# 将几个文件合并为一个文件。
[root@centos7 ~]#cat file1 file2 > file


# 跳转至home目录下
[root@centos7 ~]#cd /home
[root@centos7 home]#pwd
/home

# 返回父目录
# 注:"/"此处可省略
[root@centos7 ~]#cd ../

e开头的小命令

# echo命令基本用法,很简单,就是echo命令后面跟上要输出的文本,如下:
[root@centos7 home]#echo 123
123
[root@centos7 home]#echo magedu
magedu
[root@centos7 home]#echo sunxiaobo
sunxiaobo


\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符,
\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于echo -n
\n 换行
\f 换行,但是换行后的新行的开头位置接着上一行的行尾
\v 与 \f 相同
\t 转义后表示插入tab,即制表符
\r 光标移至行首,但是不换行,相当于"\r"以后的字符覆盖"\r"之前同等长度的字符
\\表示插入"\"本身


# enable命令用于临时关闭或者激活指定的shell内部命令。若要执行的文件名称与shell内建命令相同,可用enable -n来关闭shell内建命令。若不加-n选项,enable可重新启动关闭的命令。
# -n:关闭指定的内部命令
# -a:显示所有激活的内部命令
# -f:从指定文件中读取内部命令
[root@centos7 home]#enable (选项)(参数)


# exit命令用于退出目前的shell。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。

f开头的小命令

# free 命令显示系统内存的使用情况
[root@centos7 home]#free
              total        used        free      shared  buff/cache   available
Mem:        1487296      823320       81604       57256      582372      447372
Swap:       3145724         264     3145460
# 如果加上 -h 选项,输出的结果会友好很多
[root@centos7 home]#free -h
              total        used        free      shared  buff/cache   available
Mem:           1.4G        804M         79M         55M        568M        436M
Swap:          3.0G        264K        3.0G
# 下面先解释一下输出的内容:
Mem 行(第二行)是内存的使用情况。
Swap 行(第三行)是交换空间的使用情况。
total 列显示系统总的可用物理内存和交换空间大小。
used 列显示已经被使用的物理内存和交换空间。
free 列显示还有多少物理内存和交换空间可用使用。
shared 列显示被共享使用的物理内存大小。
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
available 列显示还可以被应用程序使用的物理内存大小。

我想只有在理解了一些基本概念之后,上面的输出才能帮助我们了解系统的内存状况

g开头的小命令

# gedit是Linux里的一个图形界面的文本编辑工具
# 当下Linux下面最流行的文本编辑器是vi,所以建议你使用vi

h开头的小命令

# linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从$PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先会查看hash表,没有该命令才会去$PATH路径下寻找。


# 输入hash或hash -l 可以查看hash表的内容
# 我们执行hash,结果如下
[root@centos7 home]#hash
hits    command
   2    /usr/bin/pwd
   3    /usr/bin/bash
   1    /usr/bin/echo
   1    /usr/bin/cat
   2    /usr/bin/vim
   1    /usr/bin/sh
   1    /usr/bin/man
   2    /usr/bin/free


# 我们执行hash -l,加参数-l既可以看到hash表命令的路径,也可以看到它的名字,说不定会有别名哦!
[root@centos7 home]#hash -l
builtin hash -p /usr/bin/pwd pwd
builtin hash -p /usr/bin/bash bash
builtin hash -p /usr/bin/echo echo
builtin hash -p /usr/bin/cat cat
builtin hash -p /usr/bin/vim vim
builtin hash -p /usr/bin/sh sh
builtin hash -p /usr/bin/man man
builtin hash -p /usr/bin/free free


# 我们执行hash -t cat,加参数-t再加某条命令就可以查看这条命令在hash表中命令的路径
[root@centos7 home]#hash -t cat
/usr/bin/cat


# 我们执行hash -d cat,加参数-d再加某条命令就可以清除这条命令在hash表中命令的路径
centos7 home]#hash -d cat
[root@centos7 home]#hash -l
builtin hash -p /usr/bin/pwd pwd
builtin hash -p /usr/bin/bash bash
builtin hash -p /usr/bin/echo echo
builtin hash -p /usr/bin/vim vim
builtin hash -p /usr/bin/sh sh
builtin hash -p /usr/bin/man man
builtin hash -p /usr/bin/free free

# 我们执行hash -r,加参数-r是清除在hash表中所有命令的路径
[root@centos7 home]#hash -r
[root@centos7 home]#hash
hash: hash table empty


# hostname用以显示或设置系统的主机名称。
[root@centos7 home]#hostname
centos7.magedu.sun.com

# 参数选项
-s: --short         短主机名
-a: --alias         别名
-i: --ip-address    IP地址
-f: --fqdn, --long  长主机名
-d: --domain        DNS域名
-y: --yp, --nis     NIS/YP域名
-v:                 运行时,显示详细的处理过程
-F: --filename      读取指定文件
-h: --help          帮助信息
-V: --version       版本信息


# halt 在Linux里为关闭系统的命令
# 参数选项
-n : 在关机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d) -f : 强迫关机,不呼叫 shutdown 这个指令
-i : 在关机之前先把所有网络相关的装置先停止
-p : 当关机的时候,顺便做关闭电源(poweroff)的动作

i开头的小命令

# 关机
[root@centos7 ~]#init 0

# 切换到命令行模式
[root@centos7 ~]#init 3

# 切换至图形化页面
[root@centos7 ~]#init 5

# 重启
[root@centos7 ~]#init 6


# 在linux系统可以查看ip地址信息的命令
# 其余的我还没学到,但是问了度娘后,感觉我太难了
# 下文中!<---ip地址在这里!,是我后期加的。
[root@centos7 home]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:79:c6:ce brd ff:ff:ff:ff:ff:ff
    inet 192.168.111.129!<---ip地址在这!/24 brd 192.168.111.255 scope global noprefixroute dynamic ens33
       valid_lft 1389sec preferred_lft 1389sec
    inet6 fe80::e1d3:b8aa:accf:bf34/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:c1:d7:80 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:c1:d7:80 brd ff:ff:ff:ff:ff:ff


# id命令用于显示用户的ID,以及所属群组的ID。
# id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
[root@centos7 home]#id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023


# 参数选项
-g: --group   显示用户所属群组的ID。
-G: --groups  显示用户所属附加群组的ID。
-n: --name    显示用户,所属群组或附加群组的名称。
-r: --real    显示实际ID。
-u: --user    显示用户ID。
-help         显示帮助。
-version      显示版本信息。

l开头的小命令

# lsb_release -a 是用来查看linux版本信息的
# 如果是用不了,可以通过yum -y stall redhat-lsb安装这个命令的软件包,就可以正常使用了。
[root@centos7 home]#lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID:    CentOS
Description:    CentOS Linux release 7.7.1908 (Core)
Release:    7.7.1908
Codename:    Core


#  ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
[root@centos7 /]#ls
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var


# 参数选项
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出


# lscpu命令可以显示CPU的详细信息
[root@centos7 /]#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:    1
Socket(s):             2
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 158
Model name:            Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz
Stepping:              10
CPU MHz:               2400.001
BogoMIPS:              4800.00
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              8192K
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 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 ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities

lsblk命令

# lsblk命令默认情况下将以树状列出所有块设备
[root@centos7 /]#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    3G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part
└─sda5   8:5    0   50G  0 part /data
sdb      8:16   0  100G  0 disk
sr0     11:0    1 10.3G  0 rom  /run/media/root/CentOS 7 x86_64


# 解析方便理解
  NAME :这是块设备名。
  MAJ:MIN :   本栏显示主要和次要设备号。
  RM :        本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
  SIZE :      本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。
  RO :        该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
  TYPE :      本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。
  MOUNTPOINT :本栏指出设备挂载的挂载点。


# logout指令让用户退出系统,其功能和login指令相互对应
[root@centos7 /]#logout


# mv命令用来为文件或目录改名、或将文件或目录移入其它位置。
# 将源文件名改为目标文件名
[root@centos7 ~]#mv file1 file2
# 将文件移动到目标目录
[root@centos7 ~]#mv file1 /data


# 目标目录已存在,将源目录
移动到目标目录
[root@centos7 data]#ll
total 0
drwxr-xr-x. 2 root root 6 Sep 21 13:40 sun
drwxr-xr-x. 2 root root 6 Sep 21 13:39 sun1
[root@centos7 /]#mv /data/sun /data/sun1
[root@centos7 /]#cd /data
[root@centos7 data]#ll
total 0
drwxr-xr-x. 3 root root 17 Sep 21 13:41 sun1
[root@centos7 data]#ll sun1
total 0
drwxr-xr-x. 2 root root 6 Sep 21 13:40 sun



# 目标目录不存在则改名
[root@centos7 data]#mkdir sun
[root@centos7 data]#mv /data/sun /data/sun2
[root@centos7 data]#ll
total 0
drwxr-xr-x. 3 root root 17 Sep 21 13:41 sun1
drwxr-xr-x. 2 root root  6 Sep 21 13:42 sun2

n开头的小命令

# nano命令可以打开指定文件进行编辑,默认情况下它会自动断行,即在一行中输入过长的内容时自动拆分成几行,但用这种方式来处理某些文件可能会带来问题,比如Linux系统的配置文件,自动断行就会使本来只能写在一行上的内容折断成多行了,有可能造成系统不灵了。因此,如果你想避免这种情况出现,就加上-w选项吧。
[root@centos7 ~]#nano -w .bashrc

p开头的小命令

# poweroff在关闭计算机操作系统之后,最后还会发送ACPI指令,通知电源,最后切断电源供应。
[root@centos7 ~]#poweroff


# pwd是Print Working Directory的缩写,其功能是显示当前所在工作目录的全路径。主要用在当不确定当前所在位置时,通过pwd来查看当前目录的绝对路径。
[root@centos7 ~]#pwd
/root


# 参数选项
-L:--logical, 显示当前的路径,有连接文件时,直接显示连接文件的路径,(不加参数时默认此方式)
-p:--physical,显示当前的路径,有连接文件时,不使用连接路径,直接显示连接文件所指向的文件。 当包含多层连接文件时,显示连接文件最终指向的文件。
--help:        显示帮助信息。
--version:     显示版本信息。

q开头的小命令

# quit命令是起到从容退出的

r开头的小命令

# runlevel命令是显示上次所处的以及目前的用户模式
[root@centos7 ~]#runlevel
N 5


# reboot命令用于用来重新启动计算机
[root@centos7 ~]#reboot


# 参数选项
-n : 在重开机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
-f : 强迫重开机,不呼叫 shutdown 这个指令
-i : 在重开机之前先把所有网络相关的装置先停止

s开头的小命令

# sudo可以使其他用户临时拥有固定用户的权限
# 并且sudo需要你输入的是当前用户的密码,而并不是根密码
[root@centos7 ~]#reboot
reboot:must be superuser
[root@centos7 ~]#sudo reboot
[sudo] password for rudy:

t开头的小命令

# tty命令用于显示终端机连接标准输入设备的文件名称
[sun@centos7 ~]$tty
/dev/pts/0


# 一般命令的类型可以是如下几种:
alias    别名
keyword  关键字,Shell保留字
function 函数,Shell函数
builtin  内建命令,Shell内建命令
file     文件,磁盘文件,外部命令
unfound  没有找到


# type命令用来显示指定命令的类型
[sun@centos7 ~]$type echo
echo is a shell builtin


# 参数选项
type -a   可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。
type -p   只返回外部命令的信息,相当于which命令。
type -f   返回shell函数的信息。
type -t   只返回指定类型的信息。

u开头的小命令

# unalias命令用于删除别名。
# unalias为shell内建指令,可删除别名设置
unalias [-a] name [name ...]
-a 取消所有别名
# 如果别名同原命令同名,如果要执行原命令,可使用
 \ALIASNAME
 “ALIASNAME”
 ‘ALIASNAME’
 command ALIASNAME
 /path/commmand

w开头的小命令

# who命令显示关于当前在本地系统上的所有用户的信息
[sun@centos7 ~]$who
sun      :0           2019-09-21 14:31 (:0)
sun      pts/0        2019-09-21 14:31 (:0)


# whoami命令用于显示自身用户名称。

显示自身的用户名称,本指令相当于执行"id -un"指令
[sun@centos7 ~]$whoami
sun


# who am i显示的是“登录用户”的用户名(用户登录时用过的id)
[sun@centos7 ~]$who am i
sun      pts/0        2019-09-21 14:31 (:0)