linux 常用命令

开关机

1
2
shutdown -d now #立即关机
reboot #重启

开机模式切换

设置开机之后,进入到何种模式(图像界面、单用户、多用户等)

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
[root@linux1 ~]# vi /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# 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)
#
id:3:initdefault:

从命令行模式切换到图形界面,需要在能够直接连接主机的地方(比如:VMware)

1
2
[root@linux1 ~]# startx
[root@linux1 ~]# init 5 #可能不起作用

VMware虚拟主机模式下,从图形界面切换到命令行模式

1
2
3
windows系统快捷键:ctrl + alt + F1
[root@linux1 ~]# init 3 #可能不起作用

shell命令

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。

1
2
[root@linux1 /]# echo $SHELL #查看当前环境使用的shell命令解释器
/bin/bash

用户家目录

root用户的家目录和其它账户的家目录位置不一样。$HOME~都能代表当前用户的家目录

1
2
3
4
5
[root@linux1 /]# echo $HOME #查看当前用户的家目录
/root
[jerry@linux1 /]$ cd ~ #切换目录为当前用户的家目录
[jerry@linux1 /]$ pwd #查看当前目录
/home/jerry

su命令

1
2
[jerry@linux1 /]$ su - root #切换用户为:root
Password:

id命令

id命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID是对一个用户的单一身份标识。组ID(GID)则对应多个UID。

1
2
[root@linux1 ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

uname命令

uname是Linux命令用途显示当前操作系统名称

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@linux1 ~]# uname
Linux
[root@linux1 ~]# uname -a
Linux linux1.jerry.com 2.6.32-504.el6.x86_64 #1 SMP Tue Sep 16 01:56:35 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@linux1 ~]# uname -n
linux1.jerry.com
[root@linux1 ~]# uname -in
linux1.jerry.com x86_64
[root@linux1 ~]# uname -i
x86_64
[root@linux1 ~]# uname -r
2.6.32-504.el6.x86_64
[root@linux1 ~]# uname -s
Linux
[root@linux1 ~]# uname -rs
Linux 2.6.32-504.el6.x86_64

date命令

date命令打印或设置系统日期和时间

1
2
[root@linux1 ~]# date
Mon Feb 29 21:42:48 CST 2016

连续执行多条命令

如果每个命令被;所分隔,那么命令会连续的执行下去

1
2
3
4
5
6
7
8
[root@linux1 ~]# date; uname
Mon Feb 29 21:44:18 CST 2016
Linux
[root@linux1 ~]# date; unamed; ls #第二条命令出错了,但是第三天命令还是会执行
Mon Feb 29 21:47:42 CST 2016
-bash: unamed: command not found
anaconda-ks.cfg Documents install.log Music Public Videos
Desktop Downloads install.log.syslog Pictures Templates

如果每个命令被&&分隔,那么这些命令会一直执行下去,如果中间有错误的命令存在,则不再执行后面的命令,没错则执行到完为止

1
2
3
[root@linux1 ~]# date&& unamed&& ls
Mon Feb 29 21:49:05 CST 2016
-bash: unamed: command not found

如果每个命令被||分隔,如果命令遇到可以成功执行的命令,那么命令停止执行,即使后面还有正确的命令则后面的所有命令都将得不到执行。假如命令一开始就执行失败,那么就会执行||后的下一个命令,直到遇到有可以成功执行的命令为止,假如所有的都失败,则所有这些失败的命令都会被尝试执行一次

1
2
3
4
5
6
7
8
9
[root@linux1 ~]# date || unamed || ls
Mon Feb 29 21:50:58 CST 2016
[root@linux1 ~]# unamed || date || ls
-bash: unamed: command not found
Mon Feb 29 21:51:12 CST 2016
[root@linux1 ~]# unamed || dated || lsd
-bash: unamed: command not found
-bash: dated: command not found
-bash: lsd: command not found

man命令操作手册

Linux系统提供了相对比较丰富的帮助手册(man),man是manual的缩写,在日常linux系统管理中经常用到

1
man ls

快捷键操作

  • 下一页
    • 空格键
    • 回车键
  • 上一页
    • B键

搜索

输入/bala向下搜索字符串bala,输入?bala向上搜索字符串bala
N键继续关键字的下一个搜索,N键反向搜索关键字。

