定义别名格式,不加参数即查询别名:
alias command aliasname
使用unalias aliasname取消别名
不取消别名执行原命令
\aliasname
"aliasname"
/path/name
· basename 用于显示文件夹或者文件的基本名称
如以下实例:
basename /etc/ 输出结果为etc
basename /etc/passwd 输出结果为passwd
· bc 内置计算器
可以进行进制转换如:
ibase=16指把16禁止转换为10进制
obase=8指把十进制转换为8进制
· cd 切换目录
cd ~username切换到指定用户home目录
cd - 切换到前一次工作目录
cd !$ 把上一个命令的参数作为此次执行参数
· cp 复制文件
命令格式:
cp [option] source dest即cp 选项 复制源 复制目的地
· 当源为一个文件
1. 如果目标文件不存在,则新建并将源内容填充
2. 如果目标存在且是文件,将源内容覆盖。(此操作会丢失数据建议使用"-i"选项)
3. 如果目标是目录则新建与源文件同名文件并将源文件填充
· 源source可以为多个,此时dest目的地必须为目录否则报错
· 如果源为目录,则必须使用"-r"选项
1. 如果dest不存在在创建目录并复制
2. 如果存在但dest为文件则报错
3. 如果dest为目录,将在dest下新建同名目录并复制
常用参数
-v:复制过程可见
-i:覆盖前提示
-n:不覆盖(如果与"-i"同时使用时要注意顺序)
-r、R:递归复制目录即目录下所有内容(复制目录是必须加)
-d:如果源为软链接则只将链接文件复制
-p:将源文件属性一同复制
-a:等同于-dpr
-f:强制覆盖,(在当前没有对目标文件权限但对目标文件所在目录有权限的情况下是先将目标文件删除并新建同名文件)
-u:只复制源中更新或目标中不存在的文件
--backup=numbered 在目标存在时,覆盖前加数字后缀备份如:cp --backup=numbered /test ./
会把/test复制到当前目录并且当前目录下重名文件加数字后缀
· cat 查看文件内容
cat filename
cat可以使用IO重定向实现更高级的功能
· date 显示时间,通常用作变量
-d 显示指定字符串时间
date -d "-3 day" +%F%A 显示三天前日期,星期
+%F 以年-月-日格式显示时间
+%T 以时-分-秒显示
+%Y 年
+%m月
+%d 日
+%H 时
+%M 分
+%S 秒
+%a 英文星期缩写
+%A 英文星期全拼
+%w 数字方式显示星期
date -s "2017-12-01 15:20:03"设置当前日期时间
· du -sh /path 显示指定目录大小
· echo 显示信息
echo $SHELL 显示当前登录shell(用来显示变量内容)
echo nihao > /dev/tty2 向指定终端发送信息
echo nihao >> test.txt 向文件末尾添加内容
-n 显示内容不换行
-E 不使用解释功能(默认)
-e 使用解释功能
"\a"发出警告音
"\b"退格
"\c"不换行
"\n"换行
"\t"插入tab
"\r"光标移到行首
下面的内容不属于echo命令的范围,但可能会经常用到,故放到一起
echo $(command)或'command'引用命令执行结果,反向单引号
echo $[ ]或$(( )) 进行运算
echo $[变量名]或'$变量名' 引用变量,单引号
由于echo也常用来显示变量,这里也把常用的变量放在一起
PS1,控制命令提示符格式
PATH,系统环境变量
SHELL,记录当前登录终端
· enable 显示和管理内部命令
不加选项和参数的的时候显示当前SHELL即bash支持的内部命令,可以使用type command 查看一个命令是否属于内部命令(内部命令集成于SHELL内部,不同的shell程序会有不同的内部命令,以下内容基于bash其他shell未作尝试)
-n command 禁用一个内部命令,不加参数显示已禁用内部命令列表
enable command不加选项启用一个内部命令
-a 显示所有内部命令,包括已禁用
相关概念,外部命令以及hash
外部命令指存于硬盘上的命令,系统通过PATH变量寻找外部命令位置,已经运行过的外部命令会被系统保存可以通过hash命令进行管理
· hash 管理外部命令缓存表
-l 查看所有已缓存命令
-d name 删除指定缓存
-p path name 将命令完整path定义别名name并加入缓存
-r 清空缓存表
-t name 查看指定别名路径
· file 显示指定文件的文件类型(linux下文件扩展名不敏感,在无法确定文件类型的时候可以使用files /path/filename查询指定文件的文件类型)
· free 显示系统内存使用情况
支持以指定单位显示,如“-k 、-m”或者使用-h系统自动选择合适的单位显示。
-s second 指定间隔时间(单位为秒)持续查看内存使用
如:free -s 3 指每隔3秒在屏幕输出内存使用情况
· history 历史命令管理
~/bash_history 用户登出时将当前终端历史命令写入,重新登陆时读取
-a 将历史记录写入文件
-n 读取未加载历史记录
-r 从文件读取历史加到history
-c 清空历史
相关变量 相关设置文件/etc/profile
HISTSIZE:命令记录条数,默认6系500,7系1000
HISTFILE:指定记录文件,默认.bash_history
HISTFILESIZE:命令历史记录文件的历史条数
常用快捷指令:
command !^ 用上一条命令的第一个参数做cmd的参数
!$ 上一个命令的最后一个参数
!* 全部参数
!:n 上一个命令的第n个参数
如:上一条命令为 ls /root /tmp /usr
则 ls !^ ls !$ ls !:2 ls !*分别等同于
ls /root ls /usr ls /tmp ls /root /tmp /usr
关于历史命令的详细内容可以参考:
· ls 列出目录的内容或指定目录
用法:ls [option] [path]
-a 显示所有内容包含隐藏文件
-l 长列出,默认已经定义别名“ll=ls -l”
-R 递归列出
-ld 显示目录和符号链接信息本身,而不显示目录下或者链接指向的文件。
-L 如果目标为软连接,则指向链接文件
-1 分行列出(单列显示)
-t 按照mtime排序
-S 按文件大小降序排列
-r反向倒序排列
-U按目录存档顺序排序
-X按文件名后缀顺序
-Z 显示selinux的context
-n 以UID和GID代替长列出里所属用户和所属组的显示
-i 显示文件inodes
-ut 按atime(读取时间)从新到旧排序
-c 按照ctime排序
--time=atime /path 显示指定文件读取时间access time
--time=ctime /path 显示指定文件状态更改时间ctime
--full-time 列出完整的日期和时间
相关概念
· 元数据
元数据是文件系统管理文件创建的和文件本身数据分开的关于文件属性信息的数据。
· 三个时间戳:
可以使用stat命令查看文件所有状态信息即inode
atime:访问时间,即当读取文件后会刷新
mtime:修改时间,当文件内容被更改之后刷新
ctime:改变时间,当文件元数据改变刷新
3. touch 创建空文件和刷新文件时间
当touch一个已存在的文件,会刷新该文件所有时间
-a 改变atime和ctime
-m 改变mtime和ctime
-t YYMMDDhhmm.ss指定时间戳这个参数格式和命令帮助里的[[CC]YYMMDDhhmm.ss]]效果相同。(CC为年份中的世纪部分也就是年份前两位)详细信息可以参考下面的文章:每日一个linux命令,touch
4. inode文件索引节点
inode的概念和文件系统管理文件有关,这里只通过一个例子简单说明一下,更多详细的信息,可能会在单独下一篇吧。之所会有人把这个称作索引是因为inode存储的并不是数据本身而是文件的各种属性。举个例子,你有一个大箱子,这个箱子被分割成了很多个小格子,里面放了很多的东西,很显然当你需要找这个东西的时候如果翻遍每一个格子显然效率低下,怎么办呢,你可以留一部分格子不存放东西,用来存放标签,每个标签对应着一个东西,并且每个标签都有一个编号,这个编号就叫inode号。标签上写着对应东西的各种属性,比如大小、所有人、存放位置等等。那这些存放着对应文件各种属性的数据我们叫它inode表。操作系统在访问硬盘上的文件时只需要根据inode表的信息就可以访问到对应文件。
a. inode和mv
同样的,如果是在同一个设备(即同一分区)执行mv命令,那么文件系统也只是将inode表中文件路径的属性进行变更,不会对文件本身进行任何操作
b. inode和rm
由于操作系统是通过inode表访问文件,所以在执行rm的时候系统只是把对应的inode号释放,并不会对文件数据本身进行操作
c. 补充:inode会占用一定的硬盘空间
a. 不同的分区对应的是独立的文件系统,也就是说inode是不跨分区的,不同的分区下会存在相同的inode。
b. inode编号数量有系统根据磁盘大小分配,所以当有海量小文件的情况下会出现inode编号耗尽而无法创建新文件的情况。可以使用df -i查看分区的inode使用情况
c. 某些特殊情况下可以通过删除inode号来删除一些无法正常删除的文件
d. 目录是一种特殊的文件,除了目录本身的inode目录的数据内容存放的是目录下文件的inode信息(并非inode)
e. inode损坏会导致文件的数据无法访问,在确定文件数据没有损坏的情况下可以进行恢复
e. 软连接和硬链接
a. 软链接是一个单独的文件,拥有独立的inode。等同于win中的快捷方式。
b. 硬链接和源文件本质上是一个文件,共享inode。简单理解就相当于一个人的不同姓名,也因此,硬链接并不能跨分区存在。(参考inode部分内容)
c. 用ln命令可以创建软链接或硬链接
ln filename linkname创建名为linkname的filename的硬链接
ln -s filename linkname创建名为linkname的filename的软链接
f. 通配符:ls命令支持通配符,但通配符不止支持ls命令
##![]中括号内的内容代表一个字符,所有下表中带有中括号的内容匹配的都是一个字符
##!{}大括号可以用来打印重复字符串的简化形式
##!如echo file{1,2,3}等同于echo file1 file2 file3
echo {1..5}等同于echo 1 2 3 4 5
echo {1..3}{a..c}遍历组合等同于
echo 1a 1b 1c 2a 2b 2c 3a 3b 3c
* | 任意多个字符包括零个 | ? | 任意单个字符 |
~ | 当前用户home目录 | ~- | 前一个工作目录 |
~A | A的home目录 | [0-9] | 数字 |
[abcd] | 列表中的任一字符 | [^abcd] | 除列表中的字符 |
[:digit:] | 任意数字 | [:lower:] | 任意小写字母 |
[:upper:] | 任意大写字母 | [:alpha:] | 任意大小写字母 |
[:alnum:] | 任意数字字母 | 以上为常 | 用内容 |
[:blank:] | 水平或空白字符 | [:punct:] | 标点符号 |
[:print:] | 可打印字符 | [:xdigit:] | 16进制字符 |
· lsof 可以查看进程打开的文件,打开文件的进程,进程打开的端口等
########似乎比较重要,但所讲不多,以后提到在进行更新
· mv 移动、重命名(此命令与cp命令相似,可参考cp命令选项和参数)
用法:mv [选项] [参数]
-i 交互模式
-b 当目标存在,覆盖前创建一个备份
-f 若目标存在,直接覆盖
-u 当源文件比较新或者目标文件不存在时才执行操作
可以通过定义别名实现类回收站功能
自行百度
· screen 会话管理
-ls列出所有会话
-S name 创建指定名称的新会话
-x name 加入指定名称会话
-r name 恢复指定会话
exit 退出并关闭会话
不加选项默认创建名称为"终端名-主机名"的新会话
· shutdown 关机 [opt]可以为空
shutdown [opt] time [message] time为空时默认+1
-r 重启
-h 关机
-c 取消计划关机
now立即执行
+x x分钟后关机
hh:mm 指定时间计划关机
· strace 查看系统调用
· ltrace查看库调用
原文地址:http://blog.51cto.com/13672361/2093379