基本指令:
**1、重定向:>**
命令> 文件 :提覆盖的方式将命令的*正确输出*输出到指令的文件或设备中
命令> 文件 :提追加的方式将命令的*正确输出*输出到指令的文件或设备中
命令2> 文件 :提覆盖的方式将命令的*错误输出*输出到指令的文件或设备中
命令2>>文件 :提追加的方式将命令的*错误输出*输出到指令的文件或设备中
**eg:**
ls > test.txt 将ls输出的当前目录列出的文件、文件夹以覆盖的方式写入text.txt,如果text.txt不存在,那么就创建
**2、分屏显示more**
more stdio.h,分屏显示这个文件
针对信息过长,屏幕无法显示完整,通过more可以分屏显示,每次显示一页、按空格显示下一页,q退出显示,h获取帮助
**3、管道:|(一个命令的输出可以通过管道作为另一个命令的输入)**
用的很多?还很抽象?用来连接两个指令,不是很懂,所以举两个例子
(1)ls -l | more :ls -l的输出送入more进行分页显示
(2)命令 | grep [-参数] ‘关键词’:eg: ls | grep std
这种方式采用管道,将前一个命令的执行结果输出给grep,并通过grep的关键词搜索将符合条件的行 搜索出来。
(3)ls /usr/include -alf | more 用来过滤
(4)ls /bin/ | grep ls 查找bin目录下的ls相关的文件夹、文件
**4、清屏:clear control+c**
**5、切换工作目录:cd**
cd没有参数 则返回登录目录 \home\sdl
cd - 去上一次访问的路径,注意与cd . 的区别
**6、显示当前路径:pwd**
**7、自动补全:tab**
**8、创建文件夹:madir ./a/b/c -p ,同时创建新文件夹下的新文件夹 直接用mkdir ./a/b/c不行**
**9、删除文件夹:rmdir 只能删除空文件夹**
**10、删除:rm汇总**
rm a -r删除目录a **rm * -rf f**:表示不提示直接删除、*当前目录所有东西
rm * .png -rf 与rm *.png -rf这两个指令是不同的,区别就在于一个空格 后者删除所有.png文件,前者全删了
rm 1.c -i 删除会有提示
rm ../mike -r 删除上一级目录下的mike
rm ~/code 删除默认目录(/home/sdl)下的code
**11、建立连接文件:ln**
软链接:软链接不占用硬盘空间,源文件删除则软链接失效、只是源文件的快捷方式
(1)类似于windows快捷方式
(2)修改其中一个文件,会影响另一个文件
**eg:** ln -s 1.txt abc.txt
ls -l 文件1.txt会有一个abc.txt指向->1.txt
硬链接(有个锤子用,只能链接不同文件,不能是目录,而且占用内存)
(1)给某个文件拷贝一份,这两个文件独立占用内存
(2)改变其中一个文件,会影响到另一个文件
(3)删除某个硬链接文件,不会影响另外一个文件
**eg:** ln 1.txt abc.txt
1.txt是源文件,abc.txt是目标文件,创建一个与1.txt一样的文件(硬链接)
更改abc.txt和1.txt都会改变二者,二者文件是独立的,但是链接在于同步更改
**12、文本搜索:grep**
格式:grep [-选项] ‘搜索内容串’文件名 grep -v ‘a’ a.txt
-v 显示不包含匹配文本的所有行 搜索没有a的东西
-n 显示匹配行及行号
-i 忽略大小写
对于关键字中带有空格,则通过带有单引号,砖家建议:每次都加单引号或双引号
eg:grep ,abc, test.txt .代表随便是什么都行,只要满足中间是abc都会被找到
grep [0-9]abc[0-9] test.txt -n
ps -aux | grep gedit 搜索当前与gedit有关的进程
**13、查找文件:find用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户的文件**
find ./ -name test.sh:查找当前目录下所有名为‘test.sh’的文件
find ./ -name ‘*.sh’:查找当前目录下后缀名为‘.sh’的文件
find ./ -name ‘[A-Z]*’:查找当前目录下以大写字母开头的文件
find /tmp -size 2M :查找当前目录下等于2M的文件
find /tmp -size +(-)2M :查找当前目录下大于(小于)2M的文件
find ./ -size +4K -size -5M :
find ./ -perm 0777 :查找当前目录下,权限为777的文件或目录
14、拷贝文件cp
cp 源文件 目标文件
cp -v代表拷贝进度,所以很有用。
15、移动mv
mv aaa.c mke.c :其实是改名操作,路径不变
16、获取文档类型:file
显示文件的信息(后缀名等等,方便打开等操作。)
17、归档管理:tar
*复制过来的*:仅供参考
[root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
*手敲的*:
eg:
打包:tar -cvf xxx.tar 需要打包的文件
解包:tar -xvf xxx.tar 不指定路径,默认在当前的路径解包
指定目录解包:tar -xvf xxx.tar -C 指定路径目录
18、文件压缩解压gzip
gzip test.tar 输出 test.tar.gz
gzip xxx.tar 自动在当前目录生成:xxx.tar.gz
gzip -d xxx.tar.gz 解压到当前目录,xxx.tar
**tar -czvf test.tar.gz * 一步到位,不需要先tar在gzip**
**tar -xzvf test.tar.gz * 一步到位,不需要先tar在gzip**
19、文件压缩解压bzip2
bzip2 test.tar 输出 test.tar.bz2
-d decompress -z 压缩
ls -sh test.tar.bz2
一步到位:
压缩 :tar -cjvf xxx.tar.bz2 所需文件
解压缩 :tar -xjvf xxx.tar.bz2
20、查看当前系统账号的用户名:whoami
21、查看所有用户的用户名和上次活动的日期
sudo su 用户名,sudo su sdl 切换用户到sdl
如果不指定用户,则切换到管理员默认用户root
22、查看用户组信息:cat /etc/group
23、查看用户信息:cat /etc/passwd
edu:x:1000:1000:edu,,,:home/edu:/bin/bash
第一个1000表示用户id
第二个1000表示这个用户属于哪个组,组id
sudo groupadd abc :增加组abc
sudo usermod -g abc mike 更改用户组
24、增加用户 useradd
useradd -m sdl 可以增加用户,在home下不存在sdl文件夹的情况下,自动创建
25、修改文件权限chmod
字母法:chmod u/g/o/a +/-/= rwx(读、写、执行) 文件
[ u/g/o/a ] 含义
u user 表示该文件的所有者
g group表示与该文件的所有者属于同一组者,即用户组
o other表示其他以外的人
a all表示这三者都是u g o
[ +-= ]
+ 增加权限
- 撤销权限
= 设定权限
eg:
chmod u-w 1.c chmod g+x 1.c
chmod o=rwx 1.c
000代表没权限,001表示有执行权限,010代表写权限
chmod 600 1.c 表示user执行权限、写权限,用户组、其他没有权限
chmod 777 code
文件权限说明:
x:没有此权限则无法进入
r:没有此权限则无法打开,甚至连文件夹都不能ls
w:没有这个权限,无法新建或者删除文件
26、改变文件所有者:chown
chown mike 1.c 没有权限:sudo chgrp mike 1.c
27、修改文件所属组:chgrp
chgrp root 1.c sudo chgrp root 1.c
28、依据进程号码删除进程:kill
kill -9 1173(进程号码) -9:理解为强力删除
29、添加组账号:groupadd
30、查询用户登录情况
31、检查磁盘环境:df
df share/ -h
32、检查目录所占磁盘空间:du