退出man

Q键退出man命令

stat命令

stat打印信息节点(inode)内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@linux1 ~]# stat Videos/
File: `Videos/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 275645 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-12-28 06:34:48.950999982 +0800
Modify: 2015-12-28 06:34:48.950999982 +0800
Change: 2015-12-28 06:34:48.950999982 +0800
[root@linux1 ~]# stat Public/
File: `Public/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 275641 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-12-28 06:34:48.950999982 +0800
Modify: 2015-12-28 06:34:48.950999982 +0800
Change: 2015-12-28 06:34:48.950999982 +0800

more命令

more在显示器上阅读文件的过滤器, 用于分页显示 (一次一屏) 文本. 这个版本非常基本. less提供了more的模拟, 并且做了增强

1
[root@linux1 ~]# more install.log #查看文件,一次一屏

快捷键操作

  • 下一页
    • 空格键
  • 上一页
    • B键
  • 下一行
    • 回车键
  • 退出
    • Q键

less命令

lessmore类似,但使用less可以更方便随意浏览文件,less在查看之前不会加载整个文件

1
[root@linux1 ~]# ps -ef | less #ps查看进程信息并通过less分页显示

快捷键操作

  • 下一页
    • 空格键
  • 上一页
    • B键
  • 下一行
    • 回车键
    • 方向键下
  • 上一行
    • 方向键上
  • 退出
    • Q键

搜索

输入/bala向下搜索字符串bala,输入?bala向上搜索字符串bala
N键继续关键字的下一个搜索,N键反向搜索关键字。

head命令

在标准输出上显示每个FILE的起始10行。如果多于一个FILE,则一个接一个地显示,并且在每个文件显示的首部给出文件名。如果没有FILE或者FILE为-,那么就从标准输入上读取

-c, --bytes=[-]K 显示起始的SIZE字节。b表示512, kB表示1000, K表示1024, MB表示10001000, M表示10241024, GB表示100010001000, G表示102410241024

1
2
3
[root@linux1 ~]# head --bytes=1k install.log
[root@linux1 ~]# head -c 1k install.log
[root@linux1 ~]# head -c 1m install.log

-n, --lines=[-]K 显示起始的NUMBER行,而非默认的起始10行

1
2
3
[root@linux1 ~]# head -n 2 install.log
[root@linux1 ~]# head --lines 2 install.log
[root@linux1 ~]# head --lines=2 install.log

-q, --quiet, --silent 当输出多个文件的时候才会显示出差异,不输出文件名的首部

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@linux1 ~]# head install.log install.log.syslog -n 2
==> install.log <== #输出了文件的名字
Installing libgcc-4.4.7-11.el6.x86_64
warning: libgcc-4.4.7-11.el6.x86_64: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
==> install.log.syslog <== #输出了文件的名字
<86>Dec 28 06:01:22 groupadd[1541]: group added to /etc/group: name=dbus, GID=81
<86>Dec 28 06:01:22 groupadd[1541]: group added to /etc/gshadow: name=dbus
[root@linux1 ~]#
[root@linux1 ~]# head install.log install.log.syslog -q -n 2 #没有输出文件的名字
Installing libgcc-4.4.7-11.el6.x86_64
warning: libgcc-4.4.7-11.el6.x86_64: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
<86>Dec 28 06:01:22 groupadd[1541]: group added to /etc/group: name=dbus, GID=81
<86>Dec 28 06:01:22 groupadd[1541]: group added to /etc/gshadow: name=dbus

tail命令

在标准输出上显示每个FILE的最后10行。如果多于一个FILE,会一个接一个地显示,并在每个文件显示的首部给出文件名。如果没有FILE,或者FILE是-,那么就从标准输入上读取

-c, --bytes=[-]K 显示最后的SIZE字节。b表示512, kB表示1000, K表示1024, MB表示10001000, M表示10241024, GB表示100010001000, G表示102410241024

1
2
3
[root@linux1 ~]# tail --bytes=1k install.log
[root@linux1 ~]# tail -c 1k install.log
[root@linux1 ~]# tail -c 1m install.log

-n, --lines=[-]K 显示最后的NUMBER行,而非默认的最后10行

