1.14 tree
Linux tree命令用于以树状图列出目录的内容。
执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。
语法
tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]
参数说明: -a 显示所有文件和目录。 -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。 -C 在文件和目录清单加上色彩,便于区分各种类型。 -d 显示目录名称而非内容。 -D 列出文件或目录的更改时间。 -f 在每个文件或目录之前,显示完整的相对路径名称。 -F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。 -g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。 -i 不以阶梯状列出文件或目录名称。 -I<范本样式> 不显示符合范本样式的文件或目录名称。 -l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。 -n 不在文件和目录清单加上色彩。 -N 直接列出文件和目录名称,包括控制字符。 -p 列出权限标示。 -P<范本样式> 只显示符合范本样式的文件或目录名称。 -q 用"?"号取代控制字符,列出文件和目录名称。 -s 列出文件或目录大小。 -t 用文件和目录的更改时间排序。 -u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。 -x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
实例
以树状图列出当前目录结构。可直接使用如下命令:
tree
2 磁盘管理
2.1 pwd
显示工作目录
执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。
2.2 cd
切换当前工作目录至 dirName
若目录名称省略,则变换 home 目录
2.3 mkdir
建立名称为 dirName 子目录
- -p 确保目录名称存在,不存在的就建一个
2.4 ls
显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
ls [-alrtAFR] [name...]
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出) -h 用"K","M","G"来显示文件和目录的大小。 -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 = ll -r 将文件以相反次序显示(原定依英文字母次序) -t 将文件依建立时间之先后次序列出 -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录) -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/" -R 若目录下有文件,则以下之文件亦皆依序列出
列出根目录()下的所有目录:
# ls / bin dev lib media net root srv upload www boot etc lib64 misc opt sbin sys usr home lost+found mnt proc selinux tmp var
列出目前工作目录下所有名称是 s 开头的文件,越新的排越后面 :
ls -ltr s*
将 /bin 目录以下所有目录及文件详细资料列出 :
ls -lR /bin
列出目前工作目录下所有文件及目录;目录于名称后加 “/”, 可执行档于名称后加 “*” :
ls -AF
find / -name libNativeMethod.so
等同 ll |grep someFile
2.5 df
Linux df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。
语法
df [选项]... [FILE]... 文件-a, --all 包含所有的具有 0 Blocks 的文件系统 文件--block-size={SIZE} 使用 {SIZE} 大小的 Blocks 文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...) 文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024 文件-i, --inodes 列出 inode 资讯,不列出已使用 block 文件-k, --kilobytes 就像是 --block-size=1024 文件-l, --local 限制列出的文件结构 文件-m, --megabytes 就像 --block-size=1048576 文件--no-sync 取得资讯前不 sync (预设值) 文件-P, --portability 使用 POSIX 输出格式 文件--sync 在取得资讯前 sync 文件-t, --type=TYPE 限制列出文件系统的 TYPE 文件-T, --print-type 显示文件系统的形式 文件-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE 文件-v (忽略) 文件--help 显示这个帮手并且离开 文件--version 输出版本资讯并且离开
实例
- 显示文件系统的磁盘使用情况统计:
- 第一列指定文件系统的名称
第二列指定一个特定的文件系统1K-块 1K是1024字节为单位的总内存。用和可用列正在使用中,分别指定的内存量。
使用列指定使用的内存的百分比,而最后一栏"安装在"指定的文件系统的挂载点。
用一个-i选项的df命令的输出显示inode信息而非块使用量。
显示所有的信息:
我们看到输出的末尾,包含一个额外的行,显示总的每一列。
-h选项,通过它可以产生可读的格式df命令的输出:
2.6 mount
用于挂载Linux系统外的文件。
语法
mount [-hV] mount -a [-fFnrsvw] [-t vfstype] mount [-fnrsvw] [-o options [,...]] device | dir mount [-fnrsvw] [-t vfstype] [-o options] device dir
参数
-V:显示程序版本 -h:显示辅助讯息 -v:显示较讯息,通常和 -f 用来除错。 -a:将 /etc/fstab 中定义的所有档案系统挂上。 -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。 -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。 -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。 -s-r:等于 -o ro -w:等于 -o rw -L:将含有特定标签的硬盘分割挂上。 -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。 -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。 -o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。 -o sync:在同步模式下执行。 -o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。 -o auto、-o noauto:打开/关闭自动挂上模式。 -o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async. -o dev、-o nodev-o exec、-o noexec允许执行档被执行。 -o suid、-o nosuid: 允许执行档在 root 权限下执行。 -o user、-o nouser:使用者可以执行 mount/umount 的动作。 -o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。 -o ro:用唯读模式挂上。 -o rw:用可读写模式挂上。 -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
实例
将 /dev/hda1 挂在 /mnt 之下。
#mount /dev/hda1 /mnt
将 /dev/hda1 用唯读模式挂在 /mnt 之下。
#mount -o ro /dev/hda1 /mnt
将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。
#mount -o loop /tmp/image.iso /mnt/cdrom
3 文档编辑
3.1 grep
查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式
预设grep指令会把含有范本样式的那一列显示出来。
若不指定任何文件名称,或是所给予的文件名为"-",则grep指令会从标准输入设备读取数据。
-r或–recursive 此参数的效果和指定"-d recurse"参数相同。
-v或–revert-match 反转
反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
grep -v test *test*
实例
1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
$ grep test test* #查找前缀有“test”的文件包含“test”字符串的文件 testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行 testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行 testfile_2:Linux test #列出testfile_2 文件中包含test字符的行
2、以递归的方式查找符合条件的文件
例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
$ grep -r update /etc/acpi #以递归的方式查找“etc/acpi” #下包含“update”的文件 /etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.) Rather than /etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.) Rather than /etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update
3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
$ grep-v test* #查找文件名中包含test 的文件中不包含test 的行 testfile1:helLinux! testfile1:Linis a free Unix-type operating system. testfile1:Lin testfile_1:HELLO LINUX! testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM. testfile_1:THIS IS A LINUX TESTFILE! testfile_2:HELLO LINUX! testfile_2:Linux is a free unix-type opterating system.
3.2 ag
这里隆重介绍该命令比grep快千百万倍!闪电级别迅速搜索!
类似ack, grep的工具, 它来在文件中搜索相应关键字。
- 它比ack还要快 (和grep不在一个数量级上)
- 它会忽略.gitignore和.hgignore中的匹配文件
如果有你想忽略的文件,你需要将(congh .min.js cough*)加入到.ignore文件中
它的命令名称更短:-)
在ubuntu下,我们可以通过sudo apt-get install silversearcher-ag
安装
使用
关于文本搜索,最常见的用法是:
ag "string-to-search"
ag 会遍历当前目录下的文本文件,在每个文件的每一行中查找 “string-to-search” 这种模式,把文件名、行号和匹配的内容高亮显示出来。由于模式可以是一个正则表达式,使得搜索功能极为强大。
如果想在某个指定的目录下搜索,或只搜索某个文件的内容,在搜索的字符串后面加上路径就行:
ag "string-to-search" /path/to/directory
除此以外,ag -G 提供了强大的过滤功能,使搜索在特定的文件中进行。下面的例子只搜索 java 类型的文件:
ag -G ".+\.java" "string-to-search" /path/to/directory
ag 根据输入智能判定大小写的匹配方式。如果查询的字符串只含有小写字符,使用大小写不敏感的匹配方式;如果出现了大写字符,就改为大小写敏感的匹配方式。如果想要直接使用不敏感的匹配方式,请用 ag -i 选项。
另一个很有用的选项是 ag -w 的全词匹配,它要求匹配的字符串前后都需要有合适的分隔符。
如果想要搜索不满足特定模式的行,用 ag -v 对搜索结果取反。
最后,如果只关心有哪些文件匹配(而不在意文件的内容),可以用 ag -l 显示有匹配的文件名,类似的 ag -L 显示没有任何匹配的文件名。
4 系统管理
4.1 groupadd
创建一个新的工作组,新工作组的信息将被添加到系统文件中
- 语法
groupadd(选项)(参数)
g:指定新建工作组的[id](http://man.linuxde.net/id "id命令"); -r:创建系统工作组,系统工作组的组ID小于500; -K:覆盖配置文件“/ect/[login](http://man.linuxde.net/login "login命令").defs”; -o:允许添加组ID号不唯一的工作组。</pre>
- 参数
组名:指定新建工作组的组名 - 实例
建立一个新组,并设置组ID加入系统
groupadd -g 344 linuxde
此时在/etc/passwd文件中产生一个组ID(GID)是344的项目
4.2 ps
显示当前进程 (process) 的状态
- -A 显示进程信息
- -u user 显示指定用户信息
- -ef 显示所有命令,连带命令行
- pstree |grep java
查看进程树
4.3 ifconfig
IP 地址配置,可以使用 setup 命令启动字符界面来配置
4.4 uname
用于显示系统信息
uname可显示电脑以及操作系统的相关信息。
- 语法
uname [-amnrsv][--help][--version]
- 参数说明:
-a或--all 显示全部的信息。 -m或--machine 显示电脑类型。 -n或-nodename 显示在网络上的主机名称。 -r或--release 显示操作系统的发行编号。 -s或--sysname 显示操作系统名称。 -v 显示操作系统的版本。 --help 显示帮助。 --version 显示版本信息。
实例
- 显示系统信息
- 显示计算机类型
- 显示计算机名
- 显示操作系统发行编号
- 显示操作系统名称
- 显示系统时间
4.5 adduser
用于新增使用者帐号或更新预设的使用者资料。
adduser 与 useradd 指令为同一指令(经由符号连结 symbolic link)。
使用权限:系统管理员。
adduser是增加使用者。相对的,也有删除使用者的指令,userdel。语法:userdel [login ID]
参数
参数说明:
- -c comment 新使用者位于密码档(通常是 /etc/passwd)的注解资料
- -d home_dir 设定使用者的家目录为 home_dir ,预设值为预设的 home 后面加上使用者帐号 loginid
- -e expire_date 设定此帐号的使用期限(格式为 YYYY-MM-DD),预设值为永久有效
- -f inactive_time 范例:
实例
添加一个一般用户
# useradd kk //添加用户kk
为添加的用户指定相应的用户组
# useradd -g root kk //添加用户kk,并指定用户所在的组为root用户组
创建一个系统用户
# useradd -r kk //创建一个系统用户kk
为新添加的用户指定/home目录
# useradd-d /home/myf kk //新添加用户kk,其home目录为/home/myf //当用户名kk登录主机时,系统进入的默认目录为/home/myf
rpm -aq|grep php
查看安装介质
grep someText *
在当前目录所有文本中查找
#env
环境配置,相当 window 下 set
env |grep PATH
查看环境变量
export
相当于 set classpath
echo
输出变量名
Linux 查看端口占用
lsof
lsof(list open files)是一个列出当前系统打开文件的工具.
- 语法
- lsof 查看端口占用语法格式:
lsof -i:端口号
- 实例
查看服务器 8000 端口的占用情况:
netstat
- 查看端口
mv
用来为文件或目录改名、或将文件或目录移入其它位置。
语法
mv [options] source dest
mv [options] source... directory
参数说明:
- -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
- -f: 在mv操作要覆盖某已有的目标文件时不给任何指示;
mv参数设置与运行结果
mv 文件名 文件名 :将源文件名改为目标文件名
mv 文件名 目录名 :将文件移动到目标目录
mv 目录名 目录名 :目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名
mv 目录名 文件名 :出错
实例
将文件 aaa 更名为 bbb :
mv aaa bbb
将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。
mv info/ logs
再如将/usr/student下的所有文件和目录移到当前目录下,命令行为:
$ mv /usr/student/* .
rm -r
递归删除, -f 表示 force
somefile
清空文件内容
which java
查看 java 进程对应的目录
who
显示当前用户
users
显示当前会话
zip -r filename.zip filesdir
某个文件夹打 zip 包
unzip somefile.zip
解压 zip 文档到当前目录
gunzip somefile.cpio.gz
解压 .gz
cpio -idmv < somefile.cpio
CPIO 操作
ps auxwww|sort -n -r -k 5|head -5
按资源占用情况来排序,第一个 5 表示第几列,第二个 5 表示前几位
hostname -i
显示本机机器名,添加 i ,显示 etc/hosts 对应 ip 地址
rpm
rpm -ivh some.rpm
安装软件
rpm -Uvh some.rpm
更新软件
rpm -qa |grep somesoftName
是否已安装某软件