本篇主要介绍了在Linux / Mac 系统下,一些基本的bash shell命令。
遍历目录 cd cd destinationcd命令可以带单个参数destination,用以制定你想切换到的目录名。如果用户没有指定目标路径,将会切换到当前用户主目录。
目录路径参数可以使用两种方式表达:
绝对文件路径
用户可在虚拟目录中采用==绝对文件路径==来引用目录名。绝对文件路径定义了在虚拟目录结构中该目录的确切位置,以虚拟目录的根目录开始,相当于目录的全名。
即以“/”开头的目录的绝对路径,当当前所在的目录已经在工作目录中时,可以使用 cd / 回到根目录。
相对文件路径
==相对文件路径==允许用户指定一个基于当前位置的目录文件路径,而无需再从根目录开始。相对文件路径不以代表根目录的正斜线(/)开头,而以目录名(如果用户准备切换到当前工作目录下的一个目录)或是一个表示基于用户当前目录的相对位置的特殊字符开始。有两个特殊字符:
单点符(.),表示当前目录; 双点符(..),表示当前目录的父级目录。例如:
cd ../Desktopcd ./Doc
cd ../../etc 列表命令 ls 基本列表功能 命令区分大小写。
ls命令的基本格式会显示当前目录下的文件和目录。
ls命令输出的列表是按字母排序的(按列排序而不是按行排序)。如果用户用的是支持彩色的终端模拟器(==Mac 电脑终端默认是没有色彩的,可以百度添加配置文件==),ls命令还可以用不同的颜色来区分不同类型的文件。 LS_COLORS 环境变量控制着这个功能。
ls -F :该命令会在结果中的目录名后面加正斜线(/),以方便用户在输出中分辨它们。类似的,他会在可执行文件后面加个星号,以便找出可在系统上运行的文件。 ls -a :该命令可以将隐藏文件和目录一起显示出来。 ls -R :该命令可以列出当前目录下的包含的目录中的文件。如果有很多个目录,这个输出会很长。 修改输出信息ls命令并没有输出每个文件额太多相关信息。需要显示更多的信息,需要使用改命令:
ls -l :该参数会产生长列表格式的输出,包含了目录中每个文件的更多的相关信息:
这种超列表格式的输出在每一行中列出了单个文件或目录。除了文件名,输出中还有其他有用信息。输出的第一行显示了目录中包含的块的总数。之后每一行都包含了关于文件(或目录)的下述信息:
文件类型,比如目录(d)、文件(-)、字符型文件(c)或者块文件(b); 文件的权限; 文件的硬链接总数; 文件属主的用户名; 文件属主的组名; 文件的大小(已字节为单位); 文件的上次修改时间; 文件名或目录名。 完整的参数列表在进行文件管理时,ls命令的很多参数可能会派上用场。针对ls运行一下man命令,你就能看到可用来修改ls命令输出的参数就有好几页。 man ls
ls命令采用两种格式的命令行参数:
单字母参数; 全字母参数;单字母参数通常是由英文破折号开始,全字参数则更易于看懂,通常以双英文破折号开始。许多参数都有单字母和全字母两种版本,而有些则只有一种。
==Mac 终端下,测试了几个命令并不用输入“ ”,直接输入“-”加后面的命令即可,还有就是下表的一些命令,在Mac 并没有响应。目前不知道是测试输入错误还是本身并不支持。== 单字母 全字 描述 -a all 输出包括以“.”打头的隐藏文件 -A almost-all 不要输出“.”和“..”文件 author 输出每个文件的作者 -b escape 输出不可打印的字符的八进制值 block-size=size 按照size字节的大小来计算大小块(快数) -B ignore-backups 不要列出名称中包含波浪线(~)的条目(波浪线用来表示备份的副本) -c 按最后一次修改时间排序 -C 按列输出条目 color=when 何时使用彩色(always,never或者auto) -d directory 列出目录条目而非内容,并且不用跟踪符号链接 -F classify 给条目追加文件类型标识符 file-type 只在部分文件类型(非可执行文件)后追加文件类型标识符 format=word 将输出格式化成across(交叉)、commas(逗号)。horizontal(水平)、long(长)、single-column(单列)、verbose(详细)或vertical(垂直) -g 输出除文件属主之外所有信息 group-directories-first 在文件之前列出所有目录 -G no-group 在长列表输出格式下,不显示组名 -h human-readable 打印大小,K表示千字节 si 和-h相同,但进率为1000,而非1024 -i inode 显示每个文件的所有值(inode) -l 按长列表输出格式显示 -L dereference 对于链接文件,显示原文件信息 -n numeric-uid-gid 显示数字类型的userid和groupid以替代名字 -o 在长列表格式下不显示组名 -r reverse 在输出文件和目录时,反转排序的顺序 -R recursive 递归的列出子目录的内容 -s size 输出每个文件的块大小 -S sort=size 按文件大小排序输出 -t sort=time 按文件修改时间排序输出 -u 输出文件的最后访问时间而非最后修改时间 -U sort=none 不要将输出排序 -v sort=version 将文件版本排序输出 -x 按行而非按列输出条目 -X sort=extension 按文件扩展名排序输出如果需要,也可以一次使用多个参数。多个双破折线参数必须分开输入,而多个单波折线可以组合成一个字符串跟在一个单破折线后面。例如: ls -alis 。 单命令无关顺序。
过滤输出列表由前面的例子可以知道,默认情况下,ls命令会输出目录下的所有文件。
ls命令还支持在命令行下定义过滤器。它会用过滤器决定应该在输出中显示哪些文件和目录。
这个过滤器就是个进行简单文本匹配的的字符串,可以在要用的命令行参数后添加这个过滤器:
ls -l 匹配字符串
当用户指定特定的 文件名称 作为过滤器时,ls命令只会显示那个 文件 的信息。
有时候当不知道要找的文件的确切名称。ls命令可以识别标准通配符,并在过滤器中用它们来进行模式匹配:
问好代表一个字符。 星号代表零个或多个字符。问号可用在过滤器字符串中替代任意位置的单个字符。
例如:
ls -l mypro?ls -l mypro* 处理文件
bash shell 提供了很多在Linux文件系统上操作文件的命令。
创建文件 touch可以使用touch命令来轻松创建空文件:
touch testtouch命令创建了指定的新文件,并将当前用户名作为文件的属主。
创建的文件大小是零,touch命令只会创建一个空文件。
如果再次使用: touch test 命令,当前已经存在test文件,该命令行会使已有文件的访问时间和修改时间进行改变,而不改变文件的内容。
touch -a :只修改访问时间; touch -m :只改变修改时间;默认情况下,touch使用当前时间,可以使用:
touch -t 参数加上特定的时间戳来制定时间 例如:
touch -t 201612251200 test 复制文件 cp在文件系统中将文件和目录从一个位置复制到另一个位置就需要使用cp命令。
最基本用法里,cp需要两个参数,源对象和目标对象:
cp source destination当source的destination参数都是文件名时,cp命令将源代码复制到一个新文件,并且以destination命名。新文件就像全新的文件一样,有新的创建时间和修改时间。如果目标文已经 存在 了,那么cp命令将会提示你是否要覆盖已有文件。
同大多数命令一样,cp命令也有一些可以提供帮助的命令行参数( 当前其中部分命令行在Mac下面并没有效果 ):
参数 描述 -a 归档文件,并保留它们现在的属性(linux文件归档的意思是为文件或目录备份,建立归档文件) -b 创建已存在目录文件的备份,而非覆盖它 -d 保留 -f 强制覆盖已存在的目标文件,不提示 -i 在覆盖目标文件之前提示 -l 创建文件链接而非复制文件 -p 如果可能保留文件属性 -r 递归的复制文件 -R 递归的复制目录 -s 创建一个符号链接而非复制文件 -S 覆盖默认的备份文件的后缀(默认是~) -u 仅在源文件比目标文件新的情况下复制(相当于更新) -v 详细模式,解释到底发生了什么 -x 仅限于当前文件系统的复制(这句话的背景是:Linux可同时挂在多个不同的文件系统类型的存储设备)