Linux基础命令
2018-07-29 08:37:55来源:博客园 阅读 ()
路径
- pwd:显示完整路径名
- cd : 1. 绝对路径:以/开头的 2. 相对路径:不以/开头的
cd :进入当前用户的家目录
cd ../ : #退回上一级目录
cd - :#返回上一次操作
cd ~ :#家目录
cd /tmp : 切换到指定目录 (按1次 tab键自动补全 2次打印所有相关的)
注:cd和下面的符号之间必须有空格;家目录是系统自动给每个用户创建的目录。
如上图所示,其中/表示根目录,/home/use1表示的是use1的家目录,/home/use2是use2的家目录,选择use1用户。
[use1@localhost Desktop]$ cd ~ //进入家目录
[use1@localhost ~]$ pwd //显示完整路径名
/home/use1
[use1@localhost ~]$ cd demo1 //选择demo1路径
[use1@localhost demo1]$ pwd
/home/use1/demo1
[use1@localhost demo1]$ cd - //返回上一个文加夹
/home/use1
[use1@localhost ~]$ cd .. //返回上一级目录
[use1@localhost home]$ pwd
/home
- clear: 清空桌面
对文件的操作(一切皆文件)
查看文件或文件夹
ls #显示当前目录下的文件名和文件夹名称
ls -a #查看所有的文件和文件夹,包括隐藏文件,隐藏文件以.开头
ls -l #查看文件和文件夹的详细内容(包括创建时间,权限,大小等信息),简写为ll
ll -d #查看文件夹和文件夹信息(包括创建时间,权限,大小等信息),不包括名字
ll -h #查看文件和文件夹的信息,和ll的区别是文件大小用k表示
du -sh #查看文件和文件夹大小
ll -t(-rt) #按文件创建的时间进行排序(逆序)
- 注:ll-h 即为ls -lh是文件的实际大小;
du -sh显示文件所占用的 block 大小;block默认是4k。
查看文件的内容
cat 文件名 #查看文件的内容(但不适合大文件的读取)
more 文件名 #查看文件的内容,以页的形式展示,用空格键翻页
tail 文件名 #直接查看文件末尾的内容
tail -n 文件名 #查看文件最后n行的内容
tail -f 文件名 #查看文件的内容
tail -F 文件名 #查看文件的内容
注意:tail -f 和 tail - F之间的区别
查看命令帮助我么可以看到如下信息:
-f, --follow[={name|descriptor}]
output appended data as the file grows;
-f, --follow, and --follow=descriptor are
equivalent
-F same as --follow=name --retry
使用-f一直查看该文件的内容,如果对文件的内容和进行更改也会显示出来更改的内容,但是如果文件名更改则查看失败,即使文件名再更改回来也不行。
如果是使用-F和-f的区别在于(retry):如果查看的文件更改文件名,但是再把文件名更改回来还可以继续查看改文件的内容。
创建目录(mkdir)
mkdir filename #创建目录(文件夹)
mkdir filename1 filename2 #创建两个目录
mkdir -p #创建多级目录
创建文件(touch echo)
touch file #创建一个空文件
echo "123" > aa.txt #创建aa.txt的同时写入123
使用vi命令也可以
删除目录(rmdir)
rmdir 目录名 #删除一个目录(空目录)
删除文件(rm)
rm 文件名 #删除一个文件
# rm abc
rm: remove regular empty file `abc'? y
rm -r --recursive 递归删除
rm -f 强制删除,不用提示
rm -rf 强制递归删除
rm -rf * #删除所有当前文件夹下的内容(慎用!)
shell脚本:
[root@rzdatahadoop001 ~]# mkdir /home/hadoop/001
[root@rzdatahadoop001 ~]# hpath="/home/hadoop/001"
[root@rzdatahadoop001 ~]# echo $hpath
/home/hadoop/001
[root@rzdatahadoop001 ~]# touch /home/hadoop/001/xxx.log
[root@rzdatahadoop001 ~]# echo $hpath
/home/hadoop/001
[root@rzdatahadoop001 ~]# rm -rf $hpath/*
[root@rzdatahadoop001 ~]# ll /home/hadoop/001/
total 0
#逻辑错误导致hpath复制为""(空)
[root@rzdatahadoop001 ~]# touch /home/hadoop/001/xxx.log
[root@rzdatahadoop001 ~]# hpath=""
[root@rzdatahadoop001 ~]# echo $hpath
[root@rzdatahadoop001 ~]# rm -rf $hpath/* ==>rm -rf /* 所有文件都删除了
if [ "${hpath}x" == "x" ];then
echo "危险!退出!"
exit
else
rm -rf $hpath/*
fi
复制文件(cp)
cp copy(使用该命令要养成备份的习惯)
cp 待拷贝文件 拷贝后的文件
移动或重新命名文件(mv)
mv move
mv 带剪切文件 剪切后文件(文件名可改变)
覆盖和追加(> >>)
> :覆盖文件中的内容
>> :追加文件中的内容(加在最后)
输出和输入(echo)
echo “123” :打印123
echo “123”>文件名 :把该文件的内容修改为123;(“>”符号两边可有空格也可没有)
echo “123” >>文件名:在该文件的最后追加123
帮助命令(man help)
man 命令 :查看命令的帮助信息(详细) ,ctrl+z退出查看
命令 --help:查看命令的帮助信息
权限操作
查看ip
ifconfig :查看虚拟机ip
hostname -i :(前提:配置好用户名和IP的映射关系)查看ip
win下查看IP:ipconfig
环境变量的配置
全局和个人配置文件所在位置:
全局:/etc/profile
个人:~/.bash_profile或者 ~/.bashrc
注:1. 如果没有.bash_profile,我们可以用用命令: cp /etc/skel/.* 用户的家目录
复制该目录下的内容
2.注意.bash_profile的权限问题
生效配置
全局:source /etc/profile
个人:. .bash_profile(.bashrc) 或者 source .bash_profile(.bashrc)
查看别名(alias)
alias :查看虚拟机中有哪些别名
设置临时别名:
alias rt='cd /home/hadoop' (=前后没有空格)
设置永久别名:需要配置到用户的环境变量中,然后执行生效命令
1. 修改root用户的配置文件:vi /etc/profile
2. 在最后一行添加:alias rt='cd /home/hadoop' 命令
3. 执行生效命令:source /etc/profile
查看历史命令(history )
history #显示出所有历史记录
history n #显示出n条记录
!n #执行第n条记录
管道命令(|)
- 管道的两边都是命令,左边的命令先执行,执行的结果作为右边命令的输入
history | grep hadoop :会过滤出所有hadoop相关的内容。
怎样查看进程?(*****)
[root@rzdatahadoop001 ~]# ps -ef | grep ntp
ntp 1393 1 0 11:10 ? 00:00:02 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
ntp :进程运行user
1393 :pid
1: 父进程id
怎样查看端口号?(*****)
[root@rzdatahadoop001 ~]# netstat -nlp |grep ntp
[root@rzdatahadoop001 ~]# ps -ef|grep ntpd
问题:怎样查询一个程序(ntp)的端口号、ip ?
- 第一种:ps -ef|grep ntp 先查询出pid 再根据pid查询端口号和ip
ntp 1393 1 0 14:57 ? 00:00:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root 2482 2130 0 15:22 pts/0 00:00:00 grep ntp
[root@zydatahadoop001 ~]# netstat -nlp | grep 1393
udp 0 0 192.168.137.201:123 0.0.0.0:* 1393/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 1393/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 1393/ntpd
udp 0 0 fe80::20c:29ff:fe71:95ad:123 :::* 1393/ntpd
udp 0 0 ::1:123 :::* 1393/ntpd
udp 0 0 :::123 :::* 1393/ntpd
192.168.137.201:123 这就查询出该机器的ip和ntp对应的端口号
- 第二种:直接查询
[root@zydatahadoop001 ~]# netstat -nlp | grep ntp
udp 0 0 192.168.137.201:123 0.0.0.0:* 1393/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 1393/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 1393/ntpd
udp 0 0 fe80::20c:29ff:fe71:95ad:123 :::* 1393/ntpd
udp 0 0 ::1:123 :::* 1393/ntpd
udp 0 0 :::123 :::* 1393/ntpd
192.168.137.201:123 这就查询出该机器的ip和ntp对应的端口号
用户、用户组的常用命令:(IT运维)
- 添加用户(useradd)
[root@rzdatahadoop001 ~]# useradd test 添加一个用户(test)
- 查询用户信息(id 用户名)
[root@rzdatahadoop001 ~]# id test 查询该用户。
uid=501(test) gid=501(test) groups=501(test)
gid:主组
groups:所在组
- 删除用户(userdel)
[root@rzdatahadoop001 ~]# userdel test 删除该用户
[root@rzdatahadoop001 ~]#
[root@rzdatahadoop001 ~]# id test
id: ruoze: No such user
[root@rzdatahadoop001 ~]# useradd test 这时我们再添加test会出现下面的错误在家目录已经存在了
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@rzdatahadoop001 ~]#
[root@rzdatahadoop001 ~]# ll /home 我们查询家目录
total 8
drwx------. 27 jepson jepson 4096 Dec 2 12:00 hadoop
drwx------. 4 ruoze ruoze 4096 Dec 2 21:21 test (该用户还在)
[root@rzdatahadoop001 ~]#
[root@rzdatahadoop001 ~]#
[root@rzdatahadoop001 ~]# cat /etc/passwd | grep test (利用管道查询该用户信息)
/etc/passwd :该目录下存放用户信息
test:x:501:501::/home/test:/bin/bash
[root@rzdatahadoop001 ~]#
[root@rzdatahadoop001 ~]# cat /etc/group |grep test
test:x:501:
- 添加一个用户到一个新的用户组(usermod)
[root@rzdatahadoop001 ~]# usermod -a -G bigdata test
[root@rzdatahadoop001 ~]# id test
uid=501(test) gid=501(test) groups=501(test),502(bigdata)
[root@rzdatahadoop001 ~]#
[root@rzdatahadoop001 ~]#
[root@rzdatahadoop001 ~]# usermod -g bigdata test
[root@rzdatahadoop001 ~]# id test
uid=501(test) gid=502(bigdata) groups=502(bigdata)
- 修改密码
[root@rzdatahadoop001 ~]# passwd test
如何切换用户
su test 切换到test用户
su - test 切换到test用户
exit 退出用户
两者有什么区别呢?
当前是root用户,使用su切换用户:
[root@zydatahadoop001 home]# ll 查看家目录下所在用户
total 4
drwx------. 27 grace grace 4096 Dec 5 2017 grace
[root@zydatahadoop001 home]# su grace 使用su切换到grace用户
[grace@zydatahadoop001 home]$ pwd 查看当前所在位置
/home
[grace@zydatahadoop001 home]$ exit 退出用户
exit
使用su - 切换用户:
[root@zydatahadoop001 home]# su - grace 使用su - 切换到grace用户
[grace@zydatahadoop001 ~]$ pwd 查看当前所在位置
/home/grace
可以看出使用su -切换用户会进入其用户的家目录下而是用su则不会改变。
当我们使用su -切换用户同时也会执行用户的配置文件(/home/grace/.bash_profile) 一般使用su - 切换用户
sudo命令,给普通用户设置root权限
使用Linux系统时,经常会被要求使用超级权限,如果拥有root账户那还好,可以直接进行任何操作,但是这并不一个好方法,也不推荐使用。root的权限太过大了,慎用!!!
- 修改/etc/sudoers 配置文件
修改/etc/sudoers,为一个用户加sudo权限,添加一行
[root@rzdatahadoop001 ~]# vi /etc/sudoers
用户名 ALL=(root) NOPASSWD:ALL (添加这一行内容)
NOPASSWD:ALL 表示使用sudo命令时不用输入密码
测试效果:
[grace@rzdatahadoop001 ~]$ ls -l /root
ls: cannot open directory /root: Permission denied (出现:Permission denied 代表权限问题)
[grace@rzdatahadoop001 ~]$ sudo ls -l /root
total 120
文件权限
文件的权限位是从第二位到第十位
r: read 读
w: write 写
x: execute 执行
-: 代表在这一位没有这个权限
-rw-r--r--. 1 root root 4 Dec 2 12:29 xxx.log 存在一个xxx.log文件
第一位: -:代表文件 d:代表文件夹 l:代表连接
第一组: rw- root这个用户对这个文件只有读写权限
第二组: r-- root这个组的所有用户对这个文件只有读权限
第三组: r-- 其他用户组的所有用户组对这个文件只有读权限
修改文件或文件夹所属用户和用户组(chown)
- chown: 修改文件夹或文件的所属的用户及用户组
chown 用户名:组名 文件名
chown -R test:test /0001 -R:参数代表对文件夹的修改
chown test:test /root/xxx.log 即修改用户也修改了用户组
chown 用户名 文件名
chown test /root/xxx.log 只修改用户
chgrp change group :修改所在组
chgrp 组名 文件名
chgrp test /root/xxx.log
修改文件权限(chmod)
- chmod:修改文件权限
使用数字的方式进行修改
chmod 数字 文件名
r 4 2^2
w 2 2^1
x 1 2^0
将对应的数字相加,就是最终的权限。
rw-r--r-- ==》 644
777 =》 rwxrwxrwx
文件夹 : -R 递归--》文件夹(如果修改文件夹需要带上参数-R)
chmod -R 777 /0001 对文件夹进行修改权限 变为:rwxrwxrwx
chmod 777 /root/xxx.log 对文件进行权限修改 变为:rwxrwxrwx
对RPM包的操作
- 查询:
rpm -qa 查询所有安装在linux上的软件
rpm -qa | grep sudo 查询在操作系统上安装的sudo软件
- 卸载:
rpm -e 软件名
rpm -e sudo 删除sudo软件,会同时删除/etc/sudoers文件,但是系统会自动生成一个
/etc/sudoers.rpmsave 文件备份源文件
rpm的依赖问题
在linux操作系统中使用rpm对软件进行安装或卸载的时候,会有软件之间的
依赖问题存在,比如:安装a软件,要先安装b软件和c软件。。。
如果想要强行安装或卸载而不考虑依赖问题,那么需要使用到--nodeps参数
--nodeps do not verify package dependencies
rpm -e --nodeps 软件名 #强行卸载这个软件
YUM
首先要保证上网环境,开源镜像是系统默认的。
安装软件:
yum [-y] install 软件名
-y: 在安装过程中自动输入yes
- 查询:
yum list
查询yum源上拥有的软件
# yum list installed | more
查询在本机上已经安装的软件包
# yum list updates | more
查询可以更新的软件包
- 卸载软件包
yum [-y] remove 软件名
-y: 在卸载的过程中自动输入yes
wget下载网络资源
- wget:从网络上下载资源,支持HTTP HTTPS FTP这些协议
- 语法:
wget 网络地址
#将网络上的文件下载下来后,存储在当前目录下
wget -O 文件名 网络地址
#网络上的文件下载下来后,直接存在某个文件中
wget -b 网络地址
#在后台下载网络文件
压缩和解压
在windows中,使用一款压缩软件就能全部搞定压缩和解压缩的问题
在linux中,一款压缩软件不能适用于所有压缩的文件
- tar(常用)
打包压缩命令
使用tar进行打包压缩的文件以.tar.gz结尾
压缩文件:
tar -zcvf filename.tar.gz file1 file2 ...
解压缩文件:
tar -zxvf filename.tar.gz
tar -zxvf filename.tar.gz -C 目录 #解压缩到指定目录下
参数:
-z, --gzip, --gunzip, --ungzip filter the archive through gzip
-c, --create create a new archive
-x, --extract, --get extract files from an archive
-v, --verbose verbosely list files processed
-f, --file=ARCHIVE use archive file or device ARCHIVE
特点:既可以进行压缩,也可以进行解压缩
源文件保留
硬盘、内存、系统情况查看
df -h 查看硬盘使用情况
free -m 查看内存使用情况
top 查看系统情况
windows与linux交互(常用)
- 首先需要安装lrzsz
yum -y install lrzsz - rz : 从window上传到linux
输入rz命令会弹出窗口,这时就可以选择需要上传的文件 - sz :从linux下载到window上
格式:sz 文件名
上传下载的路径可以使用sourceCRT进行指定
作业调度(crontab)
查看当前用户下哪些作业: crontab -l
添加、编辑:crontab -e
这时可能会使用shell脚本执行命令
后台执行命令
&
nohup
screen(yum install -y screen)
工作:
./test.sh &
nohup ./test.sh & --》生成nohup.out
nohup ./test.sh>test.log 2>&1 &
screen:
screen -list 查看会话
screen -S xxx 建立一个后台的会话
screen -r xxx/id 进入会话
退出会话: ctrl+a+d --》[detached] 分离
软连接 (ln -s)
应用场景:
在/A/test.sh 需要自行的shell脚本,现在想移动到/B/ 目录下,但是我此时的访问路径还是/A/test.sh ,这时候就可以使用软连接:
- 创建 A,B目录 ,并在A目录下创建test.sh脚本
[grace@zydatahadoop001 ~]$ ll
total 40
drwxrwxr-x. 2 grace grace 4096 Dec 19 03:32 A
drwxrwxr-x. 2 grace grace 4096 Dec 19 03:26 B
drwxr-xr-x. 5 grace grace 4096 Dec 2 01:32 Desktop
drwxr-xr-x. 2 grace grace 4096 Dec 1 17:57 Documents
drwxr-xr-x. 2 grace grace 4096 Dec 1 17:57 Downloads
drwxr-xr-x. 2 grace grace 4096 Dec 1 17:57 Music
drwxr-xr-x. 2 grace grace 4096 Dec 1 17:57 Pictures
drwxr-xr-x. 2 grace grace 4096 Dec 1 17:57 Public
drwxr-xr-x. 2 grace grace 4096 Dec 1 17:57 Templates
drwxr-xr-x. 2 grace grace 4096 Dec 1 17:57 Videos
[grace@zydatahadoop001 ~]$ cat A/test.sh
#!/bin/sh
date
- 将/A/test.sh移动到 /B/目录下
[grace@zydatahadoop001 ~]$ mv A/test.sh B/
[grace@zydatahadoop001 ~]$ cd B
[grace@zydatahadoop001 B]$ ll
total 4
-rwxrwxrwx. 1 grace grace 15 Dec 19 03:32 test.sh
- 创建软连接
[grace@zydatahadoop001 B]$ ln -s /home/grace/B/test.sh /home/grace/A/test.sh
[grace@zydatahadoop001 B]$ ll
total 4
-rwxrwxrwx. 1 grace grace 15 Dec 19 03:32 test.sh
[grace@zydatahadoop001 ~]$ cd A
[grace@zydatahadoop001 A]$ ll
total 0
lrwxrwxrwx. 1 grace grace 21 Dec 19 03:37 test.sh -> /home/grace/B/test.sh
此时并不因为test.sh文件移动而修改执行命令:
[grace@zydatahadoop001 ~]$ A/test.sh
Tue Dec 19 03:51:19 CST 2017
成功打印信息
vi
vi命令是UNIX操作系统和
类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。
vi的编辑模式和命令模式
- 编辑模式:完成对文本的编辑。
- 命令模式:实现对文件的操作。
- 尾行模式:使用esc进入到命令模式后,保存文件或者退出时,要先进入尾行模式使用shift+:。
三种模式之间的切换:
vi filename :进入命令模式,使用“A”、“a”、“O”、“o”、“I”、“i”键,切换到编辑模式;使用“esc”键,从编辑模式切换到命令模式。在命令模式中shift+:进入尾行模式。
如何切换到编辑模式
A:在当前光标的行末添加文本;
a: 在当前光标的字符后添加文本;
I:在当前光标的行首插入文本;
i:在当前光标的字符前插入文本;
O:在当前光标的行前插入一行空格;
o: 在当前光标的行后插入一行空格。
命令模式下的操作
gg:光标停留在第一行第一个字符;
G:光标停留在最后一行第一个字符;
dd:剪切光标所在一行内容;
dG:删除光标所在行即下面所有行
ndd(数字+dd):剪切光标下方n行;
D:从光标所在的位置剪切到该行的末尾;
p:粘贴
yy:复制一行;
nyy(数字+yy):复制光标下方n行;
shift+$:光标移动到该行的最后一个字符。
尾行模式下的操作
wq:在命令模式下,执行存盘退出操作;
w:在命令模式下,执行存盘操作;
q:在命令模式下,执行退出vi操作;
q!:在命令模式下,执行强制退出vi操作;
wq!:强制保存+退出。
如果是只读文件,你想往里面写东西,会报: ‘readonly’ option is set (add ! to override)
搜索命令
在命令模式下,搜索一个字符串string
/string
n 继续搜索下一个;
N 搜索上一个出现位置。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:centos 配置yum源
下一篇:centos7初始优化
- Linux系统如何设置开机自动运行脚本? 2020-06-11
- Linux指令和shell脚本 2020-06-11
- 适合开发者的最佳Linux发行版 2020-06-11
- awk命令详解 2020-06-10
- RAID 1 软件实现(Linux 系统) 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash