Linux基础命令总结(CentOS6.9, CentOS7.3) - 课 2017-07-1-14

Linux基础命令学习总结,随着学习的前进,将不断完善。网友们,有错误之处,请给我留言改正喔,谢谢!

基础操作

clear hostname tty who whoami w whatis which whereis hash enable alias unalias date clock hwclock cal ldd uname timedatectl screen script chvt man


文件、目录、磁盘、文件系统

cd pwd ls cat tac nl head tail less more hexdump od cp mv rm mkdir rmdir dd gedit nano file type iconv


用户和组

id getent


BASHELL 特性

echo history hash history


网络属性

ifconfig ping rz sz


系统启动,关机

exit logout init quit reboot shutdown runlevel halt poweroff


进程

free lsblk lscpu


程序包管理

rpm . source



clear

clear the terminal screen 清空屏幕内容

hostname

Display the hostname 显示主机名
* hostname [-s|–short]
-s | –short Display the shourt host name, This is the hostname cut at the firs dot. 显示短主机名,取第一个点号之前的字符串

[centos6@root ~]# hostname
centos6.zhubiao.science
# -s 取第一个点号之前的字符串作为短主机名
[centos6@root ~]# hostname -s 
centos6

tty

print the file name of the terminal connected to standard input 显示当前工作终端下的终端的名字
* 终端分为:
* 物理终端
物理控制台:表示为 /dev/console, Linux单用户模式下显示为物理终端
* 虚拟终端
系统自带6个虚拟终端,表示为/dev/tty#, #为1-6
* 图形终端
* 伪终端
图形界面打开的命令行接口,通过ssh或telnet协议打开的命令行界面均为伪终端,表现为/dev/pts/#

# 将运行级别切换为单用户模式后,使用的将是物理终端,如下所示,当前运行级别为3的多用户模式,将其切换为1后查看终端。
[root@zb01 ~]# tty
/dev/tty1
[root@zb01 ~]# runlevel #查看运行级别
S 3
[root@zb01 ~]# init 1
...
[root@zb01 /]# runlevel
1 S
[root@zb01 /]# tty
/dev/console

who

Who is logged on 显示当前登录的用户
* who [options]
-b #系统登录的时间
-r #当前运行级别

[centos7@root dir]# who
root     tty1         2017-07-15 16:20
root     pts/0        2017-07-15 07:24 (gateway)
[centos7@root dir]# who -b
         system boot  2017-07-14 20:54
[centos7@root dir]# who -r
         run-level 3  2017-07-14 20:54                   last=5

whoami

显示当前登录的用户名
* who

[centos7@root dir]# whoami
root

w

Show who is logged on and what they are doing. 显示当前登录的用户和正在执行的命令
* w

[centos7@root dir]# w 
 17:08:16 up 12:09,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      16:20   47:20   0.04s  0.04s -bash
root     pts/0    gateway          07:24    0.00s  3.05s  0.01s w

whatis

查找外部命令的man手册帮助文档所在的章节
* whatis command #等同于man -f

[centos7@root ~]# whatis ls
ls (1)               - list directory contents
ls (1p)              - list directory contents

[centos7@root ~]# whatis cp
cp (1)               - copy files and directories
cp (1p)              - copy files

[centos7@root ~]# whatis ifconfig
ifconfig (8)         - configure a network interface

[centos7@root ~]# man -f ls
ls (1)               - list directory contents
ls (1p)              - list directory contents

[centos7@root ~]# man -f cp
cp (1)               - copy files and directories
cp (1p)              - copy files

which

按照PATH路径查找命令后显示其完整路径
* which [options] [command]
-a 显示命令所有PATH路径
–skip-alias 不显示别名

[centos6@root test]# which --skip-alias ls
/bin/ls
[centos6@root test]# which -a ls
alias ls='ls --color=auto'
    /bin/ls

whereis

查找命令所在路径,源码路径,帮助手册路径
whereis [options] [command]

[centos6@root test]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

[centos6@root test]# whereis -b mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql

[centos6@root test]# whereis -m mysql
mysql: /usr/share/man/man1/mysql.1.gz

cd

Change the shell working dirctory 切换工作目录
* cd [-P] DIR
-P 若DIR为符号链接目录,cd DIR切换到实际的工作目录,而不是符号链接目录
cd - #切换到上一个工作目录
cd ~ #切换到当前用户的家目录
cd ~USER #切换到USER用户的家目录,只有root有权限切换到任意用户的家目录
cd .. #切换到上一级目录

[centos6@root test]# pwd
/root/test
[centos6@root test]# cd ~  
[centos6@root ~]# pwd
/root
[centos6@root ~]# cd -
/root/test
[centos6@root test]# pwd
/root/test
[centos6@root test]# cd ~zb10
[centos6@root zb10]# pwd
/home/zb10
[centos6@root zb10]# cd ..
[centos6@root home]# pwd
/home
[centos6@root home]# 
# -P 切换到实际路径的工作目录下
[centos6@root test]# ll dir
lrwxrwxrwx. 1 root root 6 Jul 15 17:16 dir -> a/b/c/
[centos6@root test]# cd dir
[centos6@root dir]# pwd
/root/test/dir
[centos6@root dir]# cd -
/root/test
[centos6@root test]# cd -P dir
[centos6@root c]# pwd
/root/test/a/b/c

pwd

print the name of the current working dirctory 显示当前工作目录
* pwd [-P]
-P - 若当前工作目录为符号链接路径,加-P选项显示实际路径

[centos7@root test]# pwd
/root/test  #显示当前工作目录
# -P 显示出实际路径而不是符号链接的路径
[centos7@root test]# mkdir -p a/b/c 
[centos7@root test]# ln -s a/b/c dir  
[centos7@root test]# ll dir
lrwxrwxrwx. 1 root root 5 Jul 15 15:33 dir -> a/b/c
[centos7@root test]# cd dir 
[centos7@root dir]# pwd  
/root/test/dir
[centos7@root dir]# pwd -P  #加了-P选项,显示实际路径
/root/test/a/b/c

ls

List dirctory contents 列出当前或指定目录(或所有子目录)下的内容
* ls [options] [dirs]
- l 列出详细内容
-a | –all 列出所有内容包括. ..
-A 列出所有内容,不包括. ..
-d 仅列出指定的目录
–full-time 列出完整的修改时间格式

