Linux常用基本命令

2018-08-23  本文已影响22人  DramaScript

Linux的目录结构

在Linux上面和windows上是不一样的,只有一个盘,每个不同功能的文件都存放在不同的文件夹上面,并且访问的权限也是不同的,大致的文件目录有如下图:


图片1.png

下面分别简单介绍每个文件夹的用途:

  • /bin,/usr/bin:该目录为命令文件目录,也称为二进制目录。包含了供系统管理员及普通用户使用的重要的linux命令和二进制(可执行)文件,包含shell解释器等。
  • /boot: 该目录中存放系统的内核文件和引导装载程序文件,/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可。
  • cdrom:光盘目录,如果插入光盘会出现光盘内容(这个已经很少用了,被时代淘汰的功能)
  • /dev: 设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件,包括字符设备和块设备等,常用的是挂载光驱mount /dev/cdrom/mnt。
  • /home: 系统默认的用户宿主目录,新增用户账号时,用户的宿主目录都存放在此目录下,表示当前用户的宿主目录,test表示用户test的宿主目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据。
  • /lib,/usr/lib,/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,该目录下存放了各种编程语言库。典型的linux系统包含了C、C++和FORTRAN语言的库文件。/lib目录下的库映像文件可以用来启动系统并执行一些命令,目录/lib/modules包含了可加载的内核模块,/lib目录存放了所有重要的库文件,其他的库文件则大部分存放在/usr/lib目录下。
  • /lib64:64位支持库,我的是32位的,里面只有一个文件。
  • /mnt,/media: mnt目录主要用来临时挂载文件系统,为某些设备提供默认挂载点,如floppy,cdrom。这样当挂载了一个设备如光驱时,就可以通过访问目录/mnt/cdrom下的文件来访问相应的光驱上的文件了。
  • /opt: 给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下。
  • /proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等。
  • /root:系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
  • /run :保存从系统诞生到当前的关于系统信息的文件。
  • /sbin:存放系统管理员可执行的命令。里面也是二进制文件。一般不给普通用户执行,除非必要的时候,普通用户获取超级管理员权限可执行部分命令。
  • /snap:snap应用框架的程序文件
  • /srv:一般是系统存储的服务相关数据。服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
  • /sys:系统中的设备和文件层次结构。文件夹中存储系统信息,用户需要的信息也从中调用。
  • /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
  • /usr:应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local 存放软件升级包,/usr/share/doc 系统说明文件存放目录。
  • /var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log。/var/log/message: 所有的登录文件存放目录。/var/spool/mail: 邮件存放的目录。 /var/run: 程序或服务启动后。建议单独分区,设置较大的磁盘空间。

Linux的命令基本格式

我们打开命令行目录,输入一个命令,如下图:


图片2.png
起始符

wang@wang-VirtualBox:~:第一个td表示当前登录管理员名,中间@无实际意义,wang-VirtualBox表示主机名,~表示当前所在目录(home目录),普通用户提示符,#表示超级用户提示符。

命令格式

基本格式:命令 [选项] [参数]

-a 显示所有文件,包括隐藏文件
-l 显示详细信息
-d 查看目录属性
-h 人性话显示文件大小
-i 显示inode

-rwxrwxr-x 解释:

第一列10个字符表示权限,第一个字符代表文件类型(在Linux中不是靠文件后缀名来识别文件的),最常用的有三种如下:
- 表示文件,d表示一个目录,l表示一个软链接文件。
接下来9位字符分为三组,rwx,rwx,r-w分别代表三个用户的权限,他们分别是 u 所有者,g所属组,o其他人,其中r读,w写,x执行。

命令行常用快捷键

Ctrl +c 强制终止当前命令
Ctrl + l 清屏,等价clear命令
Ctrl +a 光标移动到行首
Ctrl + e 光标移动到行末
Ctrl + u 快速删除当前行
Ctrl + z 把命令放入后台,但是并未终止命令
Ctrl + r 在历史命令中搜索

Linux 查看帮助文档

Linux下的cd命令

cd==change directory==切换目录
Linux中用cd命令来切换路径

Ps:-P选项将目录切换到了实际的目录,而-L选项则将目录切换到了符号链接目录,缺省时默认为-L。

