bash的常见命令及文章查看命令
回顾:
FHS,命令及bash命令历史
FHS:
/bin,/sbin, /lib, /lib64, /etc
/home,/root
/boot
/media,/mnt
/proc,/sys
/tmp
/srv
/opt
/dev
/usr
bin,sbin,lib,lib64,share,local,include,....
/var
cache,lib,log....
命令:which,whereis,who,w,alias,unalias
命令历史:history
一个程序是由4个文件组成:
二进制文件,配置文件,库文件,帮助文件
二进制文件存放在:/bin /sbin
库文件存放在:/lib /lib64
配置文件存放在:/etc
帮助文件存放在:/usr/
bash的基础特性:
命令补全:
shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当做命令
命令处理机制:
查找内部命令:
根据PATH环境变量中设定的目标,自左而右逐个搜索目录下的文件名,找到与命令名称相同的文件后,就将其发起为一个进程。
命令补全操作:
给定的打头字符串如果能唯一标识某命令程序文件,则直接补全,不能唯一标识的某命令程序文件,再击一次tab键一次,会给出列表。
路径补全:
与命令补全的机制不完全一样,根据给定的起始路径补全。
目录管理类的命令:
mkdir,rmdir
mkdir: make directory
语法:mkdir[OPTION]... DIRECTORY...
目录有基名(basename)与目录名(dirname)之分,
注意:路径基名才是命令的操作对象。基名之前的路径名必须存在。
选项:
-p: 创建嵌套的多层子目录
-v: verbos,详细显示命令的执行过程
-pv常结合使用
-mMODE: 直接给定权限(mode是用户在创建目录时指定的权限,不指定则默 认权限,mode就是选项参数)
rmdir
全称:removeempty directory //删除空目录(empty:空的)
注意:rmdir只能删除空目录
语法:rmdir[OPTION]... DIRECTORY...
选项:
-p: 删除某目录后,如果其父目录为空,则一并删除。
-v: 显示执行过程
问题一:如何创建 /tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b ?
问题二:如何创建/a/d,/ a/c,/ b/d,/ b/c
上面的这两个问题,引出bash命令行的展开。
bash的基础特性之一:命令行展开
~:自动展开为用户的家目录,或指定的用户的家目录;
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
例如:/tmp/{a,b}相当于 /tmp/a /tmp/b
创建目录完成后,可以用tree命令查看,tree命令需要安装,可以用rpm安装,也可以用yum安装
解决上面的两个问题:
问题一:
mkdir-pv /tmp/x/{y1/{a,b},y2}
演示:
[root@localhost Packages]# mkdir -pv /tmp/x/{y1/{a,b},y2}
mkdir: created directory `/tmp/x'
mkdir: created directory `/tmp/x/y1'
mkdir: created directory `/tmp/x/y1/a'
mkdir: created directory `/tmp/x/y1/b'
mkdir: created directory `/tmp/x/y2'
[root@localhost Packages]# tree /tmp/x
/tmp/x
├── y1
│ ├── a
│ └── b
└── y2
问题二:
mkdir-pv /{a,b}/{c,d}
演示:
[root@localhost Packages]# tree /{a,b}
/a
├── c
└── d
/b
├── c
└── d
问题三:创建如下目录结构:(使用命令行的展开方式创建)
/tmp/mysysroot/
bin
sbin
etc
sysconfig
network-scripts
usr
bin
sbin
local
bin
sbin
etc
lib
lib
lib64
var
cache
log
run
tree命令:
tree:tree - listcontents of directories in a tree-like format.(翻译:树状目录的格式列表内容)
tree //不跟选项,单独执行tree,显示当前目录结构
选项:
-d: List directories only.(翻译:只列出目录)
-L level: Maxdisplay depth of the directory tree.(翻译:最大显示目录树的深度) 指定显示目录的层级,不指定level,则全部显示
举例:tree -L 2 /tmp //只显示出两层目录
bash的基础特性——命令的执行状态结果
命令执行的状态结果:
bash通过状态返回值来输出此结果
成功:0
失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量$?中
注意:命令的执行状态结果保存在变量$?中,要获取的时候,在命令执行完后就要立即获取,不能中间再执行命令,这个变量只能保存一个命令的执行状态结果,并且只能获取最近的执行命令的结果。
演示:
[root@localhost ~]# ls
anaconda-ks.cfg Desktop Downloads install.log.syslog Pictures Templates
core.10718 Documents install.log Music Public Videos
[root@localhost ~]# echo $?
0
[root@localhost ~]# ls adfadf
ls: cannot access adfadf: No such file ordirectory
[root@localhost ~]# echo $?
2
[root@localhost ~]#
命令正常执行时,有的还会有命令返回值,根据命令及其功能不同,结果各不相同。
引用命令的执行结果:
$(COMMAND) 或 `COMMAND` //``是反引号
举例:要创建一个以创建时间为名称的目录:
命令引用是非常重要的。
bash基础特性——引用
强引用: ' '
弱引用: " "
命令引用: ` ` $()
bash基础特性——快捷键
ctrl+a: 跳转至命令行首
ctrl+e: 跳转至命令行尾
ctrl+u: 删除命令行首到光标处之间的字符
ctrl+k: 删除命令行尾到光标后之间的字符
ctrl+l: 等同于clear清屏
文件查看类命令:
cat,tac, head, tail, more, less
cat
演示操作:
[root@localhost~]# cat/etc/rc.d/init.d/functions
[root@localhost~]# cat -n/etc/rc.d/init.d/functions
分屏查看命令:
more和less
more
[root@localhost~]# more /etc/rc.d/init.d/functions
more查看文件内容时,在文件的左下角会显示显示文件百分之多少内容
查看more显示的文件的操作命令:
空格: 向下翻屏,但是more翻到文件尾部后,就退出阅读了,不能再往前翻屏 了。无需使用q退出,但是也可以使用q直接退出
b: 向上翻屏
less
[root@localhost~]# less /etc/rc.d/init.d/functions
less命令其实就是man 命令调用的,man手册页查看时的操作,就是less的操作。
head命令:
查看文件的前n行
语法:
head[OPTION]... [FILE]...
head默认查看文件的前10行
选项:
-n#或-#: 想查看文件的指定的前#行
演示:
[root@localhost ~]# head -n 5 /etc/rc.d/init.d/functions
# -*-Shell-script-*-
#
# functions Thisfile contains functions to be used by most or all
# shellscripts in the /etc/init.d directory.
#
[root@localhost ~]# head -5 /etc/rc.d/init.d/functions //functions:函数
# -*-Shell-script-*-
#
# functions Thisfile contains functions to be used by most or all
# shellscripts in the /etc/init.d directory.
#
[root@localhost ~]#
tail命令:
查看文件的后n行
语法:
tail[OPTION]... [FILE]...
选项:
-n# 或 -#: 查看文件的指定的后#行
-f: 查看文件尾部内容结束后不退出,跟踪显示新增的行。
演示:
[root@localhost ~]# tail -n 20 -f /etc/rc.d/init.d/functions
结束跟踪,用命令ctrl+c
注意:这个tail -f 这个选项命令,在以后人工监控日志更新时,是非常有用的。
stat命令:
displayfile or file system status(翻译:显示文件或文件系统的状态)
语法:
stat[OPTION]... FILE...
stat的选项很少用,我们记住stat后加文件就可以。
statFILE //file是指定的文件
[root@localhost ~]# stat/etc/rc.d/init.d/functions
File: `/etc/rc.d/init.d/functions'
Size: 25430 Blocks: 56 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1706481 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access:2016-09-21 21:09:15.014999428 -0400
Modify:2016-09-21 21:09:15.012999479 -0400
Change: 2016-09-21 21:09:15.012999479 -0400
[root@localhost ~]#
在stat命令中,最重要的就是关心这三个文件的时间戳
每一个文件,都有两类数据:
元数据:metadata
数据: data
元数据是文件的相关属性,名称,大小....
数据就是文件真实内容了。
Access:2016-09-21 21:09:15.014999428 -0400 //最近访问时间,即打开文件的时间
Modify:2016-09-21 21:09:15.012999479 -0400 //最近更改时间,是文件数据改变
Change:2016-09-21 21:09:15.012999479 -0400 //最近改动时间,是文件的元数据改变
注意:文件的更改时间发生变化,则文件改动时间一定发生变化,因为,更改时间,对应的是文件的内容,当文件内容发生变化时,可能文件的大小就会发生变化,而改动时间是对应文件的元数据,那改动时间就一定会发生变化。
上面的三个时间戳,被简写成:atime(访问), mtime(更改), ctime(改动).
文件的三个时间戳是可以手动改动的,
更改时间戳,就是用命令,touch
touch命令:
touch - change file timestamps(翻译:更改文件的时间戳)
语法:
touch[OPTION]... FILE...
当用touch单独执行更新一个已经存在的文件的时间戳时,不加任何选项,则文件的三个时间戳都会被改变。
演示:
第二种情况,当我们用touch一个不存在文件时,则会创建该文件
演示:
[root@localhost~]# cd hello/
[root@localhosthello]# ls
[root@localhosthello]# touch myfile
[root@localhosthello]# ls
myfile //显示创建了一个新的文件。
[root@localhosthello]# file myfile
myfile:empty //空文件
[root@localhosthello]#
创建一个文件名带有空格的文件:(就需要用到转义字符)
[root@localhost hello]# ls
myfile
[root@localhost hello]# touch a b
[root@localhost hello]# ls
a b myfile
[root@localhost hello]# touch c\ d
[root@localhost hello]# ls
a b c d myfile
[root@localhost hello]#
选项
-c: --no-create, do not create any files表示:文件存在则更新时间戳,文件不存在则不 进行创建动作。
-a: 仅修改access times
-m: 仅修改modify times
-tSTAMP(STAMP的格式:[[CC]YY]MMDDhhmm[.ss]):手动指定更新的时间戳。
演示:
[root@localhost hello]# stat myfile
File: `myfile'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 2364574 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-09-21 21:42:54.206998481 -0400
Modify: 2016-09-21 21:42:54.206998481 -0400
Change: 2016-09-21 21:42:54.206998481 -0400
[root@localhost hello]# touch -m -t 0209171200.56 myfile
[root@localhost hello]# stat myfile
File: `myfile'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 2364574 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-09-21 21:42:54.206998481 -0400
Modify: 2002-09-17 12:00:56.000000000 -0400
Change: 2016-09-21 21:58:22.401998303 -0400
[root@localhost hello]#
注意:change time是不能手动更改的。
转载于:https://blog.51cto.com/11857750/1869378
bash的常见命令及文章查看命令相关推荐
- Linux 如何查看命令所在位置/查看命令文件所在位置
文章目录 which type whereis which which 命令的作用是在环境变量 PATH 所指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果. 查看命令详情,猛戳 < ...
- linux命令只有一个文件,一天一个Linux基础命令之文件查看命令more
more:查看文件内容并分屏显示 1.命令格式 more [-d] [-num] [+/pattern] [+linenum] [file...] 2.命令功能 Linux more命令类似cat,不 ...
- linux系统信息 命令,Linux_Linux系统信息查看命令大全,系统 # uname -a # - phpStudy...
Linux系统信息查看命令大全 系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinf ...
- linux打开txt文件命令_Linux怎么查看命令文件位置
请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. Linux which命令 本文主要讲解Linux whic ...
- Linux 命令之 which -- 查找并显示给定命令的绝对路径(查找命令的位置/查询命令的位置/搜索命令的位置/查看命令的位置)
文章目录 一.命令介绍 二.选项参数 三.参考示例 (一)查找 java 命令的位置 一.命令介绍 which 命令的作用是在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结 ...
- Linux--用history查看历史命令如何在history命令时,查看历史命令执行时间
文章目录 一.history 用法汇总 history--列出全部历史命令 history 数字#--列出最近的#条命令 history -c--将目前shell中的所有history命令消除,对命令 ...
- Linux中查看命令帮助手册
目录 Linux中查看命令帮助手册 查看命令类型 --- type Linux中对应的命令类型 帮助命令 help 命令 用法1 help 内部命令 用法2 命令 --help 命令的部分语法符号解析 ...
- Linux之查看命令帮助 --help man
Linux之查看命令帮助 1. 查看命令帮助方式 --help 使用说明: 命令 --help man 使用说明: man 命令 查看命令帮助的目的说明: 查看命令帮助目的是查看命令选项信息的 --h ...
- Linux入门学习(九)—— 怎么查看命令的帮助文档、怎么查看系统配置文件的帮助文档?
引言:上期回顾(想要学习的童鞋可以点击看看) 上一章讲诉了怎么快速查找文件,以及怎么找到一个命令所在位置,那么这一章就来讲怎么查看命令的帮助文档.在Linux命令中,我们是不会每个命令都会讲到 ...
最新文章
- 第十五届全国大学生智能汽车竞赛竞速赛规则(讨论稿)
- 云服务器 文件 传输,云服务器文件 传输
- SpringCloud分布式事务,版本一:未加事务版本
- 搜索推荐炼丹笔记:评论是怎么影响推荐的?
- flask tutorial = make a blog :) flask 搭建博客系统从零开始!
- 200815-C指针高级和链表
- .NET SDK-Style 项目(Core、Standard、.NET5)中的版本号
- 【转】ABP源码分析二十八:ABP.MemoryDB
- android 480p分辨率,[RK3399][Android7.1] HDMI显示屏(副屏)调试记录小结
- iOS开发——基础篇——iOS开发 Xcode8中遇到的问题及改动
- mysql多表连接的几种写法
- AFNetwork 作用和使用方法具体解释
- echarts柱形图x轴y轴互换_echarts X Y轴互换后显示问题
- collections.Counter 用法
- Leet Code题(2)——整数反转
- Android 的录音分享特性
- GitHub:30%的新增代码出自AI工具Copilot之手
- 嵌入式linux使用A7680C 4G 网卡
- 模拟【The Biggest Water Problem】+模拟【明明的随机数】
- LaTeX学习准备——TexLive和TeXStudio的安装
热门文章
- nginx-0.1.0文件分析3:ngx_send.c
- 企业创新系列之:青苹之末
- XPath基本概念(一)
- python selenium 文件上传_Python+Selenium学习--上传文件
- html在线热点工具,Heatmap.js 强大的 HTML5 画布 WEB 网页在线热点图插件 - 资源分享...
- vconsole插件_手机前端开发调试利器 – vConsole
- 计算机从网络上启动,如何设置计算机以从网络驱动器启动
- java 高级数据类型_【高级数据类型】- 2.通道的更多种类
- html实现点赞评论功能_html的canvas实现画布功能
- 4 相机切换_新手必读 | iPhone手机的自带相机操作完全指南