[centos6@root test]# ls
a dir
[centos6@root test]# ls -l
total 4
drwxr-xr-x. 3 root root 4096 Jul 15 17:15 a
lrwxrwxrwx. 1 root root 6 Jul 15 17:16 dir -> a/b/c/
[centos6@root test]# ll
total 4
drwxr-xr-x. 3 root root 4096 Jul 15 17:15 a
lrwxrwxrwx. 1 root root 6 Jul 15 17:16 dir -> a/b/c/
[centos6@root test]# ls -a
. .. a dir
[centos6@root test]# ls -A
a dir
[centos6@root test]# ls /root/test/
a dir
[centos6@root test]# ls --full-time /root/test/
total 4
drwxr-xr-x. 3 root root 4096 2017-07-15 17:15:41.550009093 +0800 a
lrwxrwxrwx. 1 root root 6 2017-07-15 17:16:44.490009154 +0800 dir -> a/b/c/

cat

Concatenate files and print on the standard output # 读取一个或多个文件(也可以从键盘输入) 并输出
* cat [options] [files]
-n # 在每行(包括空行)前面加上行号
-b # 在非空行前面加上行号

[centos7@root dir]# cat /etc/resolv.conf 
# Generated by NetworkManager
search magedu.com zhubiao.science

nameserver 192.168.17.1

nameserver 172.18.0.1
# -n 加入行号,包括空行
[centos7@root dir]# cat -n /etc/resolv.conf 
     1  # Generated by NetworkManager
     2  search magedu.com zhubiao.science
     3  
     4  nameserver 192.168.17.1
     5  
     6  nameserver 172.18.0.1
# -b非空行前加入行号
[centos7@root dir]# cat -b /etc/resolv.conf 
     1  # Generated by NetworkManager
     2  search magedu.com zhubiao.science

     3  nameserver 192.168.17.1

     4  nameserver 172.18.0.1

tac

Concatenate and print files #倒叙显示文件内容,即从文件尾页到首页的顺序显示内容
* tac

# 如正常顺序显示/etc/resolv.conf 如下:
[centos7@root dir]# cat /etc/resolv.conf 
# Generated by NetworkManager
search magedu.com zhubiao.science

nameserver 192.168.17.1

nameserver 172.18.0.1
#使用tac 将倒序输出文件内容,如下:
[centos7@root dir]# tac /etc/resolv.conf 
nameserver 172.18.0.1

nameserver 192.168.17.1

search magedu.com zhubiao.science
# Generated by NetworkManager

nl

读取文件内容后输出左侧加入行号的内容
* nl [options] [files]
* -b #与选项a, t一起使用,控制行号的输出
a #-b a 所有行都有行号
t #-b t 空行不输出行号
n #-b n 所有行均不输出行号
* -n #与ln, rn, rz一起使用控制行号位置及补0的输出
ln #-n ln 行号在所在字段的左侧
rn #-n rn 行号在所在字段的右侧
rz #-n rz 行号在所在字段的右侧,左侧补0

[centos7@root dir]# nl /etc/resolv.conf 
     1  # Generated by NetworkManager
     2  search magedu.com zhubiao.science

     3  nameserver 192.168.17.1

     4  nameserver 172.18.0.1
[centos7@root dir]# nl -b a /etc/resolv.conf 
     1  # Generated by NetworkManager
     2  search magedu.com zhubiao.science
     3  
     4  nameserver 192.168.17.1
     5  
     6  nameserver 172.18.0.1
[centos7@root dir]# nl -b t /etc/resolv.conf 
     1  # Generated by NetworkManager
     2  search magedu.com zhubiao.science

     3  nameserver 192.168.17.1

     4  nameserver 172.18.0.1
[centos7@root dir]# nl -b n /etc/resolv.conf 
       # Generated by NetworkManager
       search magedu.com zhubiao.science

       nameserver 192.168.17.1

       nameserver 172.18.0.1
[centos7@root dir]# nl -n ln /etc/resolv.conf 
1       # Generated by NetworkManager
2       search magedu.com zhubiao.science

3       nameserver 192.168.17.1

4       nameserver 172.18.0.1
[centos7@root dir]# nl -n rn /etc/resolv.conf 
     1  # Generated by NetworkManager
     2  search magedu.com zhubiao.science

     3  nameserver 192.168.17.1

     4  nameserver 172.18.0.1
[centos7@root dir]# nl -n rz /etc/resolv.conf 
000001  # Generated by NetworkManager
000002  search magedu.com zhubiao.science

000003  nameserver 192.168.17.1

000004  nameserver 172.18.0.1
[centos7@root dir]# nl -n rz -w2 /etc/resolv.conf 
01  # Generated by NetworkManager
02  search magedu.com zhubiao.science

03  nameserver 192.168.17.1

04  nameserver 172.18.0.1

Out put the first part of files 读取文件的前几行(默认为10行,也可指定)并输出
* head [options] [files]
-n NUM #输出前NUM行
-v 行首打印所读取文件内容的完整路径名
-c NUM #输出前NUM个字符

[centos7@root dir]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
# 行首输出文件路径名
[centos7@root dir]# head -v /etc/passwd
==> /etc/passwd <==
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
# 指定输出前3行
[centos7@root dir]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
# 输出前4个字符
[centos7@root dir]# head -c 4 /etc/passwd
root[centos7@root dir]#

tail

Out put the last part of files
* tail [options] [fies]
-n NUM #输出文件后NUM行
-v #输出首行显示文件完整路径内容
-c NUM #输出文件最后NUM个字符

[centos7@root dir]# tail /etc/passwd
setroubleshoot:x:991:988::/var/lib/setroubleshoot:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:990:985::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
zb20:x:1000:1000:zb20:/home/zb20:/bin/bash
[centos7@root dir]# tail -n 3 /etc/passwd
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
zb20:x:1000:1000:zb20:/home/zb20:/bin/bash
[centos7@root dir]# tail -v -n 3 /etc/passwd
==> /etc/passwd <==
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
zb20:x:1000:1000:zb20:/home/zb20:/bin/bash
# 输出文件末尾9个字符
[centos7@root dir]# tail -c 9 /etc/passwd
bin/bash

less

