马哥教育网络班21期+第二周练习
目录管理
-
ls (list):列出目录及内容
ls [OPTION]... [FILE]... -l:长格式显示文件的详细属性信息 -rwxr-xr-x. 1 root root 1273 Jul 10 19:45 anaconda-ks.cfg 第1段:文件属性段 左起第一位:文件类型 -:普通文件 (file) d:目录文件 (directory) b:块设备文件 (block) c:字符设备文件 (character) l:符号链接文件 (symbolic link file) p:命名管道文件 (pipe) s:套接字文件 (socket) 后面9位:文件权限,称为mode,每3位一组,每一组:rwx(读,写,执行) r:读,Read w:写,Write x:执行,Excute .:表示文件有隐藏属性 lsattr命令可以查看 第2段: 数字1:文件被硬链接的次数 第3段: 第一个root:owner,属主,文件拥有者 第4段: 第二个root:group,属组,文件所属的组 第5段: 1273:size,文件大小,默认单位:字节 第6段: Jul 10 19:45:timestamp,时间戳,文件最近一次被修改的时间 访问:access 修改:modify 改变:change,metadata,元数据 第7段: anaconda-ks.cfg:文件名 -h,--human-readable:做单位换算,以容易理解的格式显示文件大小,与 -l 一起使用 -a,--all:显示所有文件,包括以 .开头的隐藏文件 . :表示当前目录 ..:表示父目录 -A,--almost-all:显示不包含 . 和 .. 以外的所有文件 -d,--directory:显示目录自身属性,通常与 -l 一起使用 -i,--inode:index node,显示文件的索引节点号 -r,--reverse:逆序显示 -R,--recursive:递归显示,显示子目录中的内容 示例: 列出当前目录下所有文件和目录的详细信息,并转换显示大小(含隐藏文件) ls -alhR
-
cd:change directory,切换当前工作目录
cd [dirName] cd 或 cd ~:进入当前用户的主目录 cd ~USERNAME:进入指定用户的主目录 cd -:在当前目录和前一次所在目录之间切换
-
pwd:查看当前工作目录
pwd [OPTION]... -L:显示当前工作目录连接路径,默认 pwd 同 pwd -L -P:显示当前工作目录的物理路径
-
mkdir:创建空目录
mkdir [OPTION]... DIRECTORY... -p:递归创建目录,创建目录时先创建父目录 -v:显示创建过程信息 示例: 创建目录 /mnt/test/x/m,y mkdir -pv /mnt/test/x/m /mnt/test/y mkdir -pv /mnt/test/{x/m,y} /tmp下创建目录 a_b,a_c,d_b,d_c mkdir -pv /tmp/{a,d}_{b,c} /tmp下创建以下树形结构目录: 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 -p /tmp/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}}
-
tree:查看目录树
tree [OPTION...] [DIRECTORY...] -a:显示所有文件及目录 -d:只显示目录 -f:显示完整路径 -L level:显示指定层级目录树 -P pattern:只显示指定 pattern 匹配的路径
-
rmdir:删除空目录
rmdir [OPTION]... DIRECTORY... -p:删除子空目录后父目录为空时一并删除 -v:显示删除过程信息
文件管理
-
文件命名规则
1、长度不能超过255个字节 2、不能使用 / 做文件名 3、严格区分大小写
-
stat:显示文件或文件状态
stat [OPTION]... FILE... -f:显示文件系统状态 -t:以简要信息显示文件状态值 三个时间戳: atime,access time:访问时间,读取文件内容 mtime,modify time:修改时间,改变文件内容(数据) ctime,change time:改变时间,元数据发生改变
-
touch:改变文件的时间戳,文件不存在创建文件
touch [OPTION]... FILE... -a:只改变访问时间(atime) -c,--no-create:只改变文件时间戳,不创建文件 -m:只改变修改时间(mtime) -t STAMP:指定时间改变时间戳 [[CC]YY]MMDDhhmm[.ss] 示例: 在/tmp目录下创建以file开头,后跟当前日期和时间的文件,文件名格式如:file-1970-01-01-00-00-00 touch file-$(date +%F-%H-%M-%S) 或 touch file-`date +%F-%H-%M-%S` 修改file开头的文件的时间戳,指定时间为 1970-01-01 00:00:00 touch -t 197001010000.00 file*
-
file:检测文件类型
file [OPTION] FILE... -b:只列出文件类型,不显示文件名 -f<FILENAME>:指定文件,其中有一个或多个文件名,依序列出文件名及检测文件类型
-
cp:copy,复制文件或目录
cp [OPTION]... SOURCE DESCRIPTION cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... -a,--archive:归档复制,保留所有文件权限 -p:保留源文件属主、属组、时间戳 -f,--force:忽略交互提示,强制复制 -i,--interactive:复制前交互提示 -r,-R,--recursive:递归复制目录 -l,--link:只硬链接文件不复制 -s,--symbolic-link:只符号链接文件不复制 -L,--dereference:源为链接文件时,不复制文件链接属性 -P,--no-dereference:源为链接文件时,复制文件链接属性 示例: 归档/etc/rc.d/init.d 到/tmp 目录下,归档名为init.d.bak cp -a /etc/rc.d/init.d /tmp/init.d.bak 复制/etc/inittab 到/tmp目录下,重命名为 inittab.bak,保留原有属性 cp -p /etc/inittab /tmp/inittab.bak 复制/tmp下a_b、a_c、d_b、d_c 到/tmp/bak 目录下 cp -r /tmp/{a,d}_{b,c} /tmp/bak 复制/etc/rc.local 到/tmp目录下,保留文件链接属性 cp -P /etc/rc.local /tmp/rc.local 复制/etc目录下passwd、inittab、rc.d/rc.local 到/tmp/bak目录下,并使用 -t选项 cp -t /tmp/bak /etc/{passwd,inittab,rc.d/rc.local}
-
install:复制文件并设定权限
install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTORY SOURCE... install [OPTION]... -d DIRECTORY... -d:创建目录 -t:先指定目标目录,再指定源文件信息 -g:设定文件属组 -o:设定文件属主 -m:设定文件拥有权限 示例: 创建目录 /tmp/x/y/z 和 /tmp/x/m/n install -d /tmp/x/{y/z,m/n} 复制 /tmp/passwd 到 /tmp/x 目录下,并指定文件属主、属组为 apache,文件权限为 700 install -g apache -o apache -m 700 /tmp/passwd /tmp/x
-
rm:删除文件或目录
rm [OPTION]... FILE... -f,--force:忽略交互提示,强制删除 -i:删除前交互提示 -r,-R,--recursive:递归删除目录
-
mv:move,移动文件或目录
mv [OPTION]... SOURCE DESCRIPTION mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... -f,--force:覆盖前不提示,强制覆盖 -i,--interactive:覆盖前提示 -t:先指定目标目录,再指定源文件信息 示例: 移动/tmp/bak目录下passwd、inittab、rc.local文件到 /tmp目录下,并覆盖/tmp/rc.local mv -f /tmp/bak/{passwd,inittab,rc.local} /tmp/
文本处理
-
cat:连接并显示文本文件内容
cat [OPTION]... FILE... -E,--show-ends:显示行结束符 -n,--number:显示行号 示例: 查看/tmp/passwd文件内容,并输出行号及行结束符 cat -nE /tmp/passwd 将/tmp/passwd、/tmp/inittab合并为 test文件 cat /tmp/passwd /tmp/inittab > /tmp/test
-
tac:逆序显示文件内容
-
more:分页显示,默认向下翻页
more [options] FILE [...] -d:显示翻页及退出提示 -number:指定每页显示的行数 +/:查找文件第一个出现指定字符串的行,并从该行前两行开始显示 +number:从指定行号开始显示
-
less:分页显示,向下或向上翻页
less [options] File... -e:文件显示到最后时,自动退出 -N:显示行号 键盘操作: h 查看帮助信息 q,Q 退出命令 b 向下一页 d 向下半页 u 向上半页 y 向上一行 PgUp 向上一页 PgDn 向下一页 Space 向下一页 Enter 向下一行
-
head:查看文件前N行
head [OPTION]... [FILE]... -n:指定显示多少行,不指定时默认显示 10行
-
tail:查看文件后N行
tail [OPTION]... [FILE]... -f:查看文件尾部,不退出,等待显示后续追加至此文件的新内容 -n:指定显示多少行,不指定时默认显示 10行
-
cut:分段截取内容
cut [OPTION]... [FILE]... -d:指定字段分隔符,默认是空格 -f:指定显示的字段 -f 1:显示第一字段 -f 1,5:显示第一和第五字段 -f 1-3:显示第一到第三字段 示例: 以冒号为分隔符,显示/etc/passwd文件中用户及使用shell cut -d":" -f1,7 /etc/passwd
-
sort:文本排序
sort [OPTION]... [FILE]... -f,--ignore-case:忽略字符大小写 -n,--numeric-sort:以数值大小排序 -r,--reverse:降序排序 -t:指定字段分隔符 -k:以指定字段进行排序 -u,--unique:排序后去重 示例: 以第三个字段对/etc/passwd文件进行排序 sort -t":" -k3 -n /etc/passwd
-
uniq:查找相邻重复行
uniq [OPTION]... [FILE]... -c,--count:显示重复行出现的次数 -d,--repeated:仅显示重复行 -D:显示所有重复的行 -u,--unique:仅显示不重复的行 示例: 显示当前系统中所有用户使用的shell cut -d":" -f7 /etc/passwd | sort | uniq
-
wc:文本统计
wc [OPTION]... [FILE]... -c,--bytes:统计文件包含多少字节 -m,--chars:统计文件包含多少字符 -l,--lines:统计文件包含多少行 -w,--words:统计文件包含多少单词 -L,--max-line-length:统计最长的一行包含多少字符 示例: 统计/etc目录下以大小写P 开头的文件个数 ls /etc/[pP]* | wc -l
-
tr:转换或删除字符
tr [OPTION]... SET1 [SET2] -d:删除字符集中出现的所有字符 示例: /tmp/passwd文件中所有字符替换为大写 tr 'a-z' 'A-Z' < /tmp/passwd
bash特性
-
bash特性
1、命令历史、命令补全 2、管道、重定向 3、命令别名 4、命令行编辑 5、命令行展开 6、文件名通配 7、变量 8、编程
-
命令执行状态
echo $?:查看返回值 0表示成功 非0表示失败
-
命令行编辑
光标跳转 Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u:删除光标至命令行首的内容 Ctrl+k:删除光标至命令行尾的内容 Ctrl+l:清屏
-
命令历史
history:查看命令历史 -c:清空命令历史 -d OFFSET [n]:删除指定位置命令 -w:保存命令至历史文件(.bash_history) 命令历史使用技巧: !n:执行命令历史中的第 n 条命令 !-n:执行命令历史中倒数第 n 条命令 !!:执行上一条命令 !string:执行命令历史中最近一条匹配 string 开头的命令 !$:引用前一个命令的最后一个参数 !$ 同 {Esc,.} 或 {Alt+.} 命令补全:搜索PATH环境变量所指定的每个路径下以给出的字符串开头的可执行文件,如果有多个,使用两次Tab可以显示列表,否则直接补全 路径补全:搜索给出的起始路径下的每个文件名,并试图补全
-
变量
环境变量 PATH:命令搜索路径 HISTSIZE:命令历史缓冲区大小(默认为 1000)
-
命令别名
定义别名 alias CMDALIAS='COMMAND [options] [arguments]' Shell中定义的别名的有效范围仅限当前Shell进程 取消别名 unalias CMDALIAS
-
命令引用
命令替换:$(COMMAND) 或 `COMMAND` 支持的引号 (反引号)``:命令替换 (双引号)"":弱引用,可以实现变量替换 (单引号)'':强引用,不进行变量替换
-
文件名通配
通配符号 *:任意长度的任意字符 ?:任意单个字符 []:匹配指定范围内的任意单个字符 [abc],[a-z],[A-Z],[0-9],[a-zA-z],[0-9a-zA-Z] [:space:]:空白字符 [:punct:]:标点符号 [:lower:]:小写字母 [:upper:]:大写字母 [:alpha:]:大小写字母 [:digit:]:数字 [:alnum:]:数字和大小写字母 [^]:匹配指定范围外的任意单个字符
练习
-
显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录
ls /var/l*[0-9]*[a-z] ls /var/l*[[:digit:]]*[[:lower:]]
-
显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录
ls /etc/[0-9]*[^0-9] ls /etc/[[:digit:]]*[^[:digit:]]
-
显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
ls /etc/[^a-zA-Z][a-zA-Z]* ls /etc/[^[:alpha:]][[:alpha:]]*
-
复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
cp -r /etc/p*[^0-9] /tmp/mytest1 cp -r /etc/p*[^[:digit:]]
-
复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中
cp -r /etc/*.d /tmp/mytest2
-
复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中
cp /etc/{l,m,n}*.conf /tmp/mytest3 cp /etc/[lmn]*.conf /tmp/mytest3
原创文章,作者:N21-garyshan,如若转载,请注明出处:http://www.178linux.com/24420
评论列表(1条)
写的很好,把一些常用的命令都列举出来了,有的问题还用了多种方法解答,值得表扬