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
>###head
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是图形终端的一个文本编辑工具,通过下图方式打开
![image.png](http://upload-images.jianshu.io/upload_images/6823414-459f37ae79f49fc5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/500)
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
![2017-07-18_095843.png](http://upload-images.jianshu.io/upload_images/6823414-ba7c81f60e9ad044.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/800)
>###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
>###