非常好用的一个浏览文件内容的工具,可以通过快捷键向前/后浏览文件内容,可以通过关键字搜索文件中的字符串。对文件的前后翻屏功能类似VIM, MAN手册的浏览就是通过less命令实现的。
* less FILES
* 翻屏快捷键
Ctrl + F #向文件首部翻一屏
Ctrl + B #向文件尾部翻一屏
Ctrl + D #向文件首部翻半屏
Ctrl + U #向文件尾部翻半屏
j #向文件尾部滚动一行
k #向文件首部滚动一行
* 搜索
* / [patern]
n #向前搜索下一个匹配的模式或字符串
N #向后搜索上一个匹配的模式或字符串
* ?[patern]
n #向后搜索上一个匹配的模式或字符串
N #向前搜索下一个匹配的模式或字符串

more

more功能和less类似,但没有less功能多,比如不可以向文件首部翻屏,只能向尾部翻屏,所以建议使用less

hexdump

通常用来查看二进制文件,但不限于只能看二进制文件。
* hexdump [option] [files]
-o #八进制显示
-d #十进制显示
-x #十六进制显示
-C #十六进制和ASCII字符显示

以下实例通过hexdump读取cat命令的二进制文件,因内容过多,此处使用head -n 3 来显示前三行内容

[centos7@root dir]# hexdump /bin/cat | head -n 3
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000010 0002 003e 0001 0000 2644 0040 0000 0000
0000020 0040 0000 0000 0000 cbc0 0000 0000 0000
[centos7@root dir]# hexdump -o /bin/cat | head -n 3
0000000  042577  043114  000402  000001  000000  000000  000000  000000
0000010  000002  000076  000001  000000  023104  000100  000000  000000
0000020  000100  000000  000000  000000  145700  000000  000000  000000
[centos7@root dir]# hexdump -d /bin/cat | head -n 3
0000000   17791   17996   00258   00001   00000   00000   00000   00000
0000010   00002   00062   00001   00000   09796   00064   00000   00000
0000020   00064   00000   00000   00000   52160   00000   00000   00000
[centos7@root dir]# hexdump -x /bin/cat | head -n 3
0000000    457f    464c    0102    0001    0000    0000    0000    0000
0000010    0002    003e    0001    0000    2644    0040    0000    0000
0000020    0040    0000    0000    0000    cbc0    0000    0000    0000
[centos7@root dir]# hexdump -C /bin/cat | head -n 3
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 3e 00 01 00 00 00  44 26 40 00 00 00 00 00  |..>.....D&@.....|
00000020  40 00 00 00 00 00 00 00  c0 cb 00 00 00 00 00 00  |@...............|

od

读取二进制文件
* od [option] [files]
-o #八进制显示
-d #十进制显示
-x #十六进制显示
以下实例通过od读取cat命令的二进制文件,因内容过多,此处使用head -n 2 来显示前三行内容

[centos6@root test]# od -o /bin/cat | head -n 2
0000000 042577 043114 000402 000001 000000 000000 000000 000000
0000020 000002 000076 000001 000000 014120 000100 000000 000000
[centos6@root test]# od -d /bin/cat | head -n 2
0000000 17791 17996   258     1     0     0     0     0
0000020     2    62     1     0  6224    64     0     0
[centos6@root test]# od -x /bin/cat | head -n 2
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000020 0002 003e 0001 0000 1850 0040 0000 0000

cp

  • cp [options] [Source_File] [Destination_File]
    -p #same as –preserve=mode,ownership,timestamps
    -u #当原文件更新时才覆盖目标文件
    -R | r #若原文件有子目录时,连同目录一起复制
    -d #当原文件内容包含符号链接时,选项复制符号链接,不加-d选项是复制符号链接指向的原文件内容
    -a same as -dr
    -i | –interactive #prompt before overwrite 若目标文件存在普通用户复制时,提示是否覆盖,建议使用cp时加-i选项
    -f | –force
-p 复制时目标文件保留原文件的属性(时间戳,属主属组,文件权限)
[centos6@zb10 ~]$ ll 1.txt
-rw-rw-r--. 1 zb10 zb10 0 Jul 15 22:25 1.txt
[centos6@root zb10]# cp 1.txt 2.txt
[centos6@root zb10]# cp -p 1.txt 3.txt
[centos6@root zb10]# ll [[:digit:]].txt
-rw-rw-r--. 1 zb10 zb10 0 Jul 15 22:25 1.txt #原文件
-rw-r--r--. 1 root root 0 Jul 15 22:25 2.txt  #未加-p选项属性将变化
-rw-rw-r--. 1 zb10 zb10 0 Jul 15 22:25 3.txt  #加-p选项的目标文件属性不变
# -u 只有当原文件比目标文件修改时间更新才覆盖目标文件
# 如下file2 比file1更新,-u 选项时将file1复制到file2时不会覆盖file2, 而反之则覆盖file1的内容
[centos6@zb10 ~]$ ll file*
-rw-rw-r--. 1 zb10 zb10 15 Jul 15 22:06 file1
-rw-rw-r--. 1 zb10 zb10 15 Jul 15 22:07 file2 
[centos6@zb10 ~]$ head -v file*
==> file1 <==
file1 Contents

==> file2 <==
file2 Contents
[centos6@zb10 ~]$ cp -u file1 file2
[centos6@zb10 ~]$ head -v file*
==> file1 <==
file1 Contents

==> file2 <==
file2 Contents
[centos6@zb10 ~]$ cp -u file2 file1
[centos6@zb10 ~]$ head -v file*
==> file1 <==
file2 Contents

==> file2 <==
file2 Contents
# -d 当原文件内容包含符号链接时,选项复制符号链接,不加-d选项是复制符号链接指向的原文件内容
[centos6@root test]# tree
.
├── dir1
│   ├── a
│   │   └── file
│   └── file.ln -> a/file
└── dir2

3 directories, 2 files
[centos6@root test]# cp dir1/file.ln dir2/
[centos6@root test]# tree
.
├── dir1
│   ├── a
│   │   └── file
│   └── file.ln -> a/file
└── dir2
    └── file.ln