Linux下的mkdir命令

在Linux系统中,mkdir命令用来创建一个目录或一个级联目录。

  1. mkdir baklog:在当前目录创建baklog目录。
  2. mkdir cep dod testlog(mkdir {cep,dod,testlog}):创建多个目录。或者多个目录用大括号({})括起来,并用逗号分隔。逗号前后不能有空白。
  3. mkdir -p baklog/{bin,lib,log/{cep,dod,testlog}}:创建级联目录。同一目录下的子目录放在大括号中,并用逗号分隔。
  4. mkdir -m=r a -- 只读
    mkdir -m=w b -- 只写
    mkdir -m=rw c -- 读写
    mkdir -m=rx d -- 读可执行
    mkdir -m=rwx e -- 读写可执行
    为目录指定权限,指定的权限为mode-umask。例如,mode=rx,umask=2,则最终权限为555-2=554,即rw-rw-r--。
  5. mkdir -vp baklog/{bin,lib,log/{cep,dod,testlog}}:查看创建目录的过程信息

rmdir和rm命令

rmdir

删除一个空的目录

mkdir -v dirname
结果: 操作成功后都会有提示信息。
一次删除两个目录,用空格分开
空目录1、2
rmdir 1 2
结果:一次删除了空目录1、2

目录1122/1
rmdir -p -v 1122/1
结果:先删除1122/1,再删除1122。
目录1122/1 1122/2
rmdir -p -v 1122/1
结果:删除1122/1,再删除1122时错误,因为此时1122不是空文件夹。

rm

删除文件或者目录

目录1122/1/a,1122/1为目录,a为文件
rm -f 1122/1
结果:提示1122/1为目录,不能删除
rm 1122/1/a
结果:成功,但是没有任何提示
rm 1122/1/b
结果:没有任何提示

目录:1122/1 1122/2
rm -r -v 1122
结果:删除1122/1 1122/22

目录1122/1/a 1122/2
rm -rf -v 1122

Linux软连接和硬连接
软连接

1.相当于windows的快捷方式
2.只是一个符号连接,所以软连接文件大小都很小
3.当运行软连接的时候,会根据连接指向找到真正的文件,然后执行
4.所有软连接文件的权限是777,而真正的权限是由指向的那个文件决定的
5.原文件丢失,软连接无法访问,会报找不到的错误
6.ls -al以后,软连接后面箭头指向的是原文件

硬连接

1.原文件和连接文件的属性完全一样
2.连接文件和原文件的关系类似于:复制+同步更新
3.当原文件丢失,硬连接文件还可以访问
4.不能跨分区,不能针对目录使用
5.原理:原文件和硬链接文件的i节点号是相同的(ls -i),1个文件名对应一个i节点,1个i节点可以通过多个文件名访问,所以,他们的属性完全相同,并且修改了其中一个的内容另一个也会跟着修改

重定向

简单的说就是将某样东西重新输入或者赋值给另外一个东西。以下就是常用的重定向符号:

> 输出重定向到一个文件或设备 覆盖原来的文件
>! 输出重定向到一个文件或设备 强制覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件
< 输入重定向到一个程序

2> 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 b-shell
2>> 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
2>&1 将一个标准错误输出重定向到标准输出 注释:1 可能就是代表 标准输出
& 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 c-shell
|& 将一个标准错误 管道 输送 到另一个命令作为输入

  1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
  2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
  3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>

[test @test test]# ls -al > list.txt
将显示的结果输出到 list.txt 文件中,若该文件以存在则予以取代!
[test @test test]# ls -al >> list.txt
将显示的结果累加到 list.txt 文件中,该文件为累加的,旧数据保留!
[test @test test]# ls -al 1> list.txt 2> list.err
将显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err
[test @test test]# ls -al 1> list.txt 2> &1
将显示的数据,不论正确或错误均输出到 list.txt 当中!错误与正确文件输出到同一个文件中,则必须以上面的方法来写!不能写成其它格式!
[test @test test]# ls -al 1> list.txt 2> /dev/null
将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃! /dev/null ,可以说成是黑洞装置。为空,即不保存。

  1. 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
  2. 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
  3. 一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
  4. 一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
  5. 错误讯息与正确讯息需要分别输出时。
