文章目录
- Linux的目录结构
- Linux命令
- Linux的常用命令
- Linux自带的一些工具
- `man` 显示命令帮助:
- `date` 显示当前时间
- `cal` calendar,显示日历,
- `echo` 命令可用于查看系统变量参数
- `bc` basic calculator 基本计算器,
- `wget 下载地址` 可以下载 文件和网站
- `elinks 网址` 用于实现一个纯文本界面的浏览器,
- `yum install elinks` 下载安装软件
- `vim /etc/inittab ` 可以编辑某个文本文件
- `cat ` 主要用来查看文件,修改不了
- `more` 则用来查看较长的纯文本文件,也是修改不了。
- `head -n 10 peng/xxx` 显示文本文件的前10行
- `tail -n 10 ` 显示文本文件的最后10行
- `od ` 查看相对特殊格式的文件
- `wc [选项] 文件名` word Counter搜集文件的字符数,行数等信息
- `cut` 可以把一行以指定的符号分割,并显示其中一列。
- `tr` 用于转换文本文件中的字符
- `diff` 查看两个文件之间的不同
- `touch `创建文件或者修改时间
- `watch -n 1` 可以让一个命令每1秒执行一次
- `tar [选项] [文件]` 对文件打包和解压缩
- `grep 关键字 文件` 从文件中找到关键字
- 浏览系统状态的命令
- `ifconfig` 可以查看本机当前网卡配置和网络状态等信息。
- `uname` 命令用于查看系统内核版本等信息,
- `uptime` 命令用于查看系统的负载情况
- `free -m` 以m为单位,显示当前系统的内存使用量
- `who` 显示当前登入主机的用户情况,其中终端设备是模拟不同计算机接入,对应control+alt+F1~F5的。
- `last` 用于查看所有系统的登入记录
- `bash_history ` 文件记录着1000个最近操作记录
- tab键补全命令
- `adduser ` 创建新用户
- `passwd` 修改用户密码
- `userdel -f hepeng` 强制删除用户
- `usermod hepeng` 修改用户信息
- 管道命令符
- 输入输出重定向
- Linux也支持少量正则表达式
- 用`echo $PATH` 来查看系统已存路径
- 使用VIM来编写文档
Linux的目录结构
Linux主要是通过命令行而非界面进行操作的,先要了解下他的结构
- bin:binaries 存放二进制可执行文件
- sbin: 也是存放二进制可执行文件,但只有root才能进去
- boot: 用于存放系统引导时使用的各种文件
- dev: 用于存放设备文件
- etc: 用于存放系统配置文件
- home: 存放用户文件的根目录
- lib: 存放系统中的程序运行所需要的共享库和内核模块
- usr: unix shared resources用于存放共享的系统资源
- tmp: 用于存放各种临时文件
- root : 一开始用root就会进入这个文件夹,这个也叫用户主目录。其他用户会进入home/hepeng这个文件夹。
Linux命令
Linux的常用命令
pwd
得到你目前在哪个目录
ls
列出当前文件夹的所有文件
没有参数是普通查看
ls -a
list all,显示隐藏文件(开头为".")ls -l
list long 列出长数据,包括文件夹的详细属性。ls -h
human readable将文件的大小,以Kb/Mb的形式显示,而不是字节ls -R
recursion 递归显示所有文件,慎用慎用。ls -d
仅查看目录本身- 上面的各种参数,可以按情况组合使用,如:ls -lhR
ctrl + z 或ctrl+d
终止正在运行的程序。
cd floder
前往当前目录下的floder文件夹
跟windows的有点像
cd ..
返回上一层文件夹cd /
返回根目录,因为Linux是没有盘符概念的,只有根目录这样。cd ~
切换到用户主目录,或者直接cd 不加任何东西也可以cd -
切换到上一次的目录
mkdir 目录名
,创建文件夹,
跟java的File类有点像吧,然而Linux并没有mkdirs命令
- mkdir 目录名1 目录名2 创建多个目录
- mkdir -p a/b/c parents创建目录树,等于file.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的位置,- 如果file_2所指的文件不存在,他会帮你生成,但是路径上的文件夹不存在,就会报错(跟java的File和Format一样啦)。但这个命令复制不了文件夹
- 如果file_2是一个文件夹,而且这个文件夹存在,他会把文件复制到file_2的文件夹下,并且用原名。
mv dir1 new_dir
将dir1文件夹,重命名为new_dir,
也会改变他子文件的路径。
- mv 命令同时也能作用于文件,等于重命名文件。
- 除了文件对文件,也能像cp那样文件对文件夹。
- -f force强行复制,即使已经存在同名文件,也不会询问直接覆盖
- -i interactive询问复制,如果目标文件已经存在,会询问用户是否覆盖
- -u update判断复制,如果源文件的日期比目标文件新,才会覆盖,否则不覆盖
file file_1
显示文件的类型,
如:etc/man.config的类型是ASCII English text文件
- 因为Linux并没有后缀名这个概念,所以这个方法尤其重要。
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{} 中{}表示搜索到的文件,要记得后面是\结尾
Linux自带的一些工具
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
,下载到指定目录- 默认情况下会下载到当前目录下的 www.baidu.com 文件夹
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_2
more
则用来查看较长的纯文本文件,也是修改不了。
数字
设置一页显示多少行-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种时间:
- mtime:内容修改时间
- ctime:更改权限和属性的时间
- atime:访问的时间
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
可以查看本机当前网卡配置和网络状态等信息。
- ifup eth0 可以激活指定网卡,也就是能上网啦。
- ifdown eth0 可以停用指定网卡,也就是不能用它上网啦。
uname
命令用于查看系统内核版本等信息,
uptime
命令用于查看系统的负载情况
free -m
以m为单位,显示当前系统的内存使用量
who
显示当前登入主机的用户情况,其中终端设备是模拟不同计算机接入,对应control+alt+F1~F5的。
last
用于查看所有系统的登入记录
bash_history
文件记录着1000个最近操作记录
- 本用户下的bast_history文件夹,他保存着该用户之前1000个历史命令。
tab键补全命令
- 按两下tab键可以查看以当前字母开头的所有命令。
- 按一下tab可以自动补全命令
adduser
创建新用户
-e
账号有效期至 : “yyyy-mm-dd”-s
指定默认的shelladduser-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
注意输入输出重定向跟管道流的区别,管道流是命令跟命令之间的。输入输出是命令跟文件之间的。
Linux也支持少量正则表达式
表达式 | 含义 |
---|---|
* | 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
可以为常用任务起别名。),如果是别名则先将别名解释 - 判断命令是内部命令还是外部命令
- 如果是内部命令则在内存中调用
- 如果是外部命令则从解释器中调用(PATH指向的文件夹)
- 通过
type 命令名
可以判断命令是否为外部命令。- 如果是内部命令会返回:
xx is a shell buildin
- 如果是内部命令会返回:
像$HOME,$SHELL,$HISTSIZE 一样,PATH也是一个系统变量,可以通过echo$ PATH
看到,通过以下形式可以新建自己的变量
WORKDIR=/home/workdir //不能有空格,当然home和workdir文件夹都需要新建一个
但这样声明的变量名只能作用于当前用户,想所有用户都能共用这个变量名,应该调用一下命令:
export WORKDIR
这样就能所有用户共用啦
使用VIM来编写文档
指令(命令模式下) | 功能 |
---|---|
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。 - reboot即可
- 修改
-
使用VIM配置网卡:
- 进入
/etc/sysconfig/network-srcipts/
文件夹 - 用vim启动
ifcfg-eth0
网卡配置文件 - 把onBoot=no改成yes,收工
- 进入
-
使用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
-