3 directories, 3 files
[centos6@root test]# cp -d dir1/file.ln dir2/
cp: overwrite `dir2/file.ln'? y
[centos6@root test]# tree
.
├── dir1
│   ├── a
│   │   └── file
│   └── file.ln -> a/file
└── dir2
    └── file.ln -> a/file

3 directories, 3 files

mv

Move or rename files 移动或重命名文件
* mv [options] [source] [destination]
-f | –force 目标文件存在时,直接覆盖
-i | –interactive 提示用户是否覆盖目标文件
-u | –update 只有当原文件更新时,才执行移动

# 如下所示当前目录下有两个目录,dir1,dir2,将dir2 移动到dir1下
[centos6@root test]# tree
.
├── dir1
└── dir2
    └── a
        └── file1

3 directories, 1 file
[centos6@root test]# mv dir2 dir1
[centos6@root test]# tree
.
└── dir1
    └── dir2
        └── a
            └── file1

3 directories, 1 file
[centos6@root test]# 
# 修改dir1目录名为dir3
[centos6@root test]# mv dir1 ./dir3
[centos6@root test]# ll
total 4
drwxr-xr-x. 3 root root 4096 Jul 16 09:41 dir3

rm

Remove files or directories 删除文件或目录(子目录)
* rm [options] [files]
-f | –force #删除时,文件或目录不存在时不提示
-r | -R | –recursive #删除目录及其下的子目录或文件
-i #删除每一个文件、目录时均提示是否删除

[centos6@root test]# rm dir3/dir2/a/file1 
rm: remove regular empty file `dir3/dir2/a/file1'? y
[centos6@root test]# tree
.
└── dir3
    └── dir2
        └── a

3 directories, 0 files
[centos6@root test]# rm -rf dir3 #彻底删除dir3及其目录下的所有子目录、文件

mkdir

Make Directories 创建目录

  • mkdir [options] [directories]
    -p | –parents 创建多级目录时,其父目录不存在则先创建其父目录
    -m | –mode=MODE 创建目录时指定目录的权限
    -v 显示创建目录的过程
#创建目录dir1
[centos6@root test]# mkdir -v dir1
mkdir: created directory `dir1'
[centos6@root test]# ll -d dir1
drwxr-xr-x. 2 root root 4096 Jul 16 10:06 dir1

#-m 创建目录dir2,并指定目录权限为rw-rw-rw-(666)
[centos6@root test]# mkdir -m 666 dir2
[centos6@root test]# ll -d dir1 dir2
drwxr-xr-x. 2 root root 4096 Jul 16 10:06 dir1
drw-rw-rw-. 2 root root 4096 Jul 16 10:07 dir2

#-p 创建多级目录
[centos6@root test]# mkdir -pv dir3/a/b/c
mkdir: created directory `dir3'
mkdir: created directory `dir3/a'
mkdir: created directory `dir3/a/b'
mkdir: created directory `dir3/a/b/c'
[centos6@root test]# ll -d dir3/a/b/c
drwxr-xr-x. 2 root root 4096 Jul 16 10:08 dir3/a/b/c

rmdir

remove empty directories 删除空目录
* rmdir
-p | –parents #Remove empty directories and its ancestors 删除其空目录及其父辈空目录

#如下所示,除了file是文件,其它均为空文件夹,下面练习是使用rmdir
[centos6@root test]# tree 
.
├── dir1
├── dir2
│   └── file
└── dir3
    └── a
        └── b

5 directories, 1 file

#删除空目录dir1
[centos6@root test]# rmdir dir1
[centos6@root test]# tree
.
├── dir2
│   └── file
└── dir3
    └── a
        └── b
4 directories, 1 file

#若不是空目录,比如文件file无法使用rmdir删除
[centos6@root test]# rmdir dir2/file 
rmdir: failed to remove `dir2/file': Not a directory

# -p 连同其父空目录一起删除
[centos6@root test]# rmdir dir3/a/b/ #不适用-p仅删除其自身空目录
[centos6@root test]# tree
.
├── dir2
│   └── file
└── dir3
    └── a

3 directories, 1 file
[centos6@root test]# rmdir -p dir3/a/  #使用-p连同其父空目录一起删除
[centos6@root test]# tree
.
└── dir2
    └── file

1 directory, 1 file

id

Copy and Convert files 复制或转换文件格式
dd 功能很强大,可以直接读取磁盘扇区的内容,在此列举一个dd的复制工具
* dd if=input_file of=output_file bs=block_size count=number
if #Read from file instead of stdin 从文件读入(包括装置,Linux中一切皆文件喔),若无if将从标准输入(从键盘输入)
of #Write to file instead of stdout 写入到文件,无此项将输出到屏幕
bs #读取和写入的block大小,默认为512bytes
* ibs #读取的block大小
* obs #写入的block大小

count #bs的数量

#将/bin/cat文件备份到当前目录下
  [centos7@root ~]# dd if=/bin/cat of=./cat.bk bs=512
105+1 records in
105+1 records out
54080 bytes (54 kB) copied, 0.000900543 s, 60.1 MB/s
[centos7@root ~]# ll -h cat.bk 
-rw-r--r--. 1 root root 53K Jul 16 11:06 cat.bk

gedit

gdit是图形终端的一个文本编辑工具,通过下图方式打开
Linux基础命令总结(CentOS6.9, CentOS7.3) - 课 2017-07-1-14_第1张图片
gedit也可以通过图形终端上的命令行接口打开[centos6@root Desktop]# gedit

nano

nano #命令行下的文本编辑工具,命令行下面有更强大的文本编辑工具vim,建议使用vim

file

file Determine file types |判断文件类型

#查看cat命令文件类型
[centos7@root ~]# file /bin/cat
/bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=fac04659ab9a437b5384c09f4731023373821a39, stripped

#查看/etc/passwd文件类型
[centos7@root ~]# file /etc/passwd
/etc/passwd: ASCII text

#查看/etc/类型
[centos7@root ~]# file /etc
/etc: directory

type

type 判断命令类型
* type [options] command
-a 显示所有包含该命令的位置
* 命令类型
* builtin Shell内建命令
* 外部命令,不包含在shell内建命令里的命令
* alias | 别名
* keword | 关键字
* function | 函数

#echo即有内建命令,也有外部命令,为了演示type,我们再给echo定义个别名
[centos6@root test]# alias echo
alias echo='echo -e'
#不加任何选项,使用type查询,若有别名,只能查到别名
[centos6@root test]# type echo
echo is aliased to `echo -e'
# -a 选项
[centos6@root test]# type -a echo
echo is aliased to `echo -e'
echo is a shell builtin
echo is /bin/echo

