Linux主要是通过命令行而非界面进行操作的,先要了解下他的结构
pwd
得到你目前在哪个目录ls
列出当前文件夹的所有文件没有参数是普通查看
ls -a
list all,显示隐藏文件(开头为".")ls -l
list long 列出长数据,包括文件夹的详细属性。ls -h
human readable将文件的大小,以Kb/Mb的形式显示,而不是字节ls -R
recursion 递归显示所有文件,慎用慎用。ls -d
仅查看目录本身ctrl + z 或ctrl+d
终止正在运行的程序。cd floder
前往当前目录下的floder文件夹跟windows的有点像
cd ..
返回上一层文件夹cd /
返回根目录,因为Linux是没有盘符概念的,只有根目录这样。cd ~
切换到用户主目录,或者直接cd 不加任何东西也可以cd -
切换到上一次的目录mkdir 目录名
,创建文件夹,跟java的File类有点像吧,然而Linux并没有mkdirs命令
rm -rf 目录/文件
删除目录或者文件以及其内容比rmdir强硬很多,rmdir只能删除空目录
-f 代表强制,force
-r 代表递归,recursion,带r的参数都是非常危险的!尤其是处于root权限下。
rmdir 目录名
,删除文件夹
只能删除空目录,跟java的File类也有点像。
注意:这个目录的路径找法跟Java中URL的找法是一样的,两种类型,普通类型就是在当前目录下开始找,斜杠开头类型就是在根目录下开始找,所以mkdir /pengpeng 是会在根目录下新建一个pengpeng文件夹的!
cp a.txt ../
将a.txt文件复制到上一层目录上。-r
递归复制,用于目录-d
保留原来文件的属性-i
interactive 如果文件存在则询问是否覆盖-f
force 强制复制,即使目标文件已经存在也会覆盖cp file_1 file_2
把file_1拷贝到file_2的位置,
mv dir1 new_dir
将dir1文件夹,重命名为new_dir,也会改变他子文件的路径。
file file_1
显示文件的类型,如:etc/man.config的类型是ASCII English text文件
mount
挂载/dev文件夹下的内容是不能直接使用的,要挂载到其他地方才可以使用。命令是mount /dev/cdrom /media/cdrom
find [查找路径] 寻找条件 找到后的操作
可以按照一定规则搜索文件参数 | 作用 |
---|---|
-name | 匹配名称 |
-perm | 匹配权限 |
-user | 匹配所有者 |
-group | 匹配所有组 |
-atime -n +n | 匹配访问文件的时间,-n表示n天以内,+n表示n天之前 |
-size | 匹配文件大小(+50表示大于50k,-50表示小于50K) |
-exec{}; | 后面可接对搜索到结果进一步处理的命令 |
搜索在/etc/ 中所有以host开头的文件:
find /etc -name "host*" -print
// print就是搜索到文件的进一步搜索
找出用户hepeng 的文件,并复制到/root/findresults 目录
find / -user hepeng -exec cp -arf{} /root/findresults/\;
// -exec{} 中{}表示搜索到的文件,要记得后面是\结尾
man
显示命令帮助:遇到啥命令忘了参数或者不知道是怎么用的,用man 命令 就可以查看命令帮助文档,如:man ls 查看ls命令帮助文档和参数列表
date
显示当前时间date "+%Y/%m/%d %H:%M:%S "
以固定格式显示时间,跟SimpleDateFormat有点像,但是参数不一样,字符串最前要加"+"号
参数 | 作用 |
---|---|
%H | 24小时制的时间 |
%M | 分 |
%S | 秒 |
%I(大写I) | 12小时制的时间 |
%p | AM/PM |
%X | 等于"+%H:%M:%S %p" |
%A | Sunday-Satuaday |
%a | sun-sat |
%B | January |
%b | jan |
%d | 几号 |
%m | 月数(01~12) |
%Y | 年份 |
%j | 一年中第几天 |
-s
设置系统时间: date -s"20150910 8:30:00"
cal
calendar,显示日历,echo
命令可用于查看系统变量参数echo $SHELL
'$'符号说明是系统变量。查看SHELL是什么echo $HOSTNAME
查看本机主机名bc
basic calculator 基本计算器,可以处理括号。默认是输出int,通过scale=2,这个命令,可以让计算器输出指定精度的小数。
wget 下载地址
可以下载 文件和网站-r
,递归下载-c
,断点续传-t
,最大尝试次数-p
,下载页面所有资源包括图片,视频-O
,下载到指定目录elinks 网址
用于实现一个纯文本界面的浏览器,莫得图片和视频,纯文本,浏览网页,但使用之前要先联网用以下命令先下载elinks才行
yum install elinks
下载安装软件yum会自动下载elinks并安装,并且会自动安装elinks的依赖软件。其他软件亦如是
vim /etc/inittab
可以编辑某个文本文件按i
可以启用insert模式,就能改了,改完以后按esc
退出insert模式,输入冒号,进入等待命令模式,输入wq或者x,表示write ,quite 保存退出
cat
主要用来查看文件,修改不了-n
给文件加上行号cat file_1>>file_2
用file_1覆盖文件file_2more
则用来查看较长的纯文本文件,也是修改不了。数字
设置一页显示多少行-d
显示提示语句和报错信息head -n 10 peng/xxx
显示文本文件的前10行tail -n 10
显示文本文件的最后10行-f
持续刷新显示的内容od
查看相对特殊格式的文件-t a
默认字符-t c
ASCII字符-t o
八进制-t d
十进制-t x
十六进制-t f
浮点数|more
或者|less
就能控制屏幕显示的内容,命令后面加|less
可以上下箭头滚动屏幕wc [选项] 文件名
word Counter搜集文件的字符数,行数等信息-l
只显示行数-w
只显示单词数-m
显示字符数-c
只显示字节数cut
可以把一行以指定的符号分割,并显示其中一列。比如文档如下:
a:b:c
d:e:f
执行cut -d: -f1 可以得到如下:
a
d
执行cut -d: -f2 可以得到如下:
b
e
-d:
指定分隔符,之间不用空格-f 1
指定显示第几列tr
用于转换文本文件中的字符cat file_1 | tr [a-z] [A-Z] 把file_1文件中的所有内容小写字母变成大写字母
diff
查看两个文件之间的不同假设file_1是:abc
file_2是:abcc
diff file_1 file_2 得出的结果是:
1c1
表示file_1的文件在第一行,需要执行c(change)这个动作才能变成file_2中的第一行那样。
touch
创建文件或者修改时间linux有3种时间:
touch的各种参数:
-a
access time修改访问时间-m
modify time修改更改内容的时间-d
同时修改a和m-t
要修改成的时间[YYMMDDhhmm]跟date的标签不同touch -dt"2018-9-20 10:30:20" hello2
watch -n 1
可以让一个命令每1秒执行一次uptime
可以实时查看系统负载情况。tar [选项] [文件]
对文件打包和解压缩-c
创建压缩文件-x
解开压缩文件-t
查看压缩包内有哪些文件-z
使用Gzip压缩或者解压-j
使用bzip2压缩或者解压-v
显示压缩或者解压的过程-f
目标文件名 : 压缩和解压甚至查看都必须的-p
保留原始权限与属性-C
指定解压到的目录tar -czvf my.tar.gz /newpeng
tar -xzvf my.tar.gz [-C 其他文件夹]
tar -tf my.tar.gz
grep 关键字 文件
从文件中找到关键字-n
显示行号-v
显示不含关键字的行-c
只显示找到的行数-i
忽略大小写su
在任何非root状态下输入这个命令能启用root账户,想退出只需要exit或者control+d
就行。
ifconfig
可以查看本机当前网卡配置和网络状态等信息。uname
命令用于查看系统内核版本等信息,uptime
命令用于查看系统的负载情况free -m
以m为单位,显示当前系统的内存使用量who
显示当前登入主机的用户情况,其中终端设备是模拟不同计算机接入,对应control+alt+F1~F5的。last
用于查看所有系统的登入记录bash_history
文件记录着1000个最近操作记录adduser
创建新用户-e
账号有效期至 : “yyyy-mm-dd”-s
指定默认的shell adduser-s /sbin/nologin hepeng
创建一个不允许登录的用户passwd
修改用户密码passwd
passwd hepeng
-l
阻止用户登录-u
解除阻止用户登录-d
使账户无密码-e
强制用户下次登录修改密码--stdin
表示密码应该从标准输入流中读取,包括管道连接的标准输入流userdel -f hepeng
强制删除用户usermod hepeng
修改用户信息管道命令符可以让前面命令的标准输出当做后一个命令的标准输入(否则标准输入一般都是用文件)
// 从etc/passwd文件中找到所有包含 /sbin/nologin 的列,传给wc统计行数
grep /sbin/nologin /etc/passwd | wc -l
//用翻页形式查看/etc 有哪些文件
ls -lh /etc | more
//给用户发邮件
echo "Content" | mail -s "subject" hepeng
通过符号> 等可以实现输入输出重定向,等于java中的System.setOut();
符号 | 含义 |
---|---|
命令 > 文件 | 把命令的标准输出设为文件,清空文件 |
命令>> 文件 | 把命令的标准输出设为文件,不清空文件 |
命令 2>文件(2是需要的) | 把命令错误流重定向到文件,清空文件 |
命令 2>> 文件 | 把命令错误流重定向到文件,不清空文件 |
命令 < 文件 | 以文件内容作为命令的标准输入流 |
命令 << 字符串 | 从标准输入读入,直到遇到指定的字符串 |
所以从此写入文件再也不用vim一个文件来写,直接
echo "content" > file
注意输入输出重定向跟管道流的区别,管道流是命令跟命令之间的。输入输出是命令跟文件之间的。
表达式 | 含义 |
---|---|
* | 0个或多个任意字符 |
? | 1个任意字符 |
[0-9] | 同正则 |
[abc] | 同正则 |
在find 、grep、ls
时会有用
另外Linux支持自定义变量
PRICE=5
不能由空格,用$PRICE
就能获得变量的值,跟$HOSTNAME
有点像。
Linux命令行中,字符串都不用加双引号的,系统会自动在需要字符串的地方把命令转化成字符串,
除非加了 , , ,PRICE 表示以系统变量来理解这个字符串。如果加了单引号(’’),则$不会以转移符来理解。
如果想把整个字符都当成是命令,则应该把命令用飘号括住(``);
echo uname -a 会返回uname -a 这个字符串,因为这里需要字符串,linux自动把命令当成字符串
echo `uname -a` 会返回一长串文字,因为他按照命令来理解uname -a,先执行命令,再执行echo命令。
echo $PATH
来查看系统已存路径每接收到一个命令,Linux都会进行以下4个步骤:
/bin/ls
则直接执行alias cp=cp -i
可以为常用任务起别名。),如果是别名则先将别名解释type 命令名
可以判断命令是否为外部命令。
xx is a shell buildin
像$HOME,$SHELL,$HISTSIZE 一样,PATH也是一个系统变量,可以通过echo$ PATH
看到,通过以下形式可以新建自己的变量
WORKDIR=/home/workdir //不能有空格,当然home和workdir文件夹都需要新建一个
但这样声明的变量名只能作用于当前用户,想所有用户都能共用这个变量名,应该调用一下命令:
export WORKDIR
这样就能所有用户共用啦
指令(命令模式下) | 功能 |
---|---|
dd | 删除1行 |
2dd | 删除两行 |
yy | 复制1行 |
3yy | 复制3行 |
p | 把刚刚yy和dd的行粘贴 |
/字符串 | 记得按回车,按n下一个,N上一个,从上到下找 |
?字符串 | 从下到上找 |
(末行模式指令) | |
:w | 保存 |
:q | 退出 |
:q! | 不保存退出 |
:set nu | 显示行号 |
:整数 | 跳转到该行 |
使用VIM修改Linux的主机名:
/etc/hosts
文件给127.0.0.1加上本机主机名/etc/sysconfig/network
文件中的HOSTNAME。使用VIM配置网卡:
/etc/sysconfig/network-srcipts/
文件夹ifcfg-eth0
网卡配置文件使用VIM挂载cdrom 理解不了,暂时记住吧
到/etc/yum.repos.d/文件夹新建一个myrepo.repo文件
myrepo.repo文件定义如下:
[myrepo]
name=myrepo
baseurl=file///media/cdrom
enabled=1
gpgcheck=0
创建/media/cdrom 目录,执行mount /dev/cdrom /media/cdrom
设置成开机自动挂载,vim /etc/fstab
/dev/cdrom /media/cdrom iso9660 defaults 0 0