本篇博客记录了在 Linux 系统中常用的命令,以备后查。
chown
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。
通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
语法
chown [options] [所有者][:[组]] 文件...
参数
-c:显示更改的部分的信息
-f:忽略错误信息
-h:修复符号链接
-R:处理指定目录以及其子目录下的所有文件
-v:显示详细的处理信息
-deference:作用于符号链接的指向,而不是链接文件本身
示例
1、将文件 abc.txt 的所有者设置为 xdhuxc,所属组设置为 jessie。
chown jessie:xdhuxc abc.txt
2、把文件 abc.txt 所属的组设置为 jessie
chown :jessie abc.txt
3、将akhdie目录及其所有子目录和所有文件到新的用户xdhuxc和用户组jessie
chown -R jessie:xdhuxc akhdie/*
ln
ln命令的功能是为某一个文件在另外一个位置建立一个同步的链接。 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接它就可以,不必重复的占用磁盘空间。
语法
ln [参数] [源文件或目录] [目标文件或目录]
链接的分类
链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
软链接
- 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 软链接可以 跨文件系统 ,硬链接不可以
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
硬链接
- 硬链接,以文件副本的形式存在。但不占用实际空间。
- 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中才能创建
注意:
1、ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
2、ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
参数
-b:删除,覆盖以前建立的链接
-s:软链接(符号链接)
-v:显示详细的处理过程
-i:交互模式,文件存在则提示用户是否覆盖
-f:强制执行
-n:把符号链接视为一般目录
-d:允许超级用户制作目录的硬链接
示例
1、给文件给文件创建软链接,为abc.log文件创建软链接abc_link,如果abc.log丢失,abc_link将失效.
ln -s abc.log abc_link
2、给文件创建硬链接,为abc.log创建硬链接abc_link,abc.log与abc_link的各项属性相同
ln abc.log abc_link
3、给目录创建软链接
ln -sv /usr/local/src /home/xdhuxc/src
说明:
- 目录只能创建软链接。
- 目录创建链接必须用绝对路径,相对路径创建会不成功,会提示:符号连接的层数过多 这样的错误。
- 在链接目标目录中修改文件都会在源文件目录中同步变化。
使用场合
1、软链接适用场景(相当于windows的的快捷方式)
- 在文件系统中多处共享同一个较大文件时,使用软链接就可以避免创建多个副本。
- 维护动态库文件的版本时,使用软链接,在升级库文件后,只需修改软链接的源文件,而使用该库的程序则不需要修改。
2、硬链接使用场景
- 其实是一个指针,指向文件索引节点,系统并不为它重新分配inode.通过使用硬链接可达到备份数据(实际是备份节点)的效果。
mkdir
mkdir 命令用于创建目录
语法:
mkdir [options] directory_name
参数
-p,--parents:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
-m:-mode=模式,设定权限<模式>
-v,--verbose:每次创建新目录都显示信息
示例
1、在当前目录下,建立一个名为 directory_name 的子目录。
mkdir directory_name
2、在当前目录下的 directory_name 目录中,建立一个名为 sub_directory_name 的子目录。 若 directory_name 目录原本不存在,则建立一个。若不加 -p,且原本 directory_name 目录不存在,则产生错误。
mkdir -p directory_name/sub_directory_name
3、创建权限为777的目录abc
mkdir -m 777 abc
sudo
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
语法
sudo [options] others
选项
-V:显示版本编号;
-l 显示出自己(执行 sudo 的使用者)的权限;
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码);
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell;
示例
1、指定以用户xdhuxc权限执行命令
sudo -u xdhuxc
2、显示sudo设置
sudo -L
3、以root权限执行上一条命令
sudo !!
4、以 xdhuxc 用户编辑 /home/xdhuxc/www 目录中的 index.html 文件
sudo -u xdhuxc vim ~www/index.html
echo
用于字符串的输出,一般起到一个提示符的作用
语法
echo 字符串
参数:
-e:若字符串中出现以下字符,则加以特殊处理,而不会将它当成一般字符对待。 特殊字符有:
\a 发出警告声
\b 删除前一个字符
\c 最后不加上换行符号
\f 换行但光标仍旧停留在原来的位置
\n 换行且光标移至行首
\r 光标移至行首,但不换行
\t 插入tab
\v 与\f相同
\\ 插入\字符
\nnn 插入nnn(八进制)所代表的ASCII字符
- help 显示帮助
- version 显示版本信息
示例
1、显示普通字符串
echo "I will be better!"
或 # 输出为:I will be better!
echo "I will be better!"
2、显示转义字符
echo "\"I will be better!\"" # 输出为:"I will be better!"
3、显示变量
echo "$name will be better!"
4、显示换行或不换行
echo -e "OK! \n" # -e 开启转义 \n 换行
或
echo -e "OK! \c" # -e 开启转义 \c 不换行
5、显示结果定向至文件
echo "I will be better!" > mylife
6、原样输出字符串,不进行转义或取变量,用单引号
echo '$name\"' # 输出结果为:$name\"
7、显示命令执行结果,使用反引号
echo `date` # 结果将显示当前日期
ps
ps命令用于显示当前进程 (process) 的状态
语法
ps [options] [--help]
选项
-A:列出所有的进程;
-a:显示终端中包括其它用户的所有进程;
-x:显示无控制终端的进程;
-w:加宽显示,可以显示较多的信息;
-au:显示较详细的信息;
-aux:显示所有进程,也包含其他使用者的进程;
-f:用全格式来显示。
-e:选择全部的进程,等同于 -A。
-L:可能的话,追加 LWP 和 NLWP 栏显示线程。
au(x)输出格式:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER:进程所有者;
PID:进程ID号,是一个进程的唯一标识ID;
%CPU:进程的CPU使用率;
%MEM:进程的内存占用率;
VSZ:进程占用的虚拟内存大小;
RSS:
TTY:终端;
STAT:进程的状态,包括;
START:进程开始时间;
TIME:进程执行的时间;
COMMAND:所执行的指令;
示例
1、显示进程信息
ps -A
2、显示root进程用户信息
ps -u root
3、显示所有进程信息,连同命令行
ps -ef
ps -ef 和 ps aux 的区别
1、-ef 是 System V 展示风格,而 aux 是 BSD 风格。 ps -ef 的执行输出:
[root@xdhuxc ~]# ps -ef | head -n 2
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jun07 ? 00:01:36 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
字段含义:
- UID:用户ID或用户名。
- PID:进程ID。
- PPID:父进程ID。
- LWP:轻量进程(light weight process)或者线程ID。
- C:CPU 用于计算执行优先级的因子。数值越大,表明该进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明该进程是 I/O 密集型运算,执行优先级会提高。
- NLWP:进程里的LWP(线程)数。
- STIME:进程启动的时间。
- TTY:完整的终端名称。
- TIME:CPU时间。
- CMD:完整的启动进程所用的命令和参数。
ps aux 的执行输出
[root@xdhuxc ~]# ps aux | head -n 2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 190788 3544 ? Ss Jun07 1:36 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
字段含义:
- USER:用户名称。
- PID:进程ID号,是一个进程的唯一标识ID。
- %CPU:进程占 CPU 的百分比。
- %MEM:进程占用物理内存的百分比。
- VSZ:进程占用的虚拟内存大小,单位:KB。
- RSS:进程占用的物理内存大小,单位:KB。
- TTY:终端名称(缩写),若为?,则表示此进程与终端无关,因为它们是由系统启动的。
- STAT:进程状态 (1)S:睡眠。 (2)s:表示该进程是回话的先导进程。 (3)N:表示该进程拥有比普通优先级更低的优先级。 (4)R:正在运行。 (5)D:短期等待。 (6)Z:僵死进程。 (7)T:被跟踪或者被停止
- STARTED:进程的启动时间。
- TIME:CPU 时间,即进程使用 CPU 的总时间。
- COMMAND:启动进程所用的命令和参数,如果命令过长,会被截断显示。
2、COMMAND 列如果过长,ps aux 会截断显示;而 ps -ef 则不会。
grep
grep命令用于查找文件里符合条件的字符串。grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为"-",则grep指令会从标准输入设备读取数据。
学习网址: http://blog.csdn.net/xy010902100449/article/details/51426354
http://blog.csdn.net/shuanzia/article/details/50392987
语法
grep [-options] pattern file_name
或
grep [-options] pattern directory_name
选项
-c,--count:计算符合模式的列数;
-d,--directories:当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作;
-v,--recursive:查找不匹配的行;
-o:只打印出匹配到的字符;
-E:将范本样式为延伸的普通表示法来使用,意味着能使用扩展正则表达式;
--color:把匹配到的字符用颜色显示出来;
-i:不区分大小写;
-n:在行首显示行号;
示例
1、在当前目录中,查找后缀包含"sh"字样的文件中包含"test"字符串的文件
grep test *file
2、以递归的方式查找符合条件的文件。查找目录/etc/acpi 及其子目录下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容
grep -r update /etc/acpi # 以递归的方式查找目录/etc/acpi下包含字符串“update”的文件
3、反向查找,打印出不符合条件行的内容,查找文件名中包含 test 的文件中不包含test 的行
grep -v test *test*
tar
tar 是用来建立、还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
语法
tar [options] file_name
或
tar [options] derictory_name
选项
-C destination_directory_name,--directory=destination_directory_name:解压或压缩到指定的目录。
-f file_name,--file=file_name:指定待压缩或解压的文件
-t,--list: 列出待解压或压缩文件的内容。
-v,--verbose:显示命令执行的过程。
-x,--extract,--get:从压缩文件中解压文件。
-z,--gzip,--unzip:通过gzip命令处理压缩文件
--exclude=pattern:去除符合模式的文件。
示例
1、压缩文件,压缩文件a.c为abc.tar.gz
tar -czvf abc.tar.gz a.c
2、列出压缩文件abc.tar.gz的内容
tar -tzvf abc.tar.gz
3、解压文件abc.tar.gz
tar -zxf abc.tar.gz # 不显示解压过程
或者
tar -zxvf abc.tar.gz # 显示解压过程
4、解压文件abc.tgz
tar -xz abc.tgz -C /data/xdhuxc
ls
ls 命令用于显示指定工作目录下的内容,列出当前工作目录的文件及子目录的文件
语法
ls [-options] directory_name
选项
-a 显示所有文件及目录 (ls默认将文件名或目录名开头为"."的视为隐藏文档,不会列出)
-l:除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r:将文件以相反次序显示,原定依英文字母次序;
-t:将文件依建立时间之先后次序列出
-A:同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F:在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R:若目录下有文件,则以下之文件亦皆依序列出
示例
1、列出根目录()下的所有目录
ls /
2、列出当前工作目录下所有文件名以 s 开头的文件,越新的排越后面
ls -ltr s*
3、将 /bin 目录及其所有子目录和文件详细信息列出
ls -lR /bin
4、列出当前目录下的所有文件及子目录,目录于名称后加 "/", 可执行文件于名称后加 "*"
ls -AF
eval
此命令适用于那些一次扫描无法实现其功能的变量.
格式为:
eval cmd_line
1、eval命令将会首先扫描命令行,进行所有的替换,然后再执行命令。此命令适用于那些一次扫描无法实现其功能的变量,该命令对变量进行两次扫描,如果第一遍扫描后,cmd_line是个普通命令,则执行此命令;如果cmd_line中含有变量的间接引用,则保证间接引用的语义。这些需要进行两次扫描的变量有时候被称为复杂变量。
2、eval也可以用于回显简单变量,不一定是复杂变量。
rm
rm命令用于删除一个文件或者目录
语法
rm [options] file_name/directory_name
选项
-i:删除文件或目录前逐一询问确认;
-f:强制删除,即使原文件或目录属性设置为只读,也直接删除,无需逐一确认;
-r:递归删除目录及其子目录下的所有文件;
示例
1、删除文件abc.txt
rm abc.txt
2、递归删除当前目录下的所有文件及子目录
rm -r *
注意
1、文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。 2、若删除目录,则必须配合选项"-r"。
which
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
语法
which [file...]
选项
-V:显示版本信息
示例
1、使用命令 which 查看命令 bash 的绝对路径
which bash # 显示bash可执行程序的绝对路径
mv
mv命令用来为文件或目录改名或将文件或目录移入其它位置。
语法
mv [options] source destination
mv [options] source... directory
参数
-i:若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f:在mv操作要覆盖某已有的目标文件时不给任何指示;
示例
1、将文件file_name_1重命名为file_name_2
mv file_name_1 file_name_2
2、将info目录放入logs目录中。如果logs目录不存在,则该命令将info改名为logs。
mv info/ logs
3、将/usr/xdhuxc目录下的所有文件和目录移到/home目录下
mv /usr/xdhuxc/* /home
scp
scp是linux系统下基于ssh登陆进行安全的远程文件复制命令。
语法
scp [options] [[user@]host1:]file1 [...] [[user@]host2]:]file2
参数
-r:递归复制整个目录;
-q:不显示传输进度条;
-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题;
-P:指定数据传输用到的端口号;
示例
1、从本地复制文件到远程主机
scp local_file remote_username@remote_ip:remote_folder # 指定了用户名,命令执行后需要再输入密码,仅指定了远程的目录,文件名字不变
或
scp local_file remote_username@remote_ip:remote_file # 指定了用户名,命令执行后需要再输入密码,指定了文件名;
或
scp local_file remote_ip:remote_folder # 没有指定用户名,命令执行后需要输入用户名和密码,仅指定了远程的目录,文件名字不变
或
scp local_file remote_ip:remote_file # 没有指定用户名,命令执行后需要输入用户名和密码,指定了文件名;
2、从本地复制目录到远程主机
scp -r local_folder remote_username@remote_ip:remote_folder # 指定了用户名,命令执行后需要再输入密码;
或
scp -r local_folder remote_ip:remote_folder # 没有指定用户名,命令执行后需要输入用户名和密码;
注意
1、使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。
groupadd
groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
语法
groupadd [options] 参数
选项
-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组id小于500;
-K:覆盖配置文件 /etc/login.defs;
-o:允许添加组ID号不唯一的工作组
示例
1、创建一个工作组,并设置组ID加入系统,此时在 /etc/passwd 文件中产生一个组 ID(GID) 是344的项目。
groupadd -g 344 xdhuxc
useradd
useradd 可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
语法
useradd [options] others
选项
-d directory_name:指定用户进入系统时的目录;
-g:指定用户所属的群组;
-m:自动创建用户进入系统时的目录;
-r:建立系统帐号;
-s shell_name:指定用户进入系统后所使用的shell;
-u user_id:指定用户id
示例
1、创建一个一般用户
useradd akfdrt
2、为创建的用户指定用户组
useradd -g root akfdrt
3、创建一个系统用户
useraddd -r akfdrt
4、为新创建的用户指定 home 目录
useradd -d /home/akfdrt akfdrt
5、创建新用户且指定用户id
useradd akfdrt -u 273
su
su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
语法
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
选项
-c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell;
USER 欲变更的使用者帐号
ARG 传入新的 shell 参数
示例
1、变更帐号为 root 并在执行 ls 指令后退出变回原使用者
su -c ls root
2、变更帐号为 root 并传入 -f 参数给新执行的 shell
su root -f
3、变更帐号为 ajdlfw 并改变工作目录至 ajdlfw 的 home 目录
su - ajdlfw
netstat
netstat命令用于显示网络状态。
语法
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
选项
-a,--all:显示所有连接中的Socket;
-t,--tcp:显示TCP传输协议的连接状况;
-u,--udp:显示UDP传输协议的连接状况;
-v,--verbose:显示命令的执行过程;
-V,--version:显示版本信息;
-r,--route:显示路由表;
-i,--interfaces:显示网络界面信息表单;
-n,--numeric:直接使用IP地址,而不通过域名服务器;
-s,--statistics:显示网络工作信息统计表;
示例
1、显示详细的网络状况
netstat -a
2、显示当前用户UDP连接状况
netstat -nu
3、显示UDP端口号的使用情况
netstat -apu
4、显示网卡列表
netstat -i
5、显示网络统计信息
netstat -s
6、显示监听的套接口
netstat -l
kill
kill 命令用于删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。 语法
语法
kill [-s <信息名称或编号>][程序]
或
kill [-l <信息编号>]
选项
-l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称;
-s <信息名称或编号> 指定要送出的信息;
[程序] 可以是程序的PID或是PGID,也可以是工作编号。
示例
1、杀死指定用户xdhuxc的所有进程
kill -9 $(ps -ef|grep xdhuxc)
或
kill -u xdhuxc
curl
curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。
语法
curl [options] 参数
选项
-o:将文件保存为命令行中指定的文件名的文件中;
-O:使用URL中默认的文件名保存文件到本地;
-C:可对大文件使用断点续传功能
示例
1、 将文件下载到本地,并命名为:kjsifg.html
curl -o kjsifg.html http://www.gnu.org/software/gettext/manual/gettext.html
2、将文件下载到本地,并命名为gettext.html
curl -O http://www.gnu.org/software/gettext/manual/gettext.html
wget
wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用
语法
wget [options] 参数
选项
-r:递归下载方式;
-v:显示详细执行过程;
-q:不显示执行过程;
-nv:下载时只显示更新和出错信息,不显示指令的详细执行过程;
-c:断点续传,重新启动下载中断的文件
示例
1、使用 wget下载单个文件,保存在当前目录,在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。
wget http://www.linux.net/abc.zip
2、使用 wget 下载文件并以不同的文件名保存
wget -O wordpress.zip http://www.linux.net/download.aspx?id=1080
3、使用 wget 下载多个文件
wget -i file_list.txt
cat file_list << EOF
url_1
url_2
url_3
url_4
EOF
注意
1、wget 默认会以最后一个符合 / 的后面的字符来命令文件,对于动态链接的下载通常文件名会不正确。 为了解决该问题,可以使用选项 -O 来指定一个文件名。
cp
cp命令用于复制文件或目录
语法
cp [options] source destination
或
cp [options] source... directory
选项
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合;
-f:覆盖已经存在的目标文件而不给出提示;
-i:在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖;
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中;
-r,-R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
示例
1、将目录 /abc 下的所有文件及子目录复制到新目录/new_abc下
cp -r /abc/ /new_abc/
find
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法
find path -option [-print] [-exec -ok command] {};
选项
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项:
-name name, -iname name:文件名称符合 name 的文件。iname 会忽略大小写
-type file_type:文件类型是file_type的文件
文件类型包括:
d:目录;
c:字符设备文件,比如猫、键盘、鼠标等串口设备;
b:块设备文件,比如硬盘、光驱等设备;
p:命名管道文件;
f:普通文件;
l:符号链接文件;
s:套接字文件
可以使用 ()
将运算符分隔,并使用下列运算
expression_1 -and expression_2
! expression
-not expression
expression_1 -or expression_2
expression_1, expression_2
示例
1、将当前目录及其子目录下所有扩展名名是 .c
的文件列出来。
find . -name "*.c"
2、将当前目录及其子目录中所有的普通文件列出
find . -type f
3、查找名字符合正则表达式的文件
find ./ -regex .*so.*\.gz
source
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
语法
source file_name
或
source . file_name
df
df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。
语法
df [options]... [FILE]...
选项
-h:--human-readable 使用人类可读的格式,预设值是不加这个选项的
示例
1、显示所有的信息
df -total
sed
sed是一种流式编辑器,它是文本处理中非常常用的工具,能够完美地配合正则表达式使用,主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
1、直接编辑文件选项-i,会匹配file文件中每一行的第一个book替换为books
sed -i 's/book/books/g' file #替换操作,s命令
2、使用后缀/g标记会替换每一行中的所有匹配 sed 还可以用行为单位进行部分数据的搜寻并取代
sed 's/要被取代的字符串/新的字符串/g'
即
sed 's/book/books/g' file
awk
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。
1、打印每一行的第二个和第三个字段,当使用不带参数的print时,它就打印当前行,当print的参数是以逗号进行分隔时,打印时则以空格作为定界符。
awk '{ print $2,$3}' file_name
du
du命令用于显示目录或文件的大小,显示指定的目录或文件所占用的磁盘空间。
语法
du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]
选项
--max-depth=<目录层数> 超过指定层数的目录后,予以忽略
-h或--human-readable 以K,M,G为单位,以人类易读的方式显示,提高信息的可读性。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
示例
1、显示指定文件所占空间,以人类易读的方式显示。
du -h abc.log