linux常用命令
一、文件与目录的基本操作
1.ls
列出文件或者目录的信息
ls [-aladffhinrRSt] file|dir
-a:列出全部文件及目录
-l:列出文件及列表的详细信息
2.cd
更换当前目录
cd 相对路径或绝对路径
3.mkdir
新建目录
mkdir 目录名称
4.rm
删除目录或文件
rm [-rf] 目录或文件名称
-r:递归删除
-f:强制删除
5.touch
更新文件时间或创建新文件
touch [-acdmt] filename
-a : 更新 atime
-c : 更新 ctime,若该文件不存在则不建立新文件
-m : 更新 mtime
-d : 后面可以接更新日期而不使用当前日期,也可以使用 --date="日期或时间"
-t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm]
6.cp
复制文件。如果源文件有两个以上,则目的文件一定要是目录才行
cp [-adfilprsu] source destination
-a :相当于 -dr --preserve=all
-d :若来源文件为链接文件,则复制链接文件属性而非文件本身
-i :若目标文件已经存在时,在覆盖前会先询问
-p :连同文件的属性一起复制过去
-r :递归复制
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了
7.mv
移动文件
mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
8.chmod
修改文件权限(只有文件主和超级用户才可以便用该命令)
chmod 自定义权限数字 文件或目录名
例如:将目录改为文件主可读写执行权限,其他用户只有读权限
chmod 744 community
9.chown
修改文件所属者和所属组(只有所有者和超级用户才可以便用该命令)
chown [-fR] 用户:组 目录或文件 (当省略“:组”,仅改变文件所有者)
例如:将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu:
chown -R liu /usr/meng
10.ln
链接
二、获取文件内容
1.cat
将文件内容打到屏幕上
cat -n filename
-n:显示行号
2.tac
是cat的反向操作,从最后一行开始打印
3.more
也是查看文件内容,比cat多的就是可以一页一页看,适合查看大文件
4.less
与more类似,多了向前翻页的功能
5.head
获取文件前几行
head [-n number] filename
number代表显示前几行
6.tail
head的反向操作
7.od
以字符或者十六进制的形式显示二进制文件
三、数据流重定向
标准输入stdin
< (覆盖方式)
<<(追加方式)
标准输出stdout
> (覆盖方式)
>>(追加方式)
将不需要的标准输出以及标准错误输出重定向到 /dev/null,相当于扔进垃圾箱
四、管道指令
管道是将一个命令的标准输出作为另一个命令的标准输入,在数据需要经过多个步骤的处理之后才能得到我们想要的内容时就可以使用管道。
在命令之间使用 | 分隔各个管道命令。
ls -al /etc | less
五、提取指令
cut 对数据进行切分,取出想要的部分。
切分过程一行一行地进行。
cut
-d :分隔符
-f :经过 -d 分隔后,使用 -f n 取出第 n 个区间
-c :以字符为单位取出区间
例如:last 显示登入者的信息,取出用户名。
last
root pts/1 192.168.201.101 Sat Feb 7 12:35 still logged in
root pts/1 192.168.201.101 Fri Feb 6 12:13 - 18:46 (06:33)
root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 (01:16)
last | cut -d ' ' -f 1
root
root
root
六、排序指令
sort
sort [-fbMnrtuk] [file or stdin]
-f :忽略大小写
-b :忽略最前面的空格
-M :以月份的名字来排序,例如 JAN,DEC
-n :使用数字
-r :反向排序
-u :相当于 unique,重复的内容只出现一次
-t :分隔符,默认为 tab
-k :指定排序的区间
示例:/etc/passwd 文件内容以 : 来分隔,要求以第三列进行排序。
cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
dmtsai:x:1000:1000:dmtsai:/home/dmtsai:/bin/bash
alex:x:1001:1002::/home/alex:/bin/bash
arod:x:1002:1003::/home/arod:/bin/bash
uniq 可以将重复的数据只取一个。
uniq [-ic]
-i :忽略大小写
-c :进行计数
示例:取得每个人的登录总次数
last | cut -d ' ' -f 1 | sort | uniq -c
1
6 (unknown
47 dmtsai
4 reboot
7 root
1 wtmp
七、正则
grep
g/re/p(globally search a regular expression and print),使用正则表示式进行全局查找并打印。
grep [-acinv] [--color=auto] 搜寻字符串 filename
-c : 统计个数
-i : 忽略大小写
-n : 输出行号
-v : 反向选择,也就是显示出没有 搜寻字符串 内容的那一行
--color=auto :找到的关键字加颜色显示
示例:把含有 the 字符串的行提取出来(注意默认会有 --color=auto 选项,因此以下内容在 Linux 中有颜色显示 the 字符串)
grep -n 'the' regular_express.txt
8:I can't finish the test.
12:the symbol '*' is represented as start.
15:You are the best is mean you are the no. 1.
16:The world Happy is the same with "glad".
18:google is the best tools for search keyword
八、查看进程
1.ps
查看某个时间点的进程信息。
示例:查看自己的进程
# ps -l
示例:查看系统所有进程
# ps aux
示例:查看特定的进程
# ps aux | grep threadx
2.pstree
查看进程树。
示例:查看所有进程树
# pstree -A
3. top
实时显示进程信息。
示例:两秒钟刷新一次
# top -d 2
4. netstat
查看占用端口的进程
示例:查看特定端口的进程
# netstat -anp | grep port
九、进程状态
状态 | 说明 |
---|---|
R | running or runnable (on run queue)正在执行或者可执行,此时进程位于执行队列中。 |
D | uninterruptible sleep (usually I/O)不可中断阻塞,通常为 IO 阻塞。 |
S | interruptible sleep (waiting for an event to complete) 可中断阻塞,此时进程正在等待某个事件完成。 |
Z | zombie (terminated but not reaped by its parent)僵死,进程已经终止但是尚未被其父进程获取信息。 |
T | stopped (either by a job control signal or because it is being traced) 结束,进程既可以被作业控制信号结束,也可能是正在被追踪。 |