1、切换目录
cd
(change directory)功能:切换目录
语法:cd [目录]
意义:cd是change directory 的缩写;cd命令后面跟一个路径,用于切换当前用户所在的路径,其中路径可以是绝对路径也可以是相对路径。
常用:
cd ~ 当前用户主目录
cd / 根目录
cd - 上一次访问的目录
cd .. 上一级目录
cd 当前用户主目录
touch 1.txt
在当前目录创建一个文件1.txt
clear
:清除屏幕
举例:
cd /system/bin 表示切换到/system/bin路径下。
cd logs 表示切换到logs路径下。
cd / 表示切换到根目录。
cd ../ 表示切换到上一层路径。
2、查看目录结构
ls
(list)功能:列出目录内容
格式::ls <参数> <路径>
意义:ls是list的缩写;ls命令后面可以跟一个路径或参数,也可以不跟,表示列出路径或当前目录下的所有文件信息。最常用的的参数是“-l",也就是“ls -l”命令。
#常用参数
-a或--all 所有文件和目录。注意隐藏文件、特殊目录、以“.”开头的和以“..”开头的
-l 使用详细格式列表
-t 用文件和目录的更改时间排序
-r 反向排序
--help 在线帮助
常用:
ls -l 列出当前目录下的文件信息(此命令很常用,简化的格式为 ll)
ls -al 列出当前目录下的文件信息(包括隐藏文件,特殊目录)
ll /home/ 显示根目录下home目录下的内容
举例:
ls / 显示根目录下的所有文件及文件夹。
ls -l /data 显示/data路径下的所有文件及文件夹的详细信息。
ls -l 显示当前路径下的所有文件及文件夹的详细信息
ls *l wc显示当前目录下面的文件数量。
3、新建目录
pwd
:显示当前工作目录
mkdir
: 创建目录
#举例
mkdir a :当前目录下创建文件夹a
mkdir /root/b :在根目录下的root下创建目录b
mkdir -pv /root/c/e/d :在根目录下的root下创建目录结构c/e/d(一下创建多级目录)
mkdir /data/path 在/data路径下创建path文件夹。
mkdir -p a/b/c 参数 -p用于创建多级文件夹,这句命令表示在当前路径下创建文件夹a, 而a文件夹包含子文件夹b,b文件夹下又包含子文件夹c
-p:父目录不存在情况下先生成父目录
-v:显示命令执行过程中的详细信息
4、文件浏览
[注]:按tab键可以自动补齐文件名(比如输入pa,会自动补齐后面的内容)
(1)cat <文件名>
:显示指定文件内的所有内容信息(用于文件内容少的情况)
意义:cat是concatenate 的缩写。表示读取文件内容及拼接文件。
举例:
cat /sys/devices/system/cpu/online 读取 /sys/devices/system/cpu/路径下online文件内容。
cat test.txt 读取当前路径下test.txt文件里的内容。
(2)more <文件名>
:功能类似于 cat, more 会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
命令参数:
+n 从笫 n 行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉
常用操作命令:
Enter 向下 n 行,需要定义。默认为 1 行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
举例:
显示文件中从第3行起的内容
more +3 text.txt
在所列出文件目录详细信息,借助管道使每次显示 5 行
ls -l | more -5
按空格则会显示下 5 行
(3)less [参数] <文件名>
:与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
常用命令参数:
-i 忽略搜索时的大小写
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-s 显示连续空行为一行
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
-x <数字> 将“tab”键显示为规定的数字空格
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
举例:
(1)ps 查看进程信息并通过 less 分页显示
ps -aux | less -N
(2)查看多个文件
less 1.log 2.log
可以使用 n 查看下一个,使用 p 查看前一个
(4)head 命令
:head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
常用参数: -n<行数> 显示的行数(行数为复数表示从最后向前数)
举例:
(1)显示 1.log 文件中前 20 行
head 1.log -n 20
(2)显示 1.log 文件前 20 字节
head -c 20 log2014.log
(3)显示 t.log最后 10 行
head -n -10 t.log
(5)tail命令
:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
常用参数:
-n<行数> 显示行数
-f 循环读取
举例:
(1)循环读取逐渐增加的文件内容
ping 127.0.0.1 > ping.log &
(2)后台运行:可使用 jobs -l 查看,也可使用 fg 将其移到前台运行。
tail -f ping.log
(查看日志)
5、文件操作
(1)复制命令:cp
命令格式: cp 【参数】<文件><目标文件>或者cp -r<文件夹><目标文件夹>
意义:cp是copy 的缩写。用于复制文件或文件夹。
参数说明:
-r或--recursive 递归处理,将指定目录下的文件与子目录一并处理
-b 覆盖文件时,可以将源文件做一个备份
示例:
(1)复制目录
cp /data/logs /data/local/tmp/logs 复制/data路径下的logs到/data/local/tmp路径下。
cp 1.sh /sdcard/ 复制当前路径下的1.sh到/sdcard下。
cp -r ./a ./b 把a目录下的内容复制到b目录下
(2)复制文件
cp -b 1.txt 2.txt :如果覆盖文件时,可以将源文件做一个备份
cp ./1.txt ../ :将当前目录下的1.txt复制到父级目录
cp /root/1.txt /bin/2.txt :将/root下的1.txt文件复制到根目录下的bin目录下的2.txt中
(2)移动命令:mv
mv(move)功能:移动或更名现有的文件或目录
语法:mv [源文件或目录][目标文件或目录]
-f 或 --force 若目标文件或目录与现有的文件目录重复,则直接覆盖现有的文件或目录
举例:
剪切文件:mv ./1.txt /root 将当前目录下的1.txt文件 剪切到root目录下
重命名文件:mv ./1.txt ./2.txt 将当前目录下的1.txt文件重命名为2.txt
(3)删除命令:rm
rm功能:删除文件或目录
语法:rm [-dfirv][–help][–version][文件或目录…]
-f 或 --force 强制删除文件或目录
-r 或 -R 或 --recursive 递归处理,将指定目录下的所有文件及子目录一并处理
举例:
强制删除文件:rm -f ./1.txt
强制删除目录:rm -rf ./a
rm -rf path 删除path
rm test.txt 删除test.txt
删除目录:rmdir
从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限。
注意:不能删除非空目录
实例:
当 parent 子目录被删除后使它也成为空目录的话,则顺便一并删除parent目录:
rmdir -p parent/child/child11
(4)查找命令:find
find功能:查找文件或目录
语法:find[目录…][参数]
-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group 按照文件所属的组来查找文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件
d - 目录
c - 字符设备文件
l - 符号链接文件
p - 管道文件
f - 普通文件
-size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
(用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )
-maxdepth n 最大查找目录深度
-prune 选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略
-newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项
举例:
find /root/ -name 'test*' 查找root目录下的文件开头是test的文件和文件夹,*是通配符 。注意字符串要用单引号引起来。
find /root/ -name '*test' 文件名中结尾是test的文件或文件夹
find /root/ -name '*test*' 文件名中含有test的文件或文件夹
(1)查找 48 小时内修改过的文件
find -atime -2
(2)在当前目录查找 以 .log 结尾的文件。 . 代表当前目录
find ./ -name '*.log'
(3)查找 /opt 目录下 权限为 777 的文件
find /opt -perm 777
(4)查找大于 1K 的文件
find -size +1000c
(5)查找文件:which 命令
在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:
which 查看可执行文件的位置。
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。
实例:
(1)查看 ls 命令是否存在
which ls
(2)查看 which命令是否存在
which which
(6)whereis 命令
whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。
常用参数:
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
实例:
(1)查找 locate 程序相关文件
whereis locate
(2)查找 locate 的源码文件
whereis -s locate
(7)locate 命令
locate 通过搜寻系统内建文档数据库达到快速找到档案,数据库由 updatedb 程序来更新
常用参数:
-l num(要显示的行数)
-f 将特定的档案系统排除在外,如将proc排除在外
-r 使用正则运算式做为寻找条件
实例:
(1)查找和 pwd 相关的所有文件(文件名中包含 pwd)
locate pwd
(2)搜索 etc 目录下所有以 sh 开头的文件
locate /etc/sh
6、更改文件权限
(1)chmod 命令
用于改变 linux 系统文件或目录的访问权限。
常用参数:
-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件
权限范围:
u:User 即文件或目录的拥有者
g:Group 即文件或目录的所属群组
o:Other 除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围
a:All 即全部的用户,包含拥有者,所属群组及其他用户
--符号
+ 添加权限
- 取消权限
权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限
777 :所有权限
[注]:3=1+2(wx) 5=4+1(rx)
实例:
chmod u-rwx xxx 取消xxx目录的用户“读写执行”权限
chmod g-rwx xxx 取消xxx目录的组“读写执行”权限
chmod 777 xxx 给xxx目录添加所有权限
(1)增加文件 t.log 所有用户可执行权限
chmod a+x t.log
(2)撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息
chmod u=r t.log -c
(3)给 file 的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)
(2)chown 命令
chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID
变权限的文件列表,支持通配符。
-c 显示更改的部分的信息
-R 处理指定目录及子目录
实例:
(1)改变拥有者和群组 并显示改变信息
chown -c mail:mail log2012.log
(2)改变文件群组
chown -c :mail t.log
(3)改变文件夹及子文件目录属主及属组为 mail
chown -cR mail: test/
7、显示磁盘空间大小
(1)df 命令
显示磁盘空间使用情况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息
参数:
-a 全部文件系统列表
-h 以方便阅读的方式显示信息
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地磁盘
-T 列出文件系统类型
实例:
(1)显示磁盘使用情况
df -l
(2)以易读方式列出所有文件系统及其类型
df -haT
(2)du 命令
du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看:
命令格式:
du [选项] [文件]
常用参数:
-a 显示目录中所有文件大小
-k 以KB为单位显示文件大小
-m 以MB为单位显示文件大小
-g 以GB为单位显示文件大小
-h 以易读方式显示文件大小
-s 仅显示总计
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
实例:
(1)以易读方式显示文件夹内及子文件夹大小
du -h scf/
(2)以易读方式显示文件夹内所有文件大小
du -ah scf/
(3)显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
du -hc test/ scf/
(3)free 命令
显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
命令参数:
-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s<间隔秒数> 持续显示内存
-t 显示内存使用总合
实例:
(1)显示内存使用情况
free
free -k
free -m
(2)以总和的形式显示内存的使用信息
free -t
(3)周期性查询内存使用情况
free -s 10
(4)wc 命令
wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出
命令格式:
wc [option] file..
命令参数:
-c 统计字节数
-l 统计行数
-m 统计字符数
-w 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串
实例:
(1)查找文件的 行数 单词数 字节数 文件名
wc text.txt
结果:
7 8 70 test.txt
7、进程状态
(1)ps 命令
ps(process status),用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用 top
linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps 工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
命令参数:
-A 显示所有进程
a 显示所有进程
-a 显示同一终端下所有进程
c 显示进程真实名称
e 显示环境变量
f 显示进程间的关系
r 显示当前终端运行的进程
-aux 显示所有包含其它使用的进程
实例:
(1)显示当前所有进程环境变量及进程间关系
ps -ef
(2)显示当前所有进程
ps -A
(2)kill 命令
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。
常用参数:
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
实例:
(1)先使用ps查找进程pro1,然后用kill杀掉
kill -9 $(ps -ef | grep pro1)
(3)ifconfig命令
功能:显示网络设备
格式:ping 主机名(网络设备号)或ip地址 (按ctrl+c停止ping)
(4)关机 重启
Linux centos 重启命令:reboot
Linux centos 关机命令:halt
8、日期命令
(1)date 命令
显示或设定系统的日期与时间。
命令参数:
-d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u 显示GMT。
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(以00-59来表示)
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)
%a 星期的缩写。
%A 星期的完整名称。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%m 月份(以01-12来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
实例:
(1)显示下一天
date +%Y%m%d --date="+1 day" //显示下一天的日期
(2)-d参数使用
date -d "nov 22" 今年的 11 月 22 日是星期三
date -d '2 weeks' 2周后的日期
date -d 'next monday' (下周一的日期)
date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
date -d last-month +%Y%m(上个月是几月)
date -d next-month +%Y%m(下个月是几月)
(2)cal 命令
可以用户显示公历(阳历)日历如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份:
常用参数:
-3 显示前一月,当前月,后一月三个月的日历
-m 显示星期一为第一列
-j 显示在当前年第几天
-y [year]显示当前年[year]份的日历
实例:
(1)显示指定年月日期
cal 9 2012
(2)显示2013年每个月日历
cal -y 2013
(3)将星期一做为第一列,显示前中后三月
cal -3m
9、正则表达式
grep 命令
强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。
常用参数:
-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的列数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹
grep 的规则表达式:
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* #一起用代表任意字符。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) #标记匹配字符,如'\(love\)',love被标记为1。
\< #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b #单词锁定符,如: '\bgrep\b'只匹配grep。
举例:
(1)查找指定进程
ps -ef | grep svn
(2)查找指定进程个数
ps -ef | grep svn -c
(3)从文件中读取关键词
cat test1.txt | grep -f key.log
(4)从文件夹中递归查找以grep开头的行,并只列出文件
grep -lR '^grep' /tmp
(5)查找非x开关的行内容
grep '^[^x]' test.txt
10、链接命令
功能是为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过 ln 创建的链接(link)减少磁盘占用量。
链接分类:软件链接及硬链接
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
常用参数:
-b 删除,覆盖以前建立的链接
-s 软链接(符号链接)
-v 显示详细处理过程
实例:
(1)给文件创建软链接,并显示操作信息
ln -sv source.log link.log
(2)给文件创建硬链接,并显示操作信息
ln -v source.log link1.log
11、备份压缩
tar命令
:文件备份压缩
格式:tar 参数 压缩后的文件名 被压缩的文件名
tar 参数 被解压的文件名 -C 指定目录 (如果省略 -C 指定目录,则解压到当前文件夹)
-c 建立一个压缩文件的参数指令(create)--压缩
-x 解开一个压缩文件的参数指令(extract)--解压
-z 是否需要用gzip压缩
-v 压缩的过程中显示文件(verbose)
-f 使用档名,在f之后要立即接档名(file)
常用解压参数组合:zxvf
常用压缩参数组合:zcvf
举例:
tar -zcvf /root/1.tar /root/a 将root目录下的a文件夹压缩成1.tar,放在root目录下。
tar -zxvf ./1.tar 将当前目录下的1.tar文件解压缩
[注]:如果后缀名为.tar.gz的压缩包用-zxvf 如果后缀名为.tar的压缩包用-xvf
12、vim文档编辑
vi或vim命令
基本操作:
1.vim 文件名 :进入一般模式(不能输入)
2.按下 i 从一般模式,进入到插入模式
3.按下esc从插入模式,退出到一般模式
4.在一般模式下,输入:wq,退出编辑