Linux基础命令

路径

  • 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之间的区别 
查看命令帮助我么能够看到以下信息:php

-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):若是查看的文件更改文件名,可是再把文件名更改回来还能够继续查看改文件的内容。node

建立目录(mkdir)

mkdir filename #建立目录(文件夹) mkdir filename1 filename2 #建立两个目录 mkdir -p #建立多级目录

建立文件(touch echo)

touch file  #建立一个空文件 echo "123" > aa.txt #建立aa.txt的同时写入123 

使用vi命令也能够linux

删除目录(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:ipconfignginx

环境变量的配置

全局和我的配置文件所在位置:

全局:/etc/profile
我的:~/.bash_profile或者 ~/.bashrc

注:1. 若是没有.bash_profile,咱们能够用用命令: 
cp /etc/skel/.* 用户的家目录 
复制该目录下的内容 
2.注意.bash_profile的权限问题shell

生效配置

全局: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 ?vim

  • 第一种: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 退出用户

 

二者有什么区别呢?windows

当前是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 - 切换用户ruby

sudo命令,给普通用户设置root权限

使用Linux系统时,常常会被要求使用超级权限,若是拥有root帐户那还好,能够直接进行任何操做,可是这并不一个好方法,也不推荐使用。root的权限太过大了,慎用!!!bash

  • 修改/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:修改文件权限

使用数字的方式进行修改markdown

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 搜索上一个出现位置。
相关文章
相关标签/搜索