linux系统是一个主要使用命令进行日常工作的系统,所以了解并熟练掌握常用命令的使用是进入linux大门的基本,以下便是linux学习过程中学习的常用的命令的用法:
linux的日常管理工作一般有如下几个部分,下面通过这几个方面的管理工作来整理与其相关的常用命令;
一 shell的介绍
1.普通用户需要直接使用计算机系统提供的功能,是非常困难的,因为计算机系统能接收的指令和人发出的指令是不相同的,因此需要在计算机系统及用户之间建立一个可以将相互的指令进行“翻译”的功能。shell就是一个人机交互的接口,用户通过shell,可以完成与计算机的对话。
根据界面的不同,可将shell分为两种,图像化接口(GUI)和命令行接口(CLI);
常用图形化接口(GUI)
Gnome、KDE、xfce
常用命令行接口(CLI)
bsh、csh、tcsh、ksh、bash、zsh
在linux中命令行接口shell的种类非常的多,在大多数的linux的发行版本中默认使用的shell是bash。
2.bash的基础特性
2.1 命令历史:
当用户在bash中输入一个命令时,shell会在环境变量中找到命令对应的可执行的文件,并提交给系统执行,执行完成后并将结果返回给用户,bash会将用户执行过的命令记录在缓冲区中,以便下一次执行此命令是可以更加快速的在缓冲区中找到,这种命令的记录被称为命令历史。
当你在shell中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户主目录下的.bash_history文件中。默认保存1000条,你也可以更改这个值。
2.1.1 命令历史管理:
命令历史的管理,其实是对相关的环境变量的参数进行调整,环境变量的调整分为三种,在/etc/profile文件中进行修改对所有用户永久生效、/home/USERNAME/.bash_profile文件中修改的设置对此用户永久有效、使用”export 变量名=变量值“命令进行修改对用户当前会话有效
设置命令记录的相关环境变量:
HISTSIZE:命令历史记录的条数;
HISTFILE:命令历史文件路径;
HISTFILESIZE:命令历史文件大小;
2.1.2 查看及管理命令历史的命令:
history :
命令常用选项:
-c:清空缓冲区中的命令历史;
-d #: 删除历史中指定的命令,#代表命令历史列表中命令的号码;
-a: 把缓冲区中新的命令历史手动追加到命令历史文件中;
-r:将 histfiles 的内容读到当前shell的缓冲区中;
-w:将当前缓冲区中的命令历史写入命令历史文件中;
2.1.3 调用过去执行过的命令:
!#:调用历史中的第#条命令;
!!: 重复执行上一条命令
!string:调用历史中最近一个以string开头的命令;
2.1.4 调用过去执行过的命令的最后一个参数:
!$
ESC+.
2.2 命令补全(TAB键):
补全为两种,命令补全及路径补全;
命令补全时,命令的搜索路径为环境变量$PATH, 搜索后将结果以hash算法存入缓存中;
使用TAB键可以进行补全,两次TAB键将显示以输入的部分字符开头的所有命令,如果是路径补全,使用方法相同;
使用命令补全,可以提升命令输入的效率,也可以防止手动输入的失误。
2.3 命令展开:
~: 展开为当前用户的主目录;
~USERNAME:展开为指定用户的家目录;
{}:可承载一个以逗号分隔的列表,并其展开为多个路径;
2.4 命令的执行结果
命令执行成功:0
命令执行失败:1-255
bash使用特殊变量$?保存最近一条命令的状态结果;
查看命令执行的状态:
[[email protected] ~]# echo $?
2.5 命令别名
命令别名:命令的另一个引用名称;
命令别名涉及到的两个命令:
alias/unalias
alias: 查看所有已经定义别名;
alias ALIASNAME=COMMAND:定义别名;
unalias ALIASNAME:撤销定义的别名
例如:[[email protected] ~]# alias cls=clear 将clear设置一个命令别名为cls的引用
[[email protected] ~]# unalias cls 将设置的cls命令别名取消
两种设置可以使用 alias 命令查看效果
如果别名同原命令名,想直接执行原命令,则需使用\COMMAND
二 linux命令简介
1. linux命令分类:
1.1 内部命令(shell的内建命令)
1.2 外部命令 由第三方提供的工具类程序
1.3 使用type可以查看命令的类型
type命令的格式: type [COMMAND]
例如:[[email protected] ~]# type cd
cd is a shell builtin 显示此信息说明为shell的内建命令,显示结果如不是此信息则为外部命令
2. linux命令使用格式:
COMMAND [OPTION]... [ARGS]...
选项:用户启用或关闭命令的某个或某些功能;
短选项:-CHARACTER
-l, -h
Note: 多个短选项如果不合并,则彼此间要有空白字符分隔;可合并,合并时使用一个-引导,例如-lh;有些短选项自己也需要带参数,这叫选项参数;
长选项:--word
--human-readable, --help
参数:命令的作用对象;
向命令提供数据;
3. 外部命令路径位置查看工具:
which:
which [options] [--] programname [...]
--skip-alias:禁止列出别名
whereis COMMAND:
显示二进制程序、源码文件以及帮助手册的路径;
三 linux 命令的帮助
1. 命令的帮助参考
内部命令: # help COMMAND
外部命令:
(1) 命令自带的简单帮助
# COMMAND --help
# COMMAND -h
(2) 命令手册页
# man [CHPATER] KEYWORD
(3) 信息页
# info COMMAND
(4) 程序自身的帮助文档
README、INSTALL、Change
(5) 程序官方提供的Documentation
(6) 发行版官方提供的文档
(7) Google,baidu搜索网络提供的信息
2. man手册的使用
2.1 man手册有九种类型,如下:
man1, ..., man9
man1: 用户命令;
man2: 系统调用;
man3:C库调用;
man4: 设备文件及特殊文件;
man5: 配置文件格式;
man6: 游戏;
man7:杂项;
man8: 管理命令;
2.2 使用whereis COMMAND 可以查看此命令有哪几个类型的man文件
例如:[[email protected] ~]# whereis uniq
uniq: /usr/bin/uniq /usr/share/man/man1/uniq.1.gz /usr/share/man/man1p/uniq.1p.gz
uniq 这个命令有man1 用户命令使用的帮助文件;
2.3 man手册的查看操作方法:
Space: 向文件尾部翻一屏;
b: 向文件首部翻一屏;
d: 向文件尾部翻半屏;
u: 向文件首部翻半屏;
Return:向文件尾部翻一行;
k或y:向文件首部翻一行;
#: 快速转到第#行;
1G:回到第一行;
G:到最后一行;
q: 退出;
文本搜索:
/keyword:从当前位置向尾部搜索
?keyword:从当前位置向首部搜索
n:与命令方向相同
N:与命令方向相反
2.4 其它帮助方法
info命令:
info COMMAND
程序自身的帮助文档:
/usr/share/doc/NAME-VERSION
程序官方文档:
发行版的官方文档:
四 linux目录管理
1. linux的目录结构
linux使用根文件系统(rootfs)对目录结构进行管理
linux的各发行版遵照LSB制定的FHS对目录结构进行组织,其目录的结构及目录的内容如下:
/boot: 引导文件存放目录,例如kernel(vmlinuz)、bootloader(grub, grub2);
/bin: binary,供用户使用的基本的命令;OS启动即会用到程序;
/sbin:管理类的基本命令;
/lib: 基本共享库;内核模块;
/lib64:x86_64系统的共享库;
/etc:配置文件目录;
/home/USERNAME: 普通用主目录的默认位置;
/root: 管理员的主目录;
/media:便携式移动设备;
/mnt:临时文件系统挂载点;
/opt: 可选目录,第三方应用程序的默认安装位置;
/dev:devices,设备文件
b:block devices,random access
c: character deivces,linear access
/proc:
伪文件系统;用于输出内核与进程的相关信息;
/sys:
伪文件系统;
/srv:services,系统上运行服务用到中间数据;
/tmp:临时文件目录;
/usr:Universal Shared, Read-only data;
bin:保证系统提供基本功能;
sbin
lib
lib64
include: C程序的头文件;header files
share:结构化的独立数据
doc, man
local:现在常用的第三方程序的安装位置;
bin
sbin
lib
lib64
etc
share
/var:variable data files
cache:应用程序缓存数据
lib:应用程序的状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据;
lock:锁文件
log:日志文件
opt:专用于/opt
spool:应用程序的数据池;
run:运行中的进程的相关数据;通常用守护进程 的pid文件;
/selinux
2. 目录管理命令简介
2.1 cd (change directory)改变目录
cd ~: 回主目录
cd ~USERNAME:切换指定用户的家目录
cd -: 回到上一次所在目录
例如:[[email protected] ~]# cd /etc/sysconfig/network-scripts/ 切换当前目录为:/etc/sysconfig/network-scripts/
[[email protected] network-scripts]# cd ~ 将当前目录切换为用户的主目录
[[email protected] ~]# cd - 返回前一次的当前目录
2.2 pwd 显示当前工作目录
[[email protected] network-scripts]# pwd
/etc/sysconfig/network-scripts 是用户当前的工作目录
2.3 ls 列出指定目录中的文件及目录的信息
命令使用格式:ls [OPTION]... [FILE]...
-l:使用长格式显示目录及文件的信息
例如:[[email protected] network-scripts]# ls -l /usr/share/doc/
drwxr-xr-x. 2 root root 4096 Aug 21 03:55 abrt-2.0.8
d 为目录型文件
rwxr-xr-x. 权限
2 被硬链接的次数
root root 目录的属主和属组
4096 目录的大小(默认为字节)
Aug 21 03:55 被修改的时间戳
abrt-2.0.8 文件名
-d:显示目录自身属性(跟-l选项同时使用)
-h: human-readable(将列出的文件或目录大小以易读的格式显示,跟-l选项配合使用)
-a:显示所有文件,包括.开头的隐藏文件
.: 当前目录
..: 父目录
-r: reverse,逆序显示
-R: recusive,递归
例如:[[email protected] ~]# ls -lh /boot
-rw-r--r--. 1 root root 105K Jul 24 00:13 config-2.6.32-573.el6.x86_64
drwxr-xr-x. 3 root root 1.0K Aug 21 03:59 efi
drwxr-xr-x. 2 root root 1.0K Aug 21 04:23 grub
-rw-------. 1 root root 27M Aug 21 04:01 initramfs-2.6.32-573.el6.x86_64.img
-rw-------. 1 root root 5.2M Aug 21 04:23 initrd-2.6.32-573.el6.x86_64kdump.img
drwx------. 2 root root 12K Aug 21 03:51 lost+found
-rw-r--r--. 1 root root 202K Jul 24 00:14 symvers-2.6.32-573.el6.x86_64.gz
-rw-r--r--. 1 root root 2.5M Jul 24 00:13 System.map-2.6.32-573.el6.x86_64
-rwxr-xr-x. 1 root root 4.1M Jul 24 00:13 vmlinuz-2.6.32-573.el6.x86_64
2.4 mkdir 创建目录
命令使用格式:mkdir [OPTION] /PATH/TO/SOMEWHERE
常用选项:-p:创建父目录(如果创建目录时,上一级目录不存在,则可以使用-p进行递归创建)
-v: 显示创建过程
例如1:[[email protected] ~]# mkdir -pv /tmp/testmk/test1
mkdir: created directory `/tmp/testmk‘
mkdir: created directory `/tmp/testmk/test1‘
例如2: [[email protected] ~]# mkdir -pv /tmp/mkdirkz/{x,y}_{m,n}
mkdir: created directory `/tmp/mkdirkz‘
mkdir: created directory `/tmp/mkdirkz/x_m‘
mkdir: created directory `/tmp/mkdirkz/x_n‘
mkdir: created directory `/tmp/mkdirkz/y_m‘
mkdir: created directory `/tmp/mkdirkz/y_n‘
使用bash的命令展开的特性,进行批量的目录创建
2.5 rmdir 删除目录
命令使用格式:rmdir /PATH/TO/SOMEWHERE
此命令只删除空目录
2.6 tree 以树形的方式列出指定目录结构
此命令如果系统中没有,则需要自行安装
命令使用格式:tree [OPTION]... [DIR]
选项: -d:只列出目录;
-L level: 列出指定目录的指定层数的文件和目录;
-f:以全路径的方式列出
-i:结合-f选项一起使用,列出目录结构,但不显示分支线
-p:显示权限
-s:显示文件大小
-h:以易懂的方式显示文件大小
五 linux文本文件操作
1. linux中文件的类型
计算机的一切资源在linux中都是文件,所以在linux中有如下几种文件类型:
-(f):普通文件
d: 目录文件
b: 块设备文件
c: 字符设备文件
l: 符号链接文件
p: 命名管道文件
s:套接字文件
2. linux中文件的时间戳类型
构成一个文件有两种数据,一种是存储在文件的数据本身,另一种则是元数据,元数据指的是文件的与属性相关的信息
每个文件都有三个时间戳:
atime: 文件最近一次被访问的时间;
mtime: 文件最近一次被“修改”的时间;
修改指的是文件的数据本身被修改
ctime:文件最近一次被“改变”的时间;
改变指的是文件的元数据发生的变化
任何一个除ctime之外的时间戳发生变化,ctime时间也会相应的发生变化,因为时间戳本身就是文件的元数据
3. 文件管理常用命令
cp 复制制定的文件或目录至指定位置
命令的使用格式:
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-r, -R: 递归复制;
-d: 不跟踪符号链接;
--preserve[=ATTR_LIST]:
mode, ownership, timestamps
context, links, xattr, all
-a: -dR --preseve=all
-i: interactive
-f: force
-v: 显示过程
当复制文件时,目标存在,为目录,则复制至目标目录下
目标不存在,则以此文件名命名文件,并复制源文件的内容
目标为文件且存在,则将内容覆盖为源文件的内容
,且源有多个,则目标必须为目录,如果目标目录中有相同的文件则覆盖
当复制目录时,目标存在为目录则叠加
目标为文件则不能成功
mv 移动制定的文件或者目录
如果移动的源目录及目标目录相同,则使用此命令的效果相同于重命名
命令使用格式:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i:交互式
-f:强制
rm 删除指定的文件及目录
命令使用格式
rm [OPTION]... FILE...
常用选项:
-r:
-f:
-i:
使用 rm -rf / 命令,系统默认会对/进行特殊的对待
touch 管理文件的时间戳
命令格式: touch [OPTION]... FILE... 默认将时间修改为当前系统时间
-a: 只更新atime
-m: 只更新mtime
-t STAMP:
[[CC]YY]MMDDhhmm[.ss]
-c: 不创建空文件
file 文件类型查看
命令格式:file /PATH/TO/SOMEWHERE
stat 显示文件及文件系统的状态
命令格式:stat [OPTION]... FILE...
4. 文本文件查看工具
cat和tac
cat [OPTION]... [FILE]...
-n:显示行数
-e: -vE
-E: 显示行结束符
-v:显示非打印字符
more, less
翻屏查看;
more [OPTIONS]... FILE...
-d: 显示翻页有退出提示
Space: 向后一屏;
Enter: 向后一行;
b: 向前一屏;
less [OPTION]... FILE...
文本搜索:
/KEYWORD 当前位置至文件尾部
?KEYWORD 当前位置至文件首部
n: 与命令方向相同的下一个;
N:与命令方向相反的前一个;
head和tail:
head [OPTION]... FILE
tail [OPTION]... FILE
-n # 显示文件的前/后行数
-# 非标准写法
-c #: 显示前/后#个字节
tail的专用选项:
-f: follow 跟进追加进文件的行,常用于监控日志
5. 文本文件的处理工具
wc:单词数目统计命令
命令使用格式:wc [OPTION]... FILE...
-l: 显示行数
-w: 显示单词数
cut:文件切割命令
cut OPTION... [FILE]...
-d: 指明分隔符;-d‘ ‘, -d:
-f:指明要显示的字段
#:
#-#:1-3
#,#: 1,3,7
sort:以文件中的字段为关键字,对文件进行排序
sort [OPTION]... [FILE]...
-r: 逆序
-f: 忽略字符大小写
-u: 排序后去重
-t CHAR: 指明分隔符
-k #: 字段
-n: 表示以数值大小排序
uniq:报告或者忽略重复的行
uniq [OPTION]... [FILE]...
-c: 显示每行重复的次数;
-d: 只显示重复过的行;
-u: 只显示不曾重复的行;
六 简单系统设置命令
1. 时间及日期
RTC:RealTime Clock
System Clock:系统时钟
date: 系统时间
clock, hwclock: 硬件时间
date:
date [OPTION]... [+FORMAT]:时间显示
FORMAT
%F
%D
%T
%H
%M
%S
date [MMDDhhmm[[CC]YY][.ss]]:时间设置
hwclock
-s: hctosys, 以硬件时钟为准,调整系统时间同硬件;
-w:systohc, 以系统时钟为准
cal:
cal [YEAR]
2. 查看当前系统被使用的信息
whoami
who
w
3. 关闭及重启计算机
关机或重启
关机:halt, poweroff, init 0, shutdown -h TIME
重启:reboot, init 6, shutdown -r TIME
shutdown
shutdown [OPTIONS...] [TIME] [WALL...]
-r: 重启
-h: 关机
--no-wall
-c
TIME:
+m: 相对时长之后执行相应操作;单位是分钟;
HH:MM 绝对时间
七 bash的基础特性(02)
(1) glob
文本名“通配”
*:匹配任意长度的任意字符;
?:匹配任意单个字符;
a*b: aab, ab, a123b;
a?b:
[]: 匹配指定范围内的任意单个字符;
[0-9]
[^]:匹配范围外的任意单个字符;
[^a-b]
字符集合:
[:lower:] 表示所有小写字母
[:upper:] 表示所有大写字母
[:alpha:] 表示所有的字母
[:alnum:] 字母和数字
[:digit:] 表示所有数字
[:space:] 表示空白字符
[:punct:] 表示所有标点符号
例如:ls /etc/[^[:alpha:]][:alpha:]*
ls /etc/[^a-zA-Z][a-zA-Z]*
表示为:显示/etc/目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录;
例如:[[email protected] tmp]# cp -r /etc/*.d /tmp/mageedu.com/
表示为:复制/etc目录下,所有以.d结尾的文件或目录至/tmp/mageedu.com目录中;
(2) 组合键
Ctrl+l:清屏
Ctrl+a: 切换至命令行首
Ctrl+e:切换至命令行尾
Ctrl+c:取消命令执行
Ctrl+u:删除光标所在处至行首的内容;
Ctrl+k: 删除光标所在处至行尾的内容;
(3) IO重定向和管道
程序:指令+数据
读入数据:Input
输出数据:Output
打开的文件都一个fd:file descriptor
标准输入:keyboard, 0, /dev/stdin
标准输出:monitor, 1, /dev/stdout
标准错误输出:monitor, 2, /dev/stderr
I/O重定向:
输入重定向
输出重定向:
COMMAND > NEW_POS, COMMAND >> NEW_POS
>:覆盖重定向;
>>:追加重定向;
set -C
如果覆盖重定向目标文件存在,则禁止执行;
>|
set +C
错误重定向:
2>:覆盖
2>>:追加
同时重定向标准输出流和错误输出流:
COMMAND > /path/to/file.out 2> /path/to/file.err
COMMAND > /path/to/file.out 2>&1
COMMAND &> /path/to/file.out
输入重定向:
<
tr命令: 将set1 替换成 set2
tr [OPTION]... SET1 [SET2]
-d: 删除字符 (删除字符时只有一个字符集合)
例如:[[email protected] tmp]# ls /tmp | tr a-z A-Z
表示为: 显示/tmp目录下的文件和目录,并且使用大写字母替换小写字母
Here Document:<<
cat >> /path/to/somefile << EOF
管道:
COMMAND1 | COMMAND2 | ... :将COMMAND1的结果输送至COMMAND2的参数