文件及目录类
列出当前目录中的文件和子目录(ls)
ls [-参数] [name...]
# 列出所有根目录
ls /
# 列出所有txt文件
ls *.txt
参数:
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-d 只列出目录(不递归列出目录内的文件)。
-l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。
-r 倒序显示文件和目录。
-t 将按照修改时间排序,最新的文件在最前面。
-A 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
-R 递归显示目录中的所有文件和子目录。
显示当前工作目录的路径(pwd)
pwd [--help][--version]
# 查看当前所在目录
pwd
切换工作目录(cd)
# dirName:要切换的目标目录,可以是相对路径或绝对路径。
cd [dirName]
cd /usr/bin
创建新目录( mkdir)
# -p 确保目录名称存在,不存在的就建一个。
mkdir [-p] dirName
mkdir folder
# folder目录下建立test文件夹,加了-p参数后,若folder不存在则直接新建。
mkdir -p folder/test
删除空目录(rmdir)
# -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
rmdir [-p] dirName
# 删除目录test
rmdir test
# 递归删除目录
rmdir -p 目录1/test
删除一个文件或者目录
rm:删除文件或目录
rm file_name
rm -r 目录1/test # 递归删除目录及其内容
rm [参数] name
rm test.txt
# 删除目录必加参数r
rm -r homework
参数
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
复制文件或目录(cp)
cp [选项] 源文件 目标文件
# 复制文件并重命名
cp file.txt /path/to/destination/newfile.txt
# 递归复制目录及其内容
cp -r /path/to/source_dir /path/to/destination/
参数
-r 或 -R:递归复制目录及其内容(用于复制目录)。
-i:交互模式,覆盖前提示用户确认。
-f:强制复制,覆盖目标文件而不提示。
-v:显示详细的复制过程(verbose)。
-p:保留文件的原始属性(如权限、时间戳等)。
-a:归档模式,等同于 -dpR,保留所有文件属性和递归复制目录。
-u:仅当源文件比目标文件新时才复制(更新模式)。
-l:创建硬链接而不是复制文件。
-s:创建符号链接(软链接)而不是复制文件。
移动或重命名文件或目录(mv)
mv [参数] source dest
# 文件 aaa 改名为 bbb
mv aaa bbb
# info 目录放入 logs 目录中
mv info/ logs
参数
-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-n: 不要覆盖任何已存在的文件或目录。
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
创建空文件或更新文件的时间戳(touch)
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
# 修改文件"testfile"的时间属性为当前系统时间
touch testfile
参数:
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
–no-create 不会建立新档案。
–help 列出指令格式。
–version 列出版本讯息。
连接和显示文件内容(cat)
cat [选项] [文件]
# 查看文件内容
cat filename
# 创建文件
cat > filename
参数说明:
-n:显示行号,会在输出的每一行前加上行号。
-b:显示行号,但只对非空行进行编号。
-s:压缩连续的空行,只显示一个空行。
-E:在每一行的末尾显示 $ 符号。
-T:将 Tab 字符显示为 ^I。
-v:显示一些非打印字符。
将文本输出到标准输出(echo)
# 追加内容进test.txt
echo 内容>> test.txt
# 显示字符串
echo "Hello, World!"
逐页显示文本文件内容(more/less:)
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
# 逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示
more -s testfile
# 从第 20 行开始显示 testfile 之文档内容。
more +20 testfile
参数:
-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数
less [参数] 文件
# 查看文件
less log2013.log
# ps查看进程信息并通过less分页显示
ps -ef |less
参数:
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向上翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
在文件中搜索指定文本(grep)
grep [options] pattern [files]
# 在文件 file.txt 中查找字符串 "hello"
grep hello file.txt
常用参数:
-i:忽略大小写进行匹配。
-v:反向查找,只打印不匹配的行。
-n:显示匹配行的行号。
-r:递归查找子目录中的文件。
-l:只打印匹配的文件名。
-c:只打印匹配的行数。
修改文件或目录的权限(chmod)
chmod [-cfvR] [--help] [--version] mode file
# 将文件 file1.txt 设为所有人皆可读取
chmod a+r file1.txt
chmod 777 file1.txt
参数:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
- 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
chmod也可以用数字来表示权限
r=4,w=2,x=1
若要 rwx 属性则 4+2+1=7;
若要 rw- 属性则 4+2=6;
若要 r-x 属性则 4+1=5。
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本
在文件系统中查找文件和目录(find)
find [路径] [匹配条件] [动作]
# 查找当前目录下名为 file.txt 的文件:
find . -name file.txt
# 查找 /home 目录下大于 1MB 的文件:
find /home -size +1M
参数:
路径 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
匹配条件 中可使用的选项有二三十个之多,以下列出最常用的部份:
-name pattern:按文件名查找,支持使用通配符 * 和 ?。
-type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
-size [±]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
-mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。
-user username:按文件所有者查找。
-group groupname:按文件所属组查找。
动作: 可选的,用于对匹配到的文件执行操作,比如删除、复制等。
find 命令中用于时间的参数如下:
-amin n:查找在 n 分钟内被访问过的文件。
-atime n:查找在 n24 小时内被访问过的文件。
-cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
-ctime n:查找在 n24 小时内状态发生变化的文件(例如权限)。
-mmin n:查找在 n 分钟内被修改过的文件。
-mtime n:查找在 n*24 小时内被修改过的文件。
在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。
正数应该表示时间之前,负数表示时间之内。
例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。
关于时间 n 参数的说明:
+n:查找比 n 天前更早的文件或目录。
-n:查找在 n 天内更改过属性的文件或目录。
n:查找在 n 天前(指定那一天)更改过属性的文件或目录。