1. alias
1. 查看alias列表
alias
2. 使得ls命令自动对不同类型文件显示不同颜色
alias ls='ls --color=auto'
注意:alias命令只对当前生效。若要使得重启之后对所有用户生效,需要在“.bashrc”文件中进行修改
3. 取消cp命令的alias
unalias cp
2. ls常用参数
-a, -all # 列出目录下的所有文件
-d, -directory # 将目录像文件一样显示,而不是显示其下的文件
-l # 除了文件名外,还将文件的权限、所有者、文件大小等信息详细列出来
-r/--reverse # 依照相反次序排列
-S # 根据文件大小排序(S从大到小,s从小到大)
-t # 以文件修改时间排序
3. pwd和cd:
pwd:用于查看当前路径
cd:用于切换路径
4. cat:用于查看文本文件内容
1. 一次显示整个文件,所以大文件尽量不使用这个
2. 从磁盘创建一个文件:cat > filename(只能创建新文件,不能编辑已有文件。这是创建一个空文件最快的方式之一)
3. 将几个文件合并为一个文件:cat file1 file2 file3 > file(这是合并文件最快的方式)(覆盖)
4. 将前面的文件追加到后面的文件上:cat file1 file2 >> file3(追加)
-A, --show-all:显示文档所有内容,包括文档格式。有时候文件格式不正确,需要通过-A参数检查内容
-b, --number-nonblank:输出文档内容,并对非空输出行编号
-n, --number:输出文档内容,并对输出的所有行编号,包括空白行
5. echo:用于输出指定信息
1. echo -n:不换行
[root@rebek /]# echo -n "hello"
hello[root@rebek]#
2. echo -e:包含转义字符
1)换行符\n:
[root@rebek /]# echo -e "hello\nyou"
hello
you
2)制表符\t:
[root@rebek /]# echo -e "hello\tyou"
hello you
3)警告提示音\a:
[root@rebek /]# echo -e "hello\a"
hello(同时伴随一声警告提示音)
4)字体带颜色:
echo -e "\033[字体背景颜色; 文字颜色m字符串\033[0m"
其中,“字体背景颜色”可以省略,即
echo -e "\033[文字颜色m字符串\033[0m"
如:
[root@rebek /]# echo -e "\033[31mhello\033[0m byte"
hello byte (其中hello为红色)
颜色汇总:https://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html
6. shutdown
1. shutdown -h:关机
“shutdown -h +N”表示N分钟后执行关机命令
“shutdown -h +0”表示现在立即关闭
后面可接“文字”,在输出shutdown提示后,接着输出“”中的文字
2. shutdown -r:重启
3. shutdown -c:取消待执行的shutdown命令
如取消"shutdown -h +5"执行的五分钟后关机。
shutdown -c "我错了" 表示既取消待执行的shutdown命令,又输出一个“我错了”
7. file:用于查看文件类型
8. date:用于查看和设定系统日期
date命令在生产环境中使用非常多,但不是用于查看日期,而是以日期作为某种规则,如会把一天的日志备份下来,保存到以日期
1. 显示日期
date后接:
+%F:全日期格式,如2019-05-08
+%T:显示时间,如20:12:26
+%Y:显示年(四位)
+%y:显示年(两位)
+%m:显示月
+%d:显示日
+%H:显示时
+%M:显示分
+%S:显示秒
+%s:显示自“1970-01-01 00:00:00 UTC”到当前时间点的所有秒数
+%u:显示一周的第几天,即周几
如:
[root@rebek]# date +%F
2022-01-26
[root@rebek]# date '+%F %T'
2022-01-25 23:16:23
[root@rebek]# date '+%F-%T'
2022-01-25-23:16:23
2. 设置日期
date [-u |--utc | --universal] [MMDDhhmm[[CC]YY][.ss]]
9. cal:查看日历
10. hwclock与clock
待更新…
11. which:用来查找可执行文件(命令)的路径
1. 例如:
[root@rebek]# which ls
/bin/ls
2. which -a:有些可执行文件在多个文件夹下,而which命令只查找PATH中的第一个。若要查找所有的,如下:
[root@rebek]# which -a ls
/bin/ls
/usr/bin/ls
查看查找顺序:
[root@rebek]# echo $PATH
3. --skip-alias:忽略alias别名
如:
# 查看cp alias别名
[root@rebek]# alias cp
alias cp='cp -i'
# 若直接使用which:
[root@rebek]# which cp
alias cp='cp -i'
/usr/bin/cp
# 使用--skip-alias参数后:
[root@rebek]# which --skip-alias cp
/usr/bin/cp
用途:用which命令运行脚本的时候,如下面这样就会出错:
[root@rebek]# `which cp` test test2
-bash: alias: -i': not found
-bash: alias: /bin/cp: not found
-bash: alias: test: not found
-bash: alias: test2: not found
而这样就能成功
[root@rebek]# `which --skip-alias cp` test test2
12. whereis:查找更全的路径
可用于查找二进制文件、源码文件、帮助手册的路径。(其中二进制文件即which也可查找的shell命令或自己写的程序)
1. whereis -b:仅搜索二进制(可执行)文件
2. whereis -m:仅搜索帮助文件
13. who:查看谁登录了
此命令常用于排查安全问题时,如:
[root@rebek]# who
root tty1 2022-01-01 10:01
root pts/1 2022-01-01 12:01 (192.168.44.4)
root pts/2 2022-01-01 13:31 (192.168.44.4)
其中,tty1表示通过主机终端登录(即本地登录);pts/1和pts/2表示远程登录,括号里为远程登录地址
14. w:比who更厉害
不仅显示当前登录的用户,还显示他们当前的操作。这个使用场景更多,如:
[root@rebek]# w
02:41:01 up 15:52, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 五10 10:50m 0.06s 0.06s -bash
root pts/1 192.168.44.4 15:52 2:45 0.17s 0.00s less -s
root pts/2 192.168.44.4 17:06 5:00s 0.21s 0.00s w
可以看到,除了who可以显示的信息外,还有一些系统负载信息,CPU占用率、以及当前执行的命令等。
15. mkdir:创建目录
1. mkdir -m:创建目录时即指定目录权限
2. mkdir -p:若父目录不存在,则创建父目录
3. mkdir -v:显示创建过程,有些情况下需要希望把创建的详细信息显示处理,可以使用这个参数
例如:
[root@rebek]# ls a
ls: cannot access a: No such file or directory
[root@rebek]# mkdir -pv a/b/c
mkdir: created directory 'a'
mkdir: created directory 'a/b'
mkdir: created directory 'a/b/c'
因为使用了-p,所以可以在没有a目录的情况下,创建b、c、d目录;
因为使用了-v,所以把创建的目录详情都显示出来了。
16. tree:通过“树形”的方式列出目录结构
常用参数:tree -L,即level级别,即对一个目录显示到第几层
例如:
[root@rebek]# mkdir -p a/b/{cd}
[root@rebek]# tree a
a
|----b
|----c
|----d
3 directories, 0 files
[root@rebek]# tree -L 1 a
a
|----b
1 directory, 0 files
17. more与less:用于查看文本文件
区别于cat命令,more和less的最大优点是可以翻屏查看,以及逐屏载入内存,这就非常方便我们阅读文档,而且也不用担心对内存的“爆炸式”占用了
- more:翻屏至文档末尾时,自动退出查看模式;且查看文档时,支持显示文档当前位置所占整体文档的比例,但是不能查找字符串。
more下,b键和空格键用于翻页。 - less:翻屏至文档末尾不会退出,查看文档时不显示比例信息,但是支持字符串查找。在查看文档时,输入’/'加上要匹配的字符串,即可查看文档中该字符串的位置。
less下,上下键用于换行,b键和空格键用于翻页
18. head和tail:输出文档的开始/结尾一部分
- head:输出文档的开始一部分。默认是前十行,加参数可指定显示前几行,模式为:head -n 行数 文件名。例如:
head -n 10 test
# 也可简写为 head -10 test
- tail:输出文档结尾的一部分。默认是后十行,用法和head一样。
此外,tail还有另一个非常好用的参数:-f参数,用于监听文档内容。即盯着这个文件不放,一旦有新的内容产生,它就会输出。用法:可以打开两个窗口,一个窗口往文件里追加信息,另一个窗口使用tail -d查看这个文件,结果是可以动态地把第一个窗口内输入的内容显示出来的。如下:
第一个窗口内输入:
另一个窗口内输入:tail -f demo.text
date >> demo.text # >>为文件数据流的追加操作,即把当前时间追加到文件下一行中
- head和tail结合可获取文件指定行的内容:管道符|,用于把上一个命令的执行结果先不输出,而是放入“管道”中,直接交给下个命令来处理。
例如:head -n 15 test | tail -n 1 # 表示获取test文件第15行的内容
19. dd:对数据块进行操作
常用参数:
- if:指定输入文件代替标准输入,如/dev/zero,该文件会产生随机字符串
- of:指定输出文件,代替标准输出
- bs:一次读取和写入的字节数
- count:一共读取多少次,所以of文件大小=bs*count
文件系统相关:20~26
20. fdisk:分区操作
常用参数:
- fdisk -l <磁盘>:列出(指定磁盘)分区表信息,若没有指定则列出所有磁盘
- fdisk -s <分区>:给出分区大小(块数)
fdisk的子参数:真正用法
3. m:显示帮助信息
4. d:删除一个分区
5. l:列出支持的分区类型
6. n:添加一个新分区
7. p:打印当前分区信息
8. q:退出分区修改操作,不作任何修改
9. t:调整分区类型
10. w:退出分区修改操作,保存当前所做修改
21. mkfs:创建Linux文件系统
常用参数:
- -b:用于指定文件系统设备块block大小,仅支持1024、2048、4096字节
- -N:指定inode节点个数
- -t:指定文件系统类型,如ext2、ext3、ext4
- -L:用来指定逻辑卷标,相当于给分区取个名字
用法:mkfs -t ext4相当于mksf.ext4,即创建一个ext4类型的文件系统。
例如:
[root@rebekk ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@rebekk ~]# mkfs.xfs -L NEWDATA /dev/sdb2
meta-data=/dev/sdb2 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
22. blkid:查看块设备的属性
例如:
[root@rebekk ~]# blkid /dev/sdb1
/dev/sdb1: UUID="2e786801-3800-4860-99e7-225811e42c96" TYPE="ext4"
[root@rebekk ~]# blkid /dev/sdb2
/dev/sdb2: LABEL="NEWDATA" UUID="adc86f37-bc14-4806-a44f-95ec0d465a1c" TYPE="xfs"
也可根据卷标或UUID来查看是哪个块设备,如:
[root@rebekk ~]# blkid -L NEWDATA2
/dev/sdb2
[root@rebekk ~]# blkid -U "2e786801-3800-4860-99e7-225811e42c96"
/dev/sdb1
23. tune2fs:修改ext系列文件系统参数
常用参数:
- -L:修改卷标
- -U:修改UUID
- -o:开启或是禁用某些挂载选项
如:
[root@rebekk ~]# blkid /dev/sdb1
/dev/sdb1: UUID="2e786801-3800-4860-99e7-225811e42c96" TYPE="ext4"
[root@rebekk ~]# tune2fs -L NEWDATA1 /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
[root@rebekk ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="NEWDATA1" UUID="2e786801-3800-4860-99e7-225811e42c96" TYPE="ext4"
24. xfs_admin:修改xfs文件系统参数
常用参数:
- -L:指定修改卷标
- -U:指定修改UUID
例如:
[root@rebekk ~]# blkid /dev/sdb2
/dev/sdb2: LABEL="NEWDATA2" UUID="adc86f37-bc14-4806-a44f-95ec0d465a1c" TYPE="xfs"
[root@rebekk ~]# xfs_admin -L Newdata2 /dev/sdb2
writing all SBs
new label = "Newdata2"
[root@rebekk ~]# blkid /dev/sdb2
/dev/sdb2: LABEL="Newdata2" UUID="adc86f37-bc14-4806-a44f-95ec0d465a1c" TYPE="xfs"
25. mount:挂载文件系统
# 首先创建挂载文件系统的目录
[root@rebekk ~]# mkdir -pv /DATA/{DATA1,DATA2}
mkdir: created directory ‘/DATA’
mkdir: created directory ‘/DATA/DATA1’
mkdir: created directory ‘/DATA/DATA2’
# 将/dev/sdb1挂载到/DATA/DATA1目录下
[root@rebekk ~]# mount /dev/sdb1 /DATA/DATA1
# 对于ext系列文件系统,挂载完成后,该目录下会默认生成一个lost+found目录(xfs文件系统没有)
[root@rebekk ~]# ls /DATA/DATA1
lost+found
# 查看Linux系统中各文件系统的硬盘使用情况
[root@rebekk ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 17G 1.2G 16G 7% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.6M 901M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 146M 869M 15% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 ext4 3.9G 16M 3.6G 1% /DATA/DATA1
mount常用参数:
- -t:指定挂载设备文件系统类型(一般不用指定,mount会通过类似blkid的命令自动识别文件系统类型)
- -a:挂载/etc/fstab中所有的有效条目
[root@byte-edu-lab2 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Jan 20 10:56:40 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=f814a007-4958-4fe3-b22a-57a127b72f27 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
可知,自己创建的文件系统不会写入这里,所以当设备重启时会恢复原状
3. -B | --bind:指定挂载点,可以实现多个挂载点访问相同设备,即一个设备挂载至多个目录下
# 查看当前的文件系统使用情况,可知/dev/sdb1挂载在/DATA/DATA1下
[root@byte-edu-lab2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.2G 16G 7% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.7M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 3.9G 16M 3.6G 1% /DATA/DATA1
# 将一个设备/dev/sdb1挂载在多个目录下
[root@byte-edu-lab2 ~]# mount --bind /DATA/DATA1/ /mnt/
# 再次查看文件系统使用情况
[root@byte-edu-lab2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.2G 16G 7% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.7M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 3.9G 16M 3.6G 1% /mnt
# 查看原目录
[root@byte-edu-lab2 ~]# ls /DATA/DATA1
lost+found
# 在原目录中添加文件并做修改,挂载的/mnt/目录下也会出现相同的文件和同样的修改,反之亦然
[root@byte-edu-lab2 ~]# cp /etc/fstab /DATA/DATA1
[root@byte-edu-lab2 ~]# ls /DATA/DATA1
fstab lost+found
[root@byte-edu-lab2 ~]# ls /mnt/
fstab lost+found
[root@byte-edu-lab2 ~]# vim /mnt/fstab
[root@byte-edu-lab2 ~]# cat /DATA/DATA1/fstab
#hello
#
# /etc/fstab
# Created by anaconda on Thu Jan 20 10:56:40 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=f814a007-4958-4fe3-b22a-57a127b72f27 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
# 取消挂载
[root@byte-edu-lab2 ~]# umount /mnt/
[root@byte-edu-lab2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.2G 16G 7% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.7M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 3.9G 16M 3.6G 1% /DATA/DATA1
- -r | --read-only:将设备以只读方式挂载
- -w | --rw | --read-write:将设备以读写方式挂载
- -L | --label:通过卷标的方式实现设备挂载
[root@byte-edu-lab2 ~]# blkid /dev/sdb2
/dev/sdb2: LABEL="Newdata2" UUID="adc86f37-bc14-4806-a44f-95ec0d465a1c" TYPE="xfs"
[root@byte-edu-lab2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.2G 16G 7% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.7M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 3.9G 16M 3.6G 1% /DATA/DATA1
[root@byte-edu-lab2 ~]# mount -L Newdata2 /DATA/DATA2/
[root@byte-edu-lab2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.2G 16G 7% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.7M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 3.9G 16M 3.6G 1% /DATA/DATA1
/dev/sdb2 2.0G 33M 2.0G 2% /DATA/DATA2
- -U | --uuid:通过UUID的识别信息完成设备挂载
- -o | --options:可选参数,常见可选参数有:
- remount:重新挂载此设备
[root@byte-edu-lab2 ~]# mount -o remount,ro /dev/sdb1 /DATA/DATA1
[root@byte-edu-lab2 ~]# vim /DATA/DATA1/fstab
#hello
#
# /etc/fstab
# Created by anaconda on Thu Jan 20 10:56:40 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=f814a007-4958-4fe3-b22a-57a127b72f27 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
~
~
"/DATA/DATA1/fstab" [readonly] 11L, 471C 1,1 All
- ro:以只读方式挂载此设备
- rw:以读写方式挂载此设备
- async:文件系统的所有I/O操作以异步方式完成
- sync:文件系统的所有I/O操作以同步方式完成
- atime:当文件或目录被访问时,更新inode中时间戳信息
- noatime:当文件或目录被访问时,不更新inode中时间戳信息
- auto:当使用 mount -a 选项时,自动挂载此设备
- noauto:当使用 mount -a 选项时,不挂载此设备,此设备只能通过 mount 显示指定设备名称完成挂载
- dev:此文件系统上允许创建字符设备或块设备
- nodev:此文件系统上不允许创建字符设备或块设备
- exec:此设备上允许执行二进制程序
- noexec:此设备上不允许执行二进制程序
- user:此设备允许普通用户执行挂载
- nouser:此设备不允许普通用户执行挂载 mount 操作
- suid:此设备上允许对文件或目录设定 suid 或 sgid 特殊权限
- nosuid:此设备上不允许对文件或目录设定 suid 或 sgid 特殊权限
26. umount:卸载文件系统
常用参数:
- -a:卸载所有在 /etc/mtab 中的文件系统条目(注意在umount 2.7版本之后是不会卸载/proc或/sys下伪文件系统的,CenOS7上umount版本为2.23),要慎用!
- -n | --no-mtab:卸载时,不写入到 /etc/mtab 文件
- -l | --lazy:慵懒模式,这个参数非常有用,有时因为资源被占用或某些错误原因导致设备无法卸载,可使用 -l 参数,该参数会立即将被占用的资源复制一份交给程序(相当于在同目录下创建一个相同名字的文件),然后释放之前的文件句柄,这样因为该设备上的资源不再被占用,所以可以直接卸载该设备
umount命令常用用法是什么参数都不加,直接后面指定设备文件
27. 后台执行命令
让命令在后台运行,即使关闭终端窗口也不会中断程序的执行:前面加nohup
(表示no hang up,使得即使关闭终端窗口也不会中断程序的执行)、后面加&
(表示将命令放到后台执行,允许用户在当前终端中执行其他命令,而不用等待这条命令执行结束)
默认情况下,nohup
会将输出(包括标准输出和标准错误输出)写到nohup.out
文件中
若要自定义输出文件,如下:
nohup python train.py > output.log 2>&1 &