跟文件系统相关的命令
Linux的潜规则:一般而言,命令的命名方式是其单词的缩写
1.pwd = printing working directory:显示工作目录
pwd
2.cd = changing directory:切换目录
- cd可以不用带任何参数,也可跟切换的目录,这意味着cd是一个内置命令
- cd不带任何参数时表示回归用户的家目录,用户的家目录有一个简单的表示方法,用~表示
attention:在bash中,~表示家目录 - cd = cd ~:表示切换回家目录
cd ~USERNAME:切换至指定用户的家目录,每个用户都有自己的家目录,不允许别人随便进出,只有管理员才能切换到别人的家目录中
cd [/PATH/TO/SOMEDIR]
cd ~#切换到家目录
cd ~USERNAME#切换至指定用户的家目录
type cd #查看cd命令的类型
help cd #help查看cd的用法
- cd - :在上一次所在目录与当前目录之间来回切换
疑问:为什么cd- 可以在上一次执行的目录和当前目录来回切换呢???
bash shell是一种shell环境,它需要为当前用户提供环境,要解析用户所提供的命令,因此,bash shell 中还有一个环境变量用来保存当前shell执行环境下用户所在的目录路径,这个叫做PWD和OLDPWD,这是两个环境变量
PWD:当前工作目录,这个环境变量会不断地发生改变,只要切换一次就会发生变化
OLDPWD:上一次的工作目录
$PWD、 $OLDPWD:可以引用这两个环境变量的值
echo $PWD
pwd
总结;pwd命令实质上就是读取PWD这个命令的值来显示,所以cd - = cd $OLDPWD
cd -
cd $OLDPWD
cd -
- cd切换相对路径
cd ..
cd /var/ftp
cd /var
cd ftp/
cd /var
cd ./ftp/
3.ls = list:列出指定目录下的内容,包括文件、子目录
- 如果我们要启用一些选项,它还可以显示出目录下的相关文件的一些属性信息
man ls #获取ls的使用帮助
- 使用格式
ls [OPTIONS]...[FILES]...
- 选项
【1】-a:显示所有文件,包括隐藏文件
【2】-A:显示出-和–之外的所有文件
ls -a
ls -A
ls不带任何参数时,表示当前目录;如果要显示指定路径的话,则指定路径即可
ls -a /var/log
【3】-l:l表示–long,长格式列表,即表示显示文件的详细属性信息
ls -l /var/log
文件属性信息说明:
示例:-rw-r–r-- 1 root root 125122 Feb 9 18:00 dmesg.old
说明:
- -表示文件类型,除了-之外,还有其它的表示如d、c、b、l、s、p
(1) rw-r–r-- :表示文件权限,共分为三组,称为左三位、中三位和右三位:
【1】rw-:文件属主的权限
【2】r–:文件属组的权限
【3】r–:其他用户(非属主、属组)的权限
(2)1:数字表示文件被硬链接的次数
(3)root:第一个root表示文件的属主,文件所属的主任人
(4)root:第二个root表示文件的属组
(5)125122:表示文件的大小,单位是字节
(6)Feb 9:文件最后一次被修改的时间
(7)dmesg.old:文件名
【4】-h:–human-readable,对文件大小做单位换算,换算后的结果可能为非精确值
ls -l -h /var/log #把单位换算成人容易读懂的大小
对于命令而言,如果有两个短选项,那么它们是可以合并在一起的
ls -l -h /var/log
ls -lh /var/log
【5】-d:–directory,查看目录自身属性
ls -l /var/log不能查看log的属性,那么可以用-d选项,看目录自身属性而不是目录内部的文件列表属性
ls -ld/var/log#注意如果只使用-d而没有-l则无意义
注意如果只使用-d而没有-l则无意义,因为-l -d通常结合起来使用
【6】-r:reverse,在排序时逆序显示
ls -lr /var/log
【7】-R:recursive,递归显示
ls -R /var/log
4.cat = concatenate:连接文件并显示在标准输出上,即把文件内容显示出来,
cat /etc/fstab
- 它是文本文件查看器,千万不要cat一个二进制程序文件
那么如何知道文件是不是文本文件呢?使用file命令
file /etc/fstab
cat /etc/fstab
cat /etc/issue
cat /etc/fstab /etc/issue #跟多个文件路径连接并显示
- 用法:
cat [OPTION]... [FILE]...
- cat的选项
【1】-n:–number,给显示的文本行编号
cat -n /etc/fstab
cat -n /etc/fstab /etc/issue
【2】-E:–show-ends, 显示行结束符$
文本文件在磁盘上存储是没有行的,之所以显示出有行是因为文本文件查看工具可以读取行结束符并将其显示解释为行
cat -E /etc/fstab
5.tac = concatenate and print files in reverse,文本文件查看工具,用法同cat
tac [OPTION]... [FILE]...
tac /ect/fstab
tac /etc/passwd
- 选项
【1】-n:–number,给显示的文本行编号
tac -n /etc/fstab
【2】-E:–show-ends, 显示行结束符$
tac -E /etc/fstab
6.file = determine file type:确定文件类型(文件内容的类型)
file /etc/issue
file /bin/ls
- 用法:
file [FILE]...
7.echo = display a line of text:回显命令,后加字符串即可
- 用法
echo [SHORT-OPTION]... [STRING]
echo "i love pdd"
- 选项
【1】-n:do not output the trailing newline不会自动在你自动显示内容完成后换行,即不再执行换行操作
echo -n "i love pdd"
【2】-e:enable interpretation of backslash escapes,让逃逸符生效,或让转义符生效
echo -e "hello \neveryone"
所支持的转义符
转义符 | 含义 |
---|---|
\n | 换行 |
\r | 回车符 |
\ | 反斜线 |
\a | alert(BEL) |
\b | backspace退格,删除前一个字符 |
\c | produce no further output |
\e | escape |
\f | form feed |
\t | 横向制表符 |
\v | 垂直制表符 |
attention echo -e可以实现颜色控制
echo -e "\033[31mhello\033[0m everyone"
- STRING可以使用引号,单引号和双引号均可用:
单引号:表示强引用,变量引用不执行替换
双引号:表示弱引用,变量引用会被替换
echo $SHELL
echo "$SHELL"
echo '$SHELL'
变量引用的正规名:${name}
关机或重启命令
1. shutdown:关机并切断电源之意
- 用法
shutdown [OPTIONS...] [TIME] [WALL...]
OPTIONS:关机还是重启
【1】-h:halt关机
【2】-r:reboot重启
【3】-c:cancel取消关机或重启
TIME:在指定时间关机或重启
【1】now
【2】hh:mm:几点几分
【3】+m:几分钟以后
+0 = now
WALL:系统上有一个命令就叫做wall,在这里shutdown命令会自动发起wall信息告诉所有人要关机或重启了,请立即保存你的所有操作,以免数据丢失
马上关机操作
shutdown -h now
- 选项
-
日期相关命令
background
Linux系统有两套时间,主板上有一个纽扣电池为你的主板上的硬件时钟在供电,即主板上的时间一直在走,即便关机了,纽扣电池有电,一直在供电中
Linux系统启动时从硬件读取日期和时间信息,读取完成后,就不再与硬件相关联,开始靠内核频率计时
【1】系统时钟:date用来查看系统时钟
【2】硬件时钟:clock用来查看硬件时钟
1.date:系统时钟,显示和修改时间,print or set the system date and time
- 用法
【1】显示日期时间
date [OPTION]... [+FORMAT]
FORMAT:格式符
%F full date; same as %Y-%m-%d 年-月-日
%T time; same as %H:%M:%S 小时-分钟-秒
%c locale’s date and time (e.g., Thu Mar 3 23:05:25 2005)
%s 从1970年1月1号(unix元年)0点0分0秒到命令执行那一刻经过的秒数
date
date +%F #年月日
date +%T #时分秒
date +"%F %T" #+只能出现一次,用引号防止空格被解释为其他,表示它们为同一个字符串
date +%F-%T #用短线连接,实现效果同上,年月日时分秒
date +%c
date +%Y # 显示哪一年
date +%m # 哪一月
date +%d #哪一日
date +%H #几点
date +%M #几分
date +%S #几秒
date +%s #seconds since 1970-01-01 00:00:00 UTC,随时间流逝不断变化
# 也可以任意组合它们
date +%Y-%m-%d-%H-%M-%S
【2】设定日期时间
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
date 101008082013.08
2.clock = query or set the hardware clock硬件时钟,同hwclock,显示或设定硬件时钟
which clock
file usr/sbin/clock
- 用法及选项
hwclock [function] [option...]
【1】显示硬件时钟
hwclock
【2】设定时钟
to之前的时间是准确的
-s:–hctosys,以硬件为准,把系统时钟设置为与硬件时钟相同
-w:–systohc,以系统为准,把硬件时钟设置为与系统时钟相同
hwclock -w
hwclock -s
3.cal = display a calendar显示日历
- 用法
cal [options] [[[day] month] year]
cal
cal 2021 #查看指定年份
cal 5 2021 #查看指定月份
其他命令(后续补充…)
which:显示shell命令的全部路径
- 用法
which [options] [--] programname [...]
- 在PATH变量指定的路径中搜索某个系统命令的位置并且返回第一个搜索结果,使用which命令就可以看到某个系统命令是否存在以及执行的到底是哪一个位置的命令。如果你想知道你的命令放在那里了那么可以用which去查找一下。
- “which” 命令只能查找系统命令,不能搜索普通文件。
- 选项
-n 指定文件名长度指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n参数相同但此处的包括了文件的路径。
-a 将PATH目录中可以找到指令均列出不止第一个而已。
-w 指定输出时栏位的宽度。
-V 显示版本信息
whereis
- whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
- 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。
- 用法
whereis [options] [-BMS directory... -f] name...
- 选项(字体颜色是我解锁新玩法设置的)
-b:定位可执行文件。
-m : 定位帮助文件。
-s :定位源代码文件。
-u :搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B : 指定搜索可执行文件的路径。
-M : 指定搜索帮助文件的路径。
-S : 指定搜索源代码文件的路径。
PATH环境变量
echo $PATH
PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,用":"隔开,当您运行一个命令时,Linux在这些目录下进行搜寻编译链接。
which命令与whereis命令的区别
- “whereis” 命令查询的是命令位置和帮助文档的位置;
“which” 命令查询的是命令位置和命令别名。- “whereis” 命令是从数据库中查找数据,数据库不是实时更新的;
“which” 命令是从PATH环境变量指定的路径中查询命令,是实时的。
who
- 显示登录系统的用户。执行who命令可得知目前有那些用户登入系统,单独执行who命令会列出登入帐号,使用的终端机,登入时间以及从何处登入或正在使用哪个X显示器。
- 用法
who [OPTION]... [ FILE | ARG1 ARG2 ]
who
w
- 查看用户的操作系统,管理员若想知道某一时刻用户的行为,只需要输入命令w 即可
w
第一行显示系统的汇总信息,字段分别表示系统当前时间、系统运行时间、登陆系统用户总数及系统平均负载信息。
- 13:33:07 表示执行w的时间是在下午13点33分07秒。
up 2 days, 18:17 表示系统运行时长
1 users 表示当前系统登陆用户总数为1
Load average 与后面的数字一起表示系统在过去~分钟内的负载程度,数值越小,系统负载越轻。
第二行开始构成一个登录用户信息列表,共有8个栏目,分别显示各个用户正在做的事情及该用户所占用的系统资源- USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。
- TTY:用户登陆所用的终端。
- FROM:显示用户在何处登陆系统。
- LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。
IDLE:用户空闲时间,从用户上一次任务结束后,开始记时。
JCPU:以终端代号来区分,表示在这段时间内,所有与该终端相关的进程任务所耗费的CPU时间。
PCPU:指WHAT域的任务执行后耗费的CPU时间。
WHAT:表示当前执行的任务。
- 查看某用户是否登陆系统用户很多的时候,可以在w后面加上某个用户名,则会查看该用户执行任务的情况。
w zhanggp