输入命令意味着什么。输入命令后敲回车命令能运行起来,就相当于告诉交互式接口程序(shell程序)找到输入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来。
例如:输入 # ls后回车,就是让/bin/ls这个程序执行起来,该操作与windows上双击打开一个文件夹操作是一样的
使用命令:# which ls 和 # whereis ls 可以看到ls运行程序在linux中的位置路径.即这两个命令可以看到我们即将使用的命令的位置路径.
[root@root network-scripts]# which ls
alias ls='ls --color=auto'
/bin/ls
[root@root network-scripts]# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
在shell中可执行的命令有两类:
内建命令:由shell自带的,而且通过某命令形式提供;
外部命令:当前系统的某文件系统路径下有对应的可执行程序文件;
which whereis
区别内部或外部命令:
type + 命令
1,显示当前使用的shell
echo $SHELL
[root@root ~]# echo $SHELL
/bin/bash
2,显示当前系统使用的所有shell
cat /etc/shells
[root@root ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
3,命令提示符:prompt
[root@root ~]#
在Linux中用户只有两种,管理员和普通用户
管理员的命令提示符:#
普通用户的命令提示符:$
[root@root ~]# useradd tom
[root@root ~]# su tom
[tom@root root]$
4,显示当前日期时间
date +%F 显示当前日期
date +%T显示当前时间
[root@root ~]# date +%F
2018-06-25
[root@root ~]# date +%T
22:44:35
[root@root ~]# date +%F--%T
2018-06-25--22:44:52
5,显示当前日历
cal (后面可加上年份)
[root@root ~]# cal
June 2018
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
[root@root ~]# cal 1991
1991
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 4 1
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29
30
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28
28 29 30 31 25 26 27 28 29 30 31 29 30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2 3 4 5 6 7
6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14
13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31
6,添加一个user1用户,此时在home下就多了一个user1的家目录
[root@root /]# useradd user1
[root@root /]# ll /home
[root@root ~]# ll /home/
total 24
drwx------. 2 root root 16384 Jun 18 19:07 lost+found
drwx------. 2 tom tom 4096 Jun 25 22:54 tom
drwx------. 2 user1 user1 4096 Jun 20 14:42 user1
作为管理员用户,可以使用cd ~+指定用户名 表示切换到指定用户的主目录
单个的cd ~或者cd表示切换到自己的主目录
[root@root ~]# cd ~tom
[root@root tom]# cd ~
[root@root ~]#
7,使用 cd - 可以在当前目录和上一个目录之前来回切换
[root@root ~]# cd /etc/sysconfig/network-scripts/
[root@root network-scripts]# cd -
/root
[root@root ~]# cd -
/etc/sysconfig/network-scripts
[root@root network-scripts]#
之所以能实现这个切换是因为有两个环境变量记录了当前路径与上一次路径
PWD:保存了当前目录路径
OLDPWD:保存了上一次所在目录的路径
8,文件内容类型查看命令:file
file + 文件名
Linux下的文件类型:
- (f):普通文件
d: 目录文件
b:块设备
c:字符设备
l:符号链接文件
p:管道文件
s:套接字文件 socket
-rw-r--r-- 1 root root 8997403 Apr 2 12:48 apache-tomcat-7.0.82.tar.gz
最左侧一位:文件类型
-,d,l,b,c,p,s
b:block device 可随机访问设备
c:character device 线性访问设备,有先后顺序之分
后面的9位,访问权限
数字1:文件被硬链接的次数
左边的root:文件的owner
右边的root:文件的group
8997403:文件的size
apache-tomcat-7.0.82.tar.gz:文件名
9,系统管理类命令:
关机:halt,poweroff,shutdown,init 0
重启:reboot,shutdown,init 6
用户登录相关:who, whoami ,w
10,命令历史
history 查看命令历史记录
history + 数字 查看最近 多少条历史命令
!+数字:重复执行历史中的第数字编号的命令
!!:重复执行上一条命令
!+String:执行之前命令中以string开头的命令
控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups:忽略重复的命令。连续且相同为“重复”
ignorespace:忽略所执行命令:有以空白开头的命令
ignoreboth: 以上两种情况都包含
修改环境变量值:export HISTCONTROL="ignorespace" 只对当前shell进程和当前shell的子shell有效export表示导出环境变量
11,命令补全
bash执行命令:
内部命令:
外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令命名的文件,第一次找到即为要执行的命令。
直接补全:按一次Tab键,用户给定的字符串只有一条唯一对应的命令
间接补全:用户给定的字符串为开头的对应命令不唯一,则需要再按一次Tab键会给出列表提示。
路径补全
把用户给出的字符串当做路径的开头,并在其指定上级目录下搜索以指定的字符串开头的文件名,如果唯一,则直接补全,否则,再次Tab,给出命令列表。
12,命令行展开
~:展开为用户的主目录
~USERNAME:展开为指定用户的主目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径
/tem/{a,b} = /tmp/a, /tmp/b
/tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b,/tmp/x/y2/a,/tmp/x/y2/b
方式一:mkdir /tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b,/tmp/x/y2/a,/tmp/x/y2/b
方式二:mkdir /tmp/x/{y1,y2}/{a,b}
如何创建x_m,y_m,x_n,y_n
[root@root tmp]# mkdir {x,y}_{m,n}
[root@root tmp]# ll
total 20
drwxr-xr-x. 4 root root 4096 Jun 25 21:29 x
drwxr-xr-x. 2 root root 4096 Jun 25 23:31 x_m
drwxr-xr-x. 2 root root 4096 Jun 25 23:31 x_n
drwxr-xr-x. 2 root root 4096 Jun 25 23:31 y_m
drwxr-xr-x. 2 root root 4096 Jun 25 23:31 y_n
-rw-------. 1 root root 0 Jun 18 19:07 yum.log
13,命令的执行结果状态
bash使用特殊变量$?保存最近一条命令的执行状态结果
0:成功
1-255:失败
程序执行有两类结果:
程序的返回值:
程序的执行状态结果
14,目录管理类命令
mkdir:创建目录
-p,存在时不报错,且可自动创建所需的各目录,递归创建目录。
-v,显示详细信息。
-m,创建目录时直接指定权限。
tree:显示目录的层级结构
-d:只显示目录
-L + 数字:只显示数字层级个(Level)
-P :只显示由指定pattern匹配到的路径(pattern)
rmdir:删除空目录
-p:递归删除目录
-v:显示过程
文本文件查看类命令:
cat tac
more,less,tail,head
Cat
-E:显示行结束符 $
-n:对显示的每一行进行编号
more命令查看:more network-functions-ipv6空格键翻下一页,在看完之前b键翻上一页,q键退出。
more -d network-functions-ipv6最下面有翻页提示信息
less命令查看:
tail:获取一个文件的最后多少行
-c #:指定文件的后多少字节
-n #:指定文件的后多少行
-f : 跟踪显示文件新追加的内容,使用ctrl+c退出
head:获取一个文件的开头多少行
-c #:指定获取前#字节
-n #:指定获取前#行
查看文件状态 stat
三个时间戳:
access time:访问时间,简写为atime,读取文件内容
modify time:修改时间,简写为mtime,改变文件内容(数据)
change time:改变时间,简写为ctime,元数据发生改变
touch命令
-a:只修改atime
-m:只修改mtime
-t:设置时间戳(有固定格式)
-c:如果文件不存在,则不予创建