文件及目录类
列出当前目录中的文件和子目录(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 天前(指定那一天)更改过属性的文件或目录。