id

Print user and group information for specified the USERNAME or the currentuser
* id [options] [users]
-g 用户所在有效组
-G 用户所在的所有组

# 不指定user将显示当前用户的信息
[centos7@root ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

# 指定用户
[centos7@root ~]# id user1
uid=1001(user1) gid=1003(user1) groups=1003(user1),1001(group1),1002(group2)

[centos7@root ~]# id -g user1
1003

[centos7@root ~]# id -G user1
1003 1001 1002

getent

Get entries from name server switch 从定义的数据库里获得记录
数据库定义在/etc/nsswitch.conf 文件中
* getent database [entries]

# 从/etc/passwd数据库内获取包含root用户的条目
[centos7@root ~]# getent passwd root
root:x:0:0:root:/root:/bin/bash
# 从/etc/group 数据库内获取包含zb20的条目
[centos7@root ~]# getent group zb20
zb20:x:1000:zb20

iconv

Convert text from one character encoding to another | 转换字符编码
* iconv -f from_encoding -t to_encoding input_file -o output_file
-f 原文件编码
-t 目标文件编码
-o 输出文件
-l 列出iconv能转换的编码

# windows系统上保存默认文本编码格式,在linux系统中无法打开,就可以通过iconv转换成linux系统识别的编码
[centos7@root ~]# cat source.txt 
βo³¤³ȍ��գ¬°ڊS¢ћ°ڊC
[centos7@root ~]# iconv -f gb2312 -t UTF-8 source.txt -o destination.txt      
[centos7@root ~]# cat destination.txt 
万里长城万里空,百世英雄百世梦

echo

打印shell变量,指定的字符串
* echo [options] [string]
-n #输出字符后末尾不换行,默认换行
-e #输出字符中的转义字符生效
* \t #TAB
* \n #newline

#显示shell变量的值
[centos6@root test]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[centos6@root test]# echo $PS1
\[\][\h@\u \W]\$ \[\]
[centos6@root test]# a=50
[centos6@root test]# echo $a
50

# -n 末尾不换行
[centos6@root test]# echo "hello everyone"
hello everyone
[centos6@root test]# echo -n "hello everyone"
hello everyone[centos6@root test]# 

# -e 转义字符生效
[centos6@root test]# echo "hello\t welcome to QuJing\nI believe..."
hello\t welcome to QuJing\nI believe...
[centos6@root test]# echo -e "hello\t welcome to QuJing\nI believe..."
hello    welcome to QuJing
I believe...

#输出连续或不连续字符
[centos7@root ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[centos7@root ~]# echo {A..z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [  ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z
[centos7@root ~]# echo {1..9}
1 2 3 4 5 6 7 8 9
[centos7@root ~]# echo {9..1}
9 8 7 6 5 4 3 2 1
[centos7@root ~]# echo {1..10..2}
1 3 5 7 9
[centos7@root ~]# echo {001..10..2}
001 003 005 007 009
[centos7@root ~]# echo {1,7,q,b}
1 7 q b

history

读取历史命令记录
。。。更多功能待续

[centos7@root ~]# history | head -n 5
    1  clear
    2  cat /etc/gdm/custom.conf 
    3  vim /etc/gdm/custom.conf
    4  reboot
    5  shutdown -h now

ifconfig

配置或显示网卡参数

#显示eth1网卡参数
[centos6@root test]# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:0C:29:E3:FB:0C  
          inet addr:172.18.253.214  Bcast:172.18.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fee3:fb0c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:440093 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3225 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:43780248 (41.7 MiB)  TX bytes:241256 (235.6 KiB)

# 关闭eth1网卡
[centos6@root test]# ifconfig eth1 down
[centos6@root test]# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:0C:29:E3:FB:0C  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:440107 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3227 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:43781936 (41.7 MiB)  TX bytes:241410 (235.7 KiB)

# 启动eth1网卡
[centos6@root test]# ifconfig eth1 up

ping

测试网络是否连通
* ping [options] [ip/name]
-c COUNT 发送ECHO_REQUEST 包的数量

[centos6@root test]# ping -c 3 192.168.17.20
PING 192.168.17.20 (192.168.17.20) 56(84) bytes of data.
64 bytes from 192.168.17.20: icmp_seq=1 ttl=64 time=3.66 ms
64 bytes from 192.168.17.20: icmp_seq=2 ttl=64 time=0.508 ms
64 bytes from 192.168.17.20: icmp_seq=3 ttl=64 time=0.848 ms

--- 192.168.17.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.508/1.673/3.664/1.414 ms

exit quit logout

quit, exit, logout 退出登录

init

切换运行级别
* init NUM #NUM为:1,2,3,4,5,6
CentOS6 上在/etc/inittabe中定义了各运行级别
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this) 关机
# 1 - Single user mode 单用户模式
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 无网络多用户模式(命令行界面)
# 3 - Full multiuser mode 多用户模式(命令行界面)
# 4 - unused 未使用,保留
# 5 - X11 图形界面
# 6 - reboot (Do NOT set initdefault to this) 重启

runlevel

查看当前系统运行级别

# 可以通过runlevel 或 who -r 查看当前系统运行级别
[centos6@root test]# runlevel
[centos6@root test]# who -r
         run-level 5  2017-07-15 06:26
N 5

shutdown

最常用的关机或重启命令
* shutdown [options] [time] [string]
-r reboot after shutdown 重启
-h 关机
-c 取消关机或重启

 # 立即关机
shutdown -h now

# 过5分钟后关机
[centos6@root test]# shutdown -h 5 &
[1] 10237
[centos6@root test]# 
Broadcast message from [email protected]
    (/dev/pts/0) at 15:51 ...

The system is going down for halt in 5 minutes!

#取消关机
[centos6@root test]# shutdown -c
shutdown: Shutdown cancelled
[1]+  Done                    shutdown -h 5

# 5分钟后重启
[centos6@root test]# shutdown -r 5

Broadcast message from [email protected]
    (/dev/pts/0) at 15:53 ...

The system is going down for reboot in 5 minutes!

halt reboot pwoeroff

  • reboot 重启
  • halt, poweroff 关机

free

显示当前内存使用情况
* free [options]
-h #human readable output 自动确定最佳单位显示内存使用量
-b, -k, -m, -g 以bytes, KB, MB, GB为单位显示内存使用量
-t 最后一行汇总RAM+SWAP内存的使用总量
-l

[centos7@root ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           976M        202M        252M         13M        522M        539M
Swap:          2.0G          0B        2.0G

[centos7@root ~]# free -th
              total        used        free      shared  buff/cache   available
Mem:           976M        202M        251M         13M        522M        539M
Swap:          2.0G          0B        2.0G
Total:         3.0G        202M        2.2G

[centos7@root ~]# free -lh
              total        used        free      shared  buff/cache   available
Mem:           976M        202M        251M         13M        522M        539M
Low:           976M        724M        251M
High:            0B          0B          0B
Swap:          2.0G          0B        2.0G

# 也可通过查看内核进程数据来查看内存使用情况
[centos7@root ~]# cat /proc/meminfo 
MemTotal:         999964 kB
MemFree:          257648 kB
MemAvailable:     551900 kB
Buffers:            1804 kB
Cached:           390520 kB
SwapCached:            0 kB
Active:           266780 kB
Inactive:         224516 kB
Active(anon):      94740 kB
Inactive(anon):    17896 kB
Active(file):     172040 kB
Inactive(file):   206620 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         99036 kB
Mapped:            35392 kB
Shmem:             13664 kB
Slab:             142844 kB
SReclaimable:      86632 kB
SUnreclaim:        56212 kB
KernelStack:        4832 kB
PageTables:         7260 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2597128 kB
Committed_AS:     634440 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      181824 kB
VmallocChunk:   34359310332 kB
HardwareCorrupted:     0 kB
AnonHugePages:      8192 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       98176 kB
DirectMap2M:      950272 kB

lsblk

列出块状设备大小及挂载点

[centos7@root ~]# 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   50G  0 part /
├─sda3   8:3    0   50G  0 part /app
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
sr0     11:0    1  7.7G  0 rom  /run/media/root/CentOS 7 x86_64
[centos7@root ~]# lsblk -d
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0  200G  0 disk 
sr0   11:0    1  7.7G  0 rom  /run/media/root/CentOS 7 x86_64

lscpu

显示CPU信息

[centos7@root ~]# 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:                 58
Model name:            Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
Stepping:              9
CPU MHz:               2493.686
BogoMIPS:              4988.79
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0,1

#通过内核进程文件/proc/cpuinfo查看cpu信息
[centos7@root ~]# cat /proc/cpuinfo 
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 58
model name  : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
stepping    : 9
microcode   : 0x12
cpu MHz     : 2493.686
cache size  : 3072 KB
physical id : 0
siblings    : 1
core id     : 0
cpu cores   : 1
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase tsc_adjust smep
bogomips    : 4988.79
clflush size    : 64
cache_alignment : 64
address sizes   : 42 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 58
model name  : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
stepping    : 9
microcode   : 0x12
cpu MHz     : 2493.686
cache size  : 3072 KB
physical id : 2
siblings    : 1
core id     : 0
cpu cores   : 1
apicid      : 2
initial apicid  : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase tsc_adjust smep
bogomips    : 4988.79
clflush size    : 64
cache_alignment : 64
address sizes   : 42 bits physical, 48 bits virtual
power management:

. source

执行shell脚本

#在 /etc/profile.d/env.sh中设置命令提示符,然后使用. DIR或soruce DIR执行脚本,后命令提示符将生效
[~] cat /etc/profile.d/env.sh
export PS1="[\h@\u \W]\\$ "

[~] . /etc/profile.d/env.sh
[centos6@root ~]# 

enable

Enable and disable shell builtins | 启用或停用SHELL内建命令

  • enable [options] [command]
    -a 列出所有内建命令,不管是否被禁用
    -n command 停用命令command
#停用cd命令
[centos6@root ~]# enable -n cd 
[centos6@root ~]# cd
-bash: cd: command not found

[centos6@root ~]# enable -a | grep cd
enable -n cd

#启用cd命令
[centos6@root ~]# enable cd
[centos6@root ~]# cd ..
[centos6@root /]# cd -
/root

hash

缓存已执行的外部命令的路径,以便下次使用节省搜索命令的时间

  • hash [options] [command]
    -d command 从hash缓存中删除command命令记录
    -r 清空hash 缓存
    -l 列出路径及命令名
    -p name #在hash缓存中给路径起别名
# 查看已缓存的外部命令
[centos6@root ~]# hash 
hits    command
   1    /sbin/ifconfig
   1    /usr/bin/man
   1    /bin/ls
   8    /usr/bin/clear

# 列出缓存的路径及其命令名
[centos6@root ~]# hash -l
builtin hash -p /sbin/ifconfig ifconfig
builtin hash -p /usr/bin/man man
builtin hash -p /bin/ls ls
builtin hash -p /usr/bin/clear clear

#从hash缓存中删除命令man
[centos6@root ~]# hash -d man
[centos6@root ~]# hash -l
builtin hash -p /sbin/ifconfig ifconfig
builtin hash -p /bin/ls ls
builtin hash -p /usr/bin/clear clear

#起别名
[centos6@root ~]# hash -p /sbin/ifconfig ifcon
[centos6@root ~]# hash -l
builtin hash -p /sbin/ifconfig ifconfig
builtin hash -p /sbin/ifconfig ifcon
builtin hash -p /bin/ls ls
builtin hash -p /usr/bin/clear clear
[centos6@root ~]# ifcon eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:E3:FB:02  
          inet addr:192.168.17.10  Bcast:192.168.17.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fee3:fb02/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21356 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18035 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1995596 (1.9 MiB)  TX bytes:3239265 (3.0 MiB)

#清空hash缓存
[centos6@root ~]# hash -r
[centos6@root ~]# hash
hash: hash table empty

alias unalis

  • alias #Define or display aliases 定义别名
    alias name=”value”
  • unalias 取消别名
    unalias name
#查看以定义的别名
[centos6@root ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

#定义别名
[centos6@root ~]# alias grep="grep --color"
[centos6@root ~]# alias
alias cp='cp -i'
alias grep='grep --color'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

#在配置文件/etc/bashrc中定义别名,所有用户均生效
[centos6@root ~]# vim /etc/bashrc 
[centos6@root ~]# tail -n 3 /etc/bashrc
#Define alias
alias grep="grep --color"
[centos6@root ~]# . /etc/bashrc 

#在自己家目录配置文件~/.basrc中定义,只有当前用户生效
[centos6@root ~]# vim ~/.bashrc 
[centos6@root ~]# cat ~/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

date

Print or set system date or time 显示或设置系统时间

  • date [option] [+format]
    设定时间的两种方法

    • date [MMDDhhmm[[CC]YY][.ss]]
    • date -s “string

    -d “string

    • string:
      “1 year”
      “1 year ago”
      “3 years”
      “3 years ago”
      “1 day”
      “1 day ago”
      “3 days”
      “3 days ago”

    • format
      %Y year
      %m month
      %d day
      %H hour
      %M minute
      %S second
      %F fulldate same as %Y-%m-%d
      %T time,same as %H:%M:%S

#以不同的格式显示时间
[centos6@root ~]# date +%F
2017-07-17
[centos6@root ~]# date +%T
22:57:11
[centos6@root ~]# date "+%F %T"
2017-07-17 22:57:19
[centos6@root ~]# date +"%F %T"
2017-07-17 22:57:27
[centos6@root ~]# date "+%Y-%m-%d %H:%M:%S"
2017-07-17 22:57:55

#设定时间  [MMDDhhmm[[CC]YY][.ss]]
[centos6@root ~]# date 062012121990.33
Wed Jun 20 12:12:33 CDT 1990
[centos6@root ~]# date +"%F %T"
1990-06-20 12:12:48

#设定时间 date -s STRING
[centos6@root ~]# date -s "20170717 23:03:10"
Mon Jul 17 23:03:10 CST 2017
[centos6@root ~]# date +"%F %T"
2017-07-17 23:03:22

# 当前时间
[centos6@root ~]# date +"%F %T"
2017-07-17 23:09:11
#显示4年前的日期
[centos6@root ~]# date  -d "4 years ago" +"%F %T"
2013-07-17 23:09:32
#显示10天前的日期
[centos6@root ~]# date  -d "10 days ago" +"%F %T"
2017-07-07 23:09:52
#显示10天后的日期
[centos6@root ~]# date  -d "10 days" +"%F %T"
2017-07-27 23:10:01

clock hwclock

hwclock,clock功能相同,都是设定硬件时间
* hwclock [options]
* hwclock –set –date=”string” #按字符串描述的时间设定硬件时间
* hwclock –systohc #将系统时间更新到硬件时间
* hwclock –hctosys #将硬件时间更新到系统时间

# clock其实是hwclock的符号链接
[centos6@root ~]# ll /sbin/clock 
lrwxrwxrwx. 1 root root 7 Jul 15 01:17 /sbin/clock -> hwclock

[centos7@root ~]# hwclock
Mon 17 Jul 2017 11:20:50 PM CST  -0.663348 seconds

#设定硬件时间
[centos7@root ~]# hwclock --set --date="1990-06-20 10:10:10"
[centos7@root ~]# hwclock ; date
Wed 20 Jun 1990 10:10:24 AM CDT  -0.100626 seconds
Mon Jul 17 23:21:39 CST 2017

[centos7@root ~]# hwclock --systohc
[centos7@root ~]# hwclock ; date
Mon 17 Jul 2017 11:22:01 PM CST  -0.944138 seconds
Mon Jul 17 23:22:00 CST 2017
[centos7@root ~]# date -s "19900620" +%F
1990-06-20

[centos7@root ~]# hwclock --hctosys
[centos7@root ~]# hwclock ; date
Mon 17 Jul 2017 11:22:58 PM CST  -0.411873 seconds
Mon Jul 17 23:22:57 CST 2017

cal

Display a calendar | 显示日历
* cal [options] [[[day], month], year]
-1 显示一个月
-3 display prev/current/next month

[centos6@root ~]# cal
      July 2017     
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
[centos6@root ~]# cal 20 06 1990
      June 1990     
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

history

Display or manipulate the history list | 显示或操作命令历史
从登录开始所操作的命令历史若没有人为追加至命令历史文件中,则存在于内存中,当用户退出登录时自动追加至命令历史文件中
命令历史文件~/.bash_history, m
* 命令历史大小,显示受以下变量控制
这些变量要永久生效需将其写入配置文件中/etc/profile,~/.bash_profile
* HISTFILE #定义了命令历史文件的位置
* HISTSIZE #定义内存中命令历史记录的最大数量
* HISTFILESIZE #定义命令历史文件中存放记录的最大数量
* HISTCONTROL
* ignoredups #连续重复的命令只记录一条
* ignorespace #命令执行前有空白的,不记录
* ignoreboth #上面两条同时生效
* HISTTIMEFORMAT =”%F %T” 定义命令历史记录中显示的时间格式
* HISTIGNORE=”str*” #以str开头的命令不记录

  • history [options] [name]
    -c 清空当前内存中的命令历史
    -d NAME 从内存中删除某条命令历史记录
    -a 将内存中未从文件中读取,新产生的命令历史记录追加至文件中
    -w 将当前内存中的命令历史覆盖命令历史文件
    -p 不将当前执行的扩展命令记录至命令历史中
# 默认HISTSIZE为1000,在/etc/profile中定义了其大小
[centos6@root ~]# echo $HISTSIZE
1000
[centos6@root ~]# cat /etc/profile | grep HISTSIZE
HISTSIZE=1000
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

[centos6@root ~]# echo $HISTFILESIZE
1000

[centos6@root ~]# history | tail -n 10
  445  help history
  446  clear
  447  history 
  448  history -d clear
  449  history -d 440
  450  clear
  451  pwd
  452  ifconfig
  453  hostname
  454  history | tail -n 10

[centos6@root ~]# history -d 450
[centos6@root ~]# history | tail -n 10
  446  clear
  447  history 
  448  history -d clear
  449  history -d 440
  450  pwd
  451  ifconfig
  452  hostname
  453  history | tail -n 10
  454  history -d 450
  455  history | tail -n 10

[centos6@root ~]# history -c
[centos6@root ~]# history
    1  history

[centos6@root ~]# cat ~/.bash
.bash_history  .bash_logout   .bash_profile  .bashrc        
[centos6@root ~]# cat ~/.bash_history 
history -r
。。。
[centos6@root ~]# cat ~/.bash_history | wc -l
356

# -a 追加
[centos6@root ~]# history -a
[centos6@root ~]# cat ~/.bash_history | wc -l
363
[centos6@root ~]# clear
[centos6@root ~]# history -c
[centos6@root ~]# history
    1  history

# -w  覆盖
[centos6@root ~]# history -w
[centos6@root ~]# cat ~/.bash_history | wc -l
2

rz sz

rz, sz 是在安装了lrzsz程序包后产生的两个工具,用于与windows系统互传文件
* rz #从widows系统上选择需上传至linux的文件
* sz FILE #将FILE从Liux中下载至windows系统

ldd

Print shared library dependencies | 显示命令所依赖的共享库
* ldd command

[centos6@root ~]# ldd /bin/ls
    linux-vdso.so.1 =>  (0x00007fffccfa2000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00000030d2e00000)
    librt.so.1 => /lib64/librt.so.1 (0x00000030d1e00000)
    libcap.so.2 => /lib64/libcap.so.2 (0x00000030d8200000)
    libacl.so.1 => /lib64/libacl.so.1 (0x00000030dc600000)
    libc.so.6 => /lib64/libc.so.6 (0x00000030d1600000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00000030d1200000)
    /lib64/ld-linux-x86-64.so.2 (0x00000030d0e00000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00000030d1a00000)
    libattr.so.1 => /lib64/libattr.so.1 (0x00000030dbe00000)

[centos6@root ~]# ldd /bin/cat
    linux-vdso.so.1 =>  (0x00007ffe611f0000)
    libc.so.6 => /lib64/libc.so.6 (0x00000030d1600000)
    /lib64/ld-linux-x86-64.so.2 (0x00000030d0e00000)

uname

Print system information | 显示系统版本信息
* uname [option]
-a 显示所有
-r 内核版本
* 查看发现版本号可通过查看以下两个文件
/etc/redhat-release
/etc/centos-release

[centos6@root ~]# uname 
Linux

[centos6@root ~]# uname -a
Linux centos6.zhubiao.science 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

[centos6@root ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)

[centos6@root ~]# cat /etc/centos-release 
CentOS release 6.9 (Final)

timedatectl

Control the system time and date 显示、设定时间(centos7)
* timedatectl [options]
set-time string 设定时间
set-ntp bool 是否启用ntp同步时间
list-timezones #列出所有时区
set-timezone #设定时区

对于centos7系统,修改时区其实是修改了/etc/localtime的符号链接指向,centos6也可以通过直接修改链接指向达到修改时区的目的

以下为CentOS7上的操作
设定时间
[centos7@root ~]# timedatectl set-time "2017-07-18 15:35:00"
#查看当前时区设置为上海
[centos7@root ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Jul 17 20:01 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai 

[centos7@root ~]# timedatectl list-timezones | grep New_York
America/New_York

#设定时区为New_York
[centos7@root ~]# timedatectl set-timezone America/New_York
[centos7@root ~]# date
Mon Jul 17 21:12:38 EDT 2017
[centos7@root ~]# ll /etc/localtime 
lrwxrwxrwx. 1 root root 38 Jul 17 21:12 /etc/localtime -> ../usr/share/zoneinfo/America/New_York

# 对于CentOS6系统直接建立符号链接指向相应的时区即可,操作前备份原文件
[centos6@root ~]# ll /usr/share/zoneinfo/America/New_York 
-rw-r--r--. 3 root root 3519 Dec  1  2016 /usr/share/zoneinfo/America/New_York
[centos6@root ~]# ln -s /usr/share/zoneinfo/America/New_York /etc/localtime

screen

要求同一个用户,同一台主机
screen非常有用的一个工具,可以实现多人在同一个会话中操作Linux,实现字符界面的共享,当你由于各种原因导致退出会话,会话中所运行的程序并不会结束,仍然继续运行
* screen [options]
-S name #创建名为name的会话
-x name #加入name会话
ctrl+a, d #脱离会话
-r #恢复会话
exit 结束会话
-ls 列出会话

#创建会话
[centos6@root ~]# screen -S zb10
#列出现发起的会话
[centos6@root ~]# screen -ls
There is a screen on:
    50753.zb10  (Attached)
1 Socket in /var/run/screen/S-root.

#加入会话
screen -x zb10

# 脱离会话
同时按下ctrl+a, 再按d

#再加入刚脱离的会话
[centos6@root ~]# screen -r

#退出会话
[centos6@root ~]# exit

Linux基础命令总结(CentOS6.9, CentOS7.3) - 课 2017-07-1-14_第2张图片

chvt

虚拟终端之间互相切换,或图形终端上开启的伪终端与虚拟终端之间的切换
* chvt NUM #NUM终端号1-6

[centos6@root ~]# chvt 1

script scriptreplay

  • script
    make typescript of terminal session | 录屏(字符界面)
    -o script_file 将录制的内容存放于文件中
    -t 时间通过标准错误输出到屏幕,可通过重定向到到文件中2>time_file
    exit 退出录屏
  • scriptreplay 回放
    scriptreplay time_file script_file
    playback typescripts, using time information
#开始录屏
[centos6@root ~]# script -a script_file -t 2>time_file 
Script started, file is script_file
[centos6@root ~]# pwd
/root
[centos6@root ~]# ls
1.log  a                Desktop      install.log.syslog  Pictures     test
1.txt  anaconda-ks.cfg  Documents    localtime           Public       time_file
2.txt  a.tar            Downloads    man.1               script_file  typescript
3.txt  core.3283        install.log  Music               Templates    Videos
[centos6@root ~]# exit #退出录屏
exit
Script done, file is script_file

#回放,下面除了第一条回放操作命令以外,其它的操作均是回放
[centos6@root ~]# scriptreplay time_file script_file 
[centos6@root ~]# pwd
/root
[centos6@root ~]# ls
1.log  a                Desktop      install.log.syslog  Pictures     test
1.txt  anaconda-ks.cfg  Documents    localtime           Public       time_file
2.txt  a.tar            Downloads    man.1               script_file  typescript
3.txt  core.3283        install.log  Music               Templates    Videos
[centos6@root ~]# exit[centos6@root ~]# 

man

查看外部命令的帮助文档

  • man command
  • man 手册配置文件位置
    centos6 /etc/man.config
    centos7 /etc/man_db.conf

你可能感兴趣的:(Linux基础命令,linux,centos,基础,命令)