Linux中grep命令

这个命令是搜索用的。下面详细介绍一下常用的方法

[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

[root@zhoucentos log]# grep w filename
wo ai wo jia
wo hen hao
da jia hao wo shi yi ge hao ren

[root@zhoucentos log]# grep -n w filename
1:wo ai wo jia
3:wo hen hao
4:da jia hao wo shi yi ge hao ren

[root@zhoucentos log]# grep -c wo filename
3

[root@zhoucentos log]# grep t[ae]st filename
test is meng
tast is huan

反向搜索-- 字符类的反向选择 [^] :如果想要搜索到有 oo 的行,但不想要 oo 前面有 g,如下

[root@zhoucentos log]# grep -n '[^g]oo' filename
8:root is a super

行首与行尾字节 ^ $

[root@zhoucentos log]# grep -n ^wo filename
1:wo ai wo jia
3:wo hen hao

找出空白行----只有行首跟行尾 (^$)

[root@zhoucentos log]# grep -n '^$' filename
6:
9:
10:

任意一个字节 . 与重复字节 *
这两个符号在正则表达式的意义如下:
. (小数点):代表『一定有一个任意字节』的意思;
* (星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态

[root@zhoucentos log]# grep -n 'g..d' filename
8:good is a gread

Linux的cp命令

cp -r dir dir2 //复制dir目录到dir2
cp a b c d dir2 //复制文件a、b、c、d到dir2。
cp -i /usr/men m*.c /usr/zh // 交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中。

我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。

Linux下的mv命令

mv [选项]  源文件或目录   目标文件或目录

视mv命令中第二个参数烈性的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移动至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移动至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

-b  若需覆盖文件,则覆盖前先行备份
-f  force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖  这个 -f 参数,大多都是指的 force, 简直就是不打招呼就壁咚
-i  若目标文件destination已经存在,就会询问是否覆盖,  -i,  interactive,交互式。 斯文的壁咚,一般你这么问,都没啥好结果,
-u  若目标文件存在,且source比较新,才会更新,  -u, update, 更新
-t  --target -directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时,目标目录在前,源文件在后。

mv test.log test1.txt // 把test.log 文件改名成test1.txt 文件

mv test1.txt test3  // 把test1.txt文件移动到test3, test3是一个文件夹,别问我为什么

mv log1.txt log2.txt log3.txt test3 // 将log1.txt log2.txt log3.txt 移动到 test3文件夹
mv -t /opt/soft/test/test4 log1.txt log2.txt log3.txt   // 将log1.txt log2.txt log3.txt 移动到 /opt/soft/test/test4路径一个目录在后,一个目录在前

mv -i log1.txt log2.txt // 它会询问你,是否覆盖log2.txt?

mv -f log3.txt log2.txt // 不管log2.txt是不是已经存在,都会被log3.txt覆盖掉了

mv dir1 dir2  // 如果目录dir2不存在,就将目录dir1改名为dir2;否则,将dir1移动到dir2中

mv * ../    // *这个星号是通配符,匹配任意字符 ; ../ 这个是上级目录

mv test3/*.txt test5 // 把当前目录的一个子目录里的文件移动到另一个子目录里

mv log1.txt -b log2.txt // 文件被覆盖前做简单备份,前面加参数-b

-b 不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。
--backup 该选项指定如果目标文件存在时的动作,共有四种备份策略:
  1.CONTROL=none或off 不备份
  2.CONTROL=numbered或t数字编号的备份
  3.CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1...n:
  执行mv操作前已存在以数字编号的文件log2.txt txt.1,那么在此执行将产生log2.txt2,以此类推。如果之前没有以数字编号的文件,则使用下面降到的简单备份。
  4.CONTROL=simple或never:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。

find命令

find命令详解

tar压缩和解压缩

Linux下的tar压缩解压缩命令详解

Linux中which命令的用法

bixiaopeng@bixiaopengtekiMacBook-Pro ~$ which pwd
/bin/pwd

上一篇 下一篇

猜你喜欢

热点阅读