Linux常用命令的整理

文章目录

    • Linux的目录结构
    • Linux命令
      • Linux的常用命令
          • `pwd` 得到你目前在哪个目录
          • `ls` 列出当前文件夹的所有文件
          • `ctrl + z 或ctrl+d` 终止正在运行的程序。
          • `cd floder` 前往当前目录下的floder文件夹
          • `mkdir 目录名`,创建文件夹,
          • `rm -rf 目录/文件` 删除目录或者文件**以及其内容**
          • `cp a.txt ../` 将a.txt文件复制到上一层目录上。
          • `mv dir1 new_dir` 将dir1文件夹,重命名为new_dir,
          • `file file_1` 显示文件的类型,
          • `mount` 挂载
          • `find [查找路径] 寻找条件 找到后的操作` 可以按照一定规则搜索文件
      • 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
boot
dev
etc
home
lib
sbin
usr
tmp
  • 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 指定默认的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 

注意输入输出重定向跟管道流的区别,管道流是命令跟命令之间的。输入输出是命令跟文件之间的。

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个步骤:

  1. 如果是绝对路径比如/bin/ls 则直接执行
  2. 判断是否是别名命令(alias cp=cp -i 可以为常用任务起别名。),如果是别名则先将别名解释
  3. 判断命令是内部命令还是外部命令
    • 如果是内部命令则在内存中调用
    • 如果是外部命令则从解释器中调用(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的主机名:

    1. 修改/etc/hosts 文件给127.0.0.1加上本机主机名
    2. 修改 /etc/sysconfig/network 文件中的HOSTNAME。
    3. reboot即可
  • 使用VIM配置网卡:

    1. 进入/etc/sysconfig/network-srcipts/文件夹
    2. 用vim启动ifcfg-eth0网卡配置文件
    3. 把onBoot=no改成yes,收工
  • 使用VIM挂载cdrom 理解不了,暂时记住吧

    1. 到/etc/yum.repos.d/文件夹新建一个myrepo.repo文件

    2. myrepo.repo文件定义如下:

      [myrepo]
      name=myrepo
      baseurl=file///media/cdrom
      enabled=1
      gpgcheck=0
      
    3. 创建/media/cdrom 目录,执行mount /dev/cdrom /media/cdrom

    4. 设置成开机自动挂载,vim /etc/fstab

      /dev/cdrom /media/cdrom iso9660 defaults 0 0
      

你可能感兴趣的:(学习笔记)