一、Linux文件管理类命令:
(1)ls
list 用来显示目录列表
语法: ls [OPTION]… [FILE]..
常见的opotion选项:
-l:-long 显示整个目录下所有文件和目录或单个文件的详细信息。
-a:–all 显示出所有文件和目录,包括'.'和'..'在内的所有隐藏文件。
-A: –almost-all 显示出所有文件和目录,但是除了'.'和'..'之外的所有隐藏文件。
-h:–human-readable 打印出人们可快速理解的文件大小,即对文件大小进行换算。
-i:–inode 打印出文件i节点编号
-d:–directory 列出目录本身的信息信息
-r:–reverse 逆序排列
-R:–recursive 递归排列
-t:按照文件和目录的更改时间排序
-Z : –context 查看安全上下文,对配置selinux时生效
(2)cat
concatenate,是一个文本文件查看和连接工具。
语法:cat [OPTION]… [FILE]…
常见的opotion选项:
-n 或 –number 由 1 开始对所有输出的行数编号
-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
(3)tac
tac实际就是cat反过来写。
(4)head
语法:head [OPTION]…[FILE]…
常见的opotion选项:
-n # 显示开头#行信息
-# 等于head -n #,默认开头10行
(5)tail
语法:tail [OPTION]…[FILE]…
常见的opotion选项:
-n # 显示结尾#行信息
-# 等于tail -n #,默认结尾10行
-f 查看文件尾部内容结束后不退出,跟随显示新增的行
(6)cp
copy 拷贝
单源复制: cp [opotion]… [-T] SOURCE DEST
多源复制: cp [opotion]… SOURCE … DIRECTORY
cp [opotion]… -t DIRECTORY SOURCE
单源复制:
如果dest不存在,则事先创建此文件,并复制源文件的数据流到dest中
如果dest存在:
如果dest是非目录文件,则覆盖目标文件
如果dest是目录文件,则先在dest目录下创建一个与源文件同名的文件,并复制其数据流
多源复制:
如果dest不存在,错误
如果dest存在:
如果dest是非目录文件,错误
如果dest是目录文件:分别复制每个文件至目标目录中,并保持原名
常用选项:
-i:交互式复制,及覆盖之前提醒用户确认
-f:强制覆盖目标文件
-r:递归复制目标
-d:复制符号链接本身,而非其指向的源文件
-a:-dR –preserver=all,archive 用于实现归档
–preserve=
mode:权限
owership:属主和属组
timestamp:时间戳
context:安全标签
xattr:扩展属性
links:符号链接
all:上述全部属性
(7)mv
move
mv [opotion]… [-T] SOURCE DEST
mv [opotion]… SOURCE… DIRECTORY
mv [opotion]… -t DIRECTORY SOURCE…
常用选项
-i:交互式
-f:force
(8)rm
remove
rm [opotion]… file…
常用选项;
-i:interactive
-f:force
-r:recursive
删除目录 rm -rf /PATH/TO/DIR
危险操作:rm -rf /*
特别提醒bash编程中可能会遇见灾难性的bug,自己踩过的坑:
#!/bin/bash
read -p "test file" file
rm -rf /${file}
file变量如果为空,那结果就是rm -rf /,所以安全的编程建议 rm -rf /${file:?var file is emple}
(9)mkdir
mkdir [opotion]… dirctory…
-p:自动按需创建父目录
eg:mkdir -p /a/b/c
mkdir /a
mkdir /a/b
mkdir /a/b/c
-v:verbose,显示详细过程
-m MODE:直接给定权限
mkdir -m 700 /test 则test目录的权限应该为 drwx______
注意:路径基名方为命令的作用对象,基名之前的的路径必须存在
(10)rmdir
rmdir [opotion]…directory…
-p:删除某个目录后,如果其父目录为空,则一并删除之:
eg:rmdir /a/b/c 如果删除c后b目录为空则删除b,如果删除b后a目录为空则删除a
-v:显示过程
(11)more和less
分屏查看命令:more和less
more命令
more file
特点:翻屏至文件尾部后自动退出
less命令
less file
特点:翻屏至文件尾部后不会退出,按q退出
(12)install
install命令和cp命令类似,都可以将文件/目录拷贝到指定的地点。但是,install允许你控制目标文件的属性。
install [opotion]… [-T] SOURCE DEST
install [opotion]… SOURCE… DIRECTORY
install [opotion]… -t DIRECTORY SOURCE…
常见的opotion选项:
-d:所有参数都作为目录处理,而且会创建指定目录的所有主目录
eg:install -d a/b/c 与 mkdir -p a/b/c 相同
-D: 创建<目的地>前的所有主目录,然后将<来源>复制至 <目的地>
eg: install -D x a/b/c 与 mkdir a/b && cp x a/b/c 相同
-m: –mode=模式 自行设定权限模式
二、bash的基本特性
(1)命令历史:shell进程会其会话中保存此前用户提交执行过的命令
history
定制history的功能,可通过环境变量实现:
HISTSIZE:shell进程可保存的命令历史的条数
HISTFILE:持久存储的文件
HISTFILESIZE:持久存储历史命令的文件大小
-c 情空命令历史
-d offset 删除指定命令历史
-w 把历史命令写入文件
-r 从文件读取命令历史到列表中
调用历史命令
!# 调用历史#号命令
!! 调用上个命令
!string 调用最近string开头的命令
调用上一条命令的最后一个参数
快捷键 esc,.
字符串 !$
控制命令历史记录的方式:
环境变量:HISTCONTROL
ignoredups:忽略重复的命令
ignorespace:忽略以空白字符开头的命令
ignoreboth:以上两者同时生效
(2)命令补全:
shell程序在接受到用户执行的请求,分别完成之后,最左侧的字符串会被当作命令:
命令处理机制:
查找内部命令
根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名
给定的打头字符串如果唯一标识某个命令程序文件,则直接补全
不能唯一标示某命令程序文件,再敲击tab健一次,会给出列表
(3)路径补全:
在给定的起始路径下,以对路径的打头字符串逐一匹配起始路径下每个文件:
tab:
如果能唯一标示,则直接补全
否则,再一次tab,给出列表
(4)命令行展开:
~:自动展开为用户的家目录,或指定的用户的家目录:
{}: 可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
(5)命令的执行状态结果
命令执行的状态结果:
bash通过状态的返回来输出此结果:
成功:0
失败:1-255
命令的执行完成之后,其状态返回值保存与bash的特殊标量$?中
命令正常的执行时,有的还回有命令返回值:
根据命令及其功能不同,结果各不相同:
(6)bash的基于特性:引用
强引用:''
弱引用:""
命令引用:“
(7)bash基础特性:快捷键
ctrl+a:跳转至命令行首
ctrl+e:跳到命令行尾
ctrl+u: 删除行首至光标所在处之间的所有字符
ctrl+k:删除行尾至光标所在处之间的所有字符
ctrl+l:清屏,相当于clear
三、命令行展开联系练习:
1、创建/tmp目录下的:a_c,a_d,b_c,b_d
mkdir -p {a,b}_{c,d}
2、创建/tmp/mylinux目录下的:
../mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
mkdir -pv {bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
四、文件的元数据:
(1)文件的元数据包括文件大小,数据块大小,文件类型,设备号,inode节点号,权限,属主属组,安全上下文,atime,mtime,ctime。
stat [opotion]…[file]
stat -L file 跟随符号链接到真正的文件或目录
stat -f /bin 显示该文件系统的状态
touch 修改文件的时间戳
语法:touch [OPTION]… FILE…
-a:仅修改文件的访问时间戳(atime)
-c:当需要修改的文件不存在时不创建文件
-m:仅修改文件的修改时间戳(mtime)
-t:修改时间戳
eg: touch -t 201612112205.10 test
五、定义命令别名及引用另一个命令的执行结果:
alias 定义别名
alias la=‘ls -a’
可以通过alias命令进行当前虚拟终端下定义的命令别名,如果需要需要定义该用户的命令别名,将命令写入改用户家目录下的~/.bashrc下,如果需要定义系统的命令别名/etc/bashrc下
引用命令
~]$ echo $(date)
~]$ echo `date`
六、练习
(1)显示/var目录下所有以1开头,以一个小写字母结尾,且中间至少出现一位数字(可能有其他字符)的文件或目录。
ls /var/1*[[:digit:]]*[[:lower:]]
(2)显示/etc目录下,以任意的数字开头,且以非数字结尾的文件或目录。
ls /etc/[[:digit:]]*[^[:digit:]]
(3)显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录。
ls /etc/[^[:alpha:]][[:alpha:]]*
(4)在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22
touch tfile-$(date +%Y-%m-%d-%H-%M-%S)
(5)复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
cp -r /etc/p*[^[:digit:]] /tmp/mytest1/
(6)复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中
cp -r /etc/*\.d /tmp/mytest2
(7)复制/etc目录下所有以1或m或n开头,以.conf结尾的文件到/tmp/mytest3中
cp /etc/{1,m,n}*\.conf /tmp/mytest3
原创文章,作者:N25_随心,如若转载,请注明出处:http://www.178linux.com/63149
评论列表(1条)
赞~总结的还是比较详细的,前面的命令能简单说下怎么使用会更好点~~加油~