1
2
3
[root@linux1 ~]# tail -n 2 install.log
[root@linux1 ~]# tail --lines 2 install.log
[root@linux1 ~]# tail --lines=2 install.log

-f, --follow[={name|descriptor}] 当文件增长时,输出后续添加的数据;-f, --follow以及--follow=descriptor都是相同的意思。常用于查看日志文件

1
[root@linux1 ~]# tail -f install.log

--retry 即使tail开始时就不能访问或者在tail运行后不能访问,也仍然不停地尝试打开文件。--只与-f合用时有用

1
2
3
4
5
[root@linux1 ~]# tail -f --retry kawaii.log
tail: warning: --retry only effective for the initial open
tail: cannot open ‘logs/kawaii.log’ for reading: No such file or directory
tail: ‘logs/kawaii.log’ has appeared; following end of new file
2016-03-02 20:45:58,525 [pool-2-thread-1] INFO bala

-q, --quiet, --silent 当输出多个文件的时候才会显示出差异,不输出文件名的首部

1
2
3
4
5
6
7
8
9
10
11
12
[root@linux1 ~]# tail install.log install.log.syslog -n 2
==> install.log <== #输出了文件的名字
Installing compat-libstdc++-296-2.96-144.el6.i686
*** FINISHED INSTALLING PACKAGES ***
==> install.log.syslog <== #输出了文件的名字
<86>Dec 28 06:10:27 groupadd[4346]: group added to /etc/gshadow: name=slocate
<86>Dec 28 06:10:27 groupadd[4346]: new group: name=slocate, GID=21
[root@linux1 ~]#
[root@linux1 ~]# tail install.log install.log.syslog -q -n 2 #没有输出文件的名字
Installing compat-libstdc++-296-2.96-144.el6.i686
*** FINISHED INSTALLING PACKAGES ***<86>Dec 28 06:10:27 groupadd[4346]: group added to /etc/gshadow: name=slocate
<86>Dec 28 06:10:27 groupadd[4346]: new group: name=slocate, GID=21

cp命令

cp复制文件(或者目录等)。可以使用这个命令复制一个文件到一个指定的目的地,或者复制任意多个文件到一个目的目录目录

如果最后一个命令参数为一个已经存在的目录名,cp会将每一个源文件复制到那个目录下(维持原文件名)。如果所给的参数只有两个文件名,它把前一个文件复制到后一个文件上。如果最后一个参数不是文件名、目录名和给出多于两个非选项参数,这是错误的语法

1
2
3
4
5
6
7
8
[root@linux1 Desktop]# ll
total 4
-rw-r--r--. 1 root root 9 Mar 2 21:27 test.txt
[root@linux1 Desktop]# cp test.txt test2.txt
[root@linux1 Desktop]# ll
total 8
-rw-r--r--. 1 root root 9 Mar 2 21:28 test2.txt
-rw-r--r--. 1 root root 9 Mar 2 21:27 test.txt

-p 保留原文件的所有者、组、权限(包括setuidsetgid位),上次修改时间和上次访问时间。如果制作所有者或组信息的副本时出错,则setuidsetgid位被清空。

1
2
3
4
5
6
[root@linux1 Desktop]# cp test.txt test3.txt -p
[root@linux1 Desktop]# ll
total 12
-rw-r--r--. 1 root root 9 Mar 2 21:28 test2.txt
-rw-r--r--. 1 root root 9 Mar 2 21:27 test3.txt
-rw-r--r--. 1 root root 9 Mar 2 21:27 test.txt

-i 提示是否覆盖已经存在的目标文件。在ReadHat linux系统里,cp命令默认添加了-i选项

1
2
[root@linux1 Desktop]# alias cp
alias cp='cp -i'

-R, -r 递归复制目录

-v, --verbose 在复制前印出文件名

1
2
3
[root@linux1 Desktop]# cp test.txt test3.txt -v
cp: overwrite `test3.txt'? y
`test.txt' -> `test3.txt'

-n 不覆盖已经存在的目标文件

1
2
[root@linux1 Desktop]# cp test.txt test3.txt -v -n
[root@linux1 Desktop]#
您的赞赏将鼓励我继续分享!
Fork me on GitHub