常用linux命令记录

用winscp 可以方便的将window的文件上传到linux机器上。

今天学习的linux命令:

ls:(列出当前目录下的文件和文件夹)

ls -lt:(列出文件,并按照时间降序显示)

ls -ltr:(列出文件,并按照时间升序显示)

cd :

cd -(回到进入当前目录之前所在的目录,比如刚开始在/home/test目录,然后我执行了cd /var进入/var目录下,此时我执行cd -就可以回到/home/test目录了。类似浏览器页面回退的功能)

pwd:(显示当前目录)

mkdir:创建目录

touch:创建文件

rmdir : 删除文件夹  ,文件夹不为空的时候删除不了,要用rm -rf dir1(r:recursive递归,f:force 直接删除,不询问)

rm :删除文件或者文件夹(rm -rf dir1  删除文件夹,rm a.txt 删除文件)

cp:拷贝  (cp d1 d2 把文件d1拷贝一份,生成文件d2,  cp -r dir1 dir2  拷贝文件夹dir1,生成文件夹dir2)

mv:移动(移动文件和文件夹都一样,mv d1  dir1 把文件或者文件夹d1移动到文件夹dir1下)

vi:文件操作:示例:

vi a.txt    (进入a.txt文件的操作中,如果文件不存在则创建,首先进入命令模式)

a  (进入编辑模式,append)

(执行编辑操作)

按ESC键结束编辑,返回命令模式

通过:w(冒号+w  表示保存)

:q(冒号+q  表示退出)

:q!(冒号+q+感叹号  表示退出但不保存)

返回之后,通过more a.txt 查看内容

vi其他命令:(shift+小写字母表示大写字母)

     :set nu(显示行号)

     :set nonu(隐藏行号)

     20G(跳到第20行)

     15->(调到当前行的第15个字符处)

     gg(调到第一行)

     1G(和gg一样,调到第一行)

     G(调到最后一行)

Vim常用操作:


插入命令:

命令 作用
O    在光标下插入新行
o    在光标所在行行首插入
I    在光标所在字符前插入
i    在光标所在行尾插入
A    在光标所在字符后插入
a    在光标上插入新行


定位命令:

命令        作用
: set nu    设置行号
: set nonu  取消行号
gg          到第一行
G           到最后一行
nG          到第n行
: n         到第n行
$           移至行尾
0           移至行首

删除命令:

命令        作用
x           删除光标所在处字符  
nx          删除光标所在处后n个字符
dd          删除光标所在行,ndd删除n行
dG          删除光标所在行到文件末尾内容
D           删除光标所在处到行尾内容
:n1,n2d     删除指定范围的行


复制和剪切命令:

命令        作用
yy         复制当前行
nyy        复制当前行以下n行
dd         剪切当前行
ndd        剪切当前行以下n行
p、P        粘贴在当前光标所在行下或行上


替换和取消命令:

命令 作用
r   取代光标所在处字符
R   从光标所在处开始替换字符,按Esc结束
u   取消上一步操作


搜索和搜索替换命令:

命令                  作用
/string               搜索指定字符串,搜索时忽略大小写 :set ic
n                     搜索指定字符串的下一个出现位置
:%s/old/new/g         全文替换指定字符串
:n1,n2s/old/new/g     在一定范围内替换指定字符串


保存和退出命令:

命令             作用
:w               保存修改
:w new_filename  另存为指定文件
:wq              保存修改并退出
ZZ               快捷键,保存修改并退出
:q!              不保存修改退出
:wq!             保存修改并退出(文件所有者及root可使用)



Vim使用技巧:

导入命令执行结果 :r !命令
定义快捷键 :map 快捷键 触发命令
  范例: 
        : map ^P I#<ESC>
        : map ^B 0x
 连续行注释  
             :n1,n2s/^/#/g
             :n1,n2s/^#//g
             :n1,n2s/^/\/\//g
 替换 :ab mymail [email protected]

vi: undo/redo

撤销/重做

在命令模式,假如我们通过dd删除了一行,想要撤销该删除操作,通过 u 即可(undo),如果撤销之后,我们又想重做该操作,通过ctrl + r 即可(redo)。

vi filename 进入命令模式,a/A/i/I/o/O 进入编辑模式, ESC返回命令模式。

 在shell里面直接进行数字计算(加减乘除):

echo $((2*5))

就可以得到结果啦。

cat:直接看例子:

           cat a.txt (查看a.txt内容 结果跟more a.txt 一样)

          tac a.txt(倒序显示a.txt内容)

          head -3 a.txt (显示a.txt的前三行)

          tail -3 a.txt(显示a.txt的最后3行)

find:查找

          例如:find /demo -name a.txt(在根目录的demo文件夹下查找名字为a.txt的文件)

crontab -e:

进入定时任务编辑窗口。(通常使用一个shell脚本存储要做的操作,例如:* * * * * /home/my_crontab_task.sh,具体的操作都在这个shell中)

crontab -r:

删除所有定时任务。

crontab -l:

列出所有的定时任务。

netstat -anp:

显示出全部的网络信息及其进程号(-p)。

ps -ef:

显示全部进程。

ps -aux:

显示全部进程的详细信息

查看某个进程是否存在:

ps -ef | grep mysql

查看mysql进程是否存在。

ifconfig eth0 192.168.1.111

临时修改ip

top:

动态显示内存,CPU,等信息的使用情况

top -d 10

每10秒刷新一次

date

显示或设置系统时间

date MMDDHHMMCCYY.SS

月月日日时时分分年年年年.秒秒

traceroute www.xx.com

追踪完整路由信息

route

查看路由表

rpm(Red Hat PackageManager)

安装软件:

rpm  -ivh xxx.rpm

rpm command and options

  • -i : install a package
  • -v : verbose
  • -h : print hash marks as the package archive is unpacked.

查看安装的软件:

rpm -qa

  • -q query operation
  • -a queries all installed packages

查看是否安装了MySQL:

rpm -qa | grep mysql

如果没有安装telnet服务,可以执行 :

yum install telnet-server 

安装服务 

yum install telnet 

安装命令 

然后编辑vi /etc/xinetd.d/telnet 文件,激活telnet,默认是禁用的(disabled改为no)

然后重启服务,执行命令 service xinetd restart 

参考:安装telnet 

使用 vi 编辑器的时候,要显示行号,可以在命令模式下执行:

    :set nu  或者  :set number

取消显示行号:

   :set nu!

  或者:

   :set nonu 

即可

RPM/YUM用法

RPM不会帮我们解决包的以来问题,YUM会帮我们解决包依赖的问题。

查询全部已经安装的软件:

rpm -qa

查询是否已经安装了mysql:

rpm -qa | grep mysql

使用yum list/info查看包信息:

yum list mysql

yum info mysql

使用rpm -e(erase)删除包:(如果这个包被其他包依赖,就不能被删除)

rpm -e xxx

可以使用yum remove删除

yum remove xxx

升级包:

升级所有mysql开头的包:

yum update 'mysql*'

使用rpm -i 安装:

rpm -i xxx.rpm

rpm :

-i :install 的意思

-v :察看更细部的安装资讯画面

-h :以安装资讯列显示安装进度

所以通常用:

rpm -ivh xxx.rpm 安装包

使用yum install安装:

yum install mysql

CentOS 下mount share folder:(假设在setting中share folder里面配置的share folder 名字是 myShareFolder)

1. cd /mnt

2. mkdir vm_share(名字可自己决定)

3. mount -t vboxsf myShareFolder vm_share

就可以了。

su:

su表示切换到指定的账号。

如果直接输入su,默认表示切换到root。

su user1表示切换到user1账号,但是环境变量和目录仍旧保持不变。

su - user1表示切换到user1账号,同时环境变量和目录也切换过去,就跟user1自己登陆进来一样。

 不同方式执行shell 的区别:

假如我们有一个shell:

#!/bin/bash
# Program:
#	User inputs his first name and last name.  Program shows his full name.
# History:
# 2005/08/23	VBird	First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input your first name: " firstname
read -p "Please input your last name:  " lastname
echo -e "\nYour full name is: $firstname $lastname"

无论我们通过 绝对路径(/xxx/xxx/sh02.sh),还是相对路径(./sh02.sh),还是通过 bash 执行脚本(sh sh02.sh),执行完成之后,在父程序bash环境下是拿不到 firstname  lastname 变量值的。

但是如果我们通过 source sh02.sh的方式执行的话,执行完之后,我们仍可以拿到 firstname  lastname 变量值。因为这种方式是在父程序bash环境下执行的,所以我们可以拿到里面的变量。

翻页:

在linux命令行中通过 shift + pageup/pagedown 翻页,通过 shift + home/end 跳到顶部/底部

在vi编辑器里面,vi进入之后,通过 ctrl + f/b 向下/上翻页,通过 shift + g 跳到底部,通过gg跳到顶部。

where:     whereis  ls/find/vi/mv/cp      显示这些命令对于的执行文件的位置

ln:  硬链接/软链接

          ln  a.txt  b.txt  (复制了一份到b.txt,同时建立了a.txt和b.txt的链接,修改其中任一文件,另一文件也会改变,称为硬链接,此时删除其中一份文件,不会影响另外文件)

          ln -s a.txt b.txt(建立一个快捷方式b.txt指向了a.txt,修改任一文件,另外文件也会修改,但是删除源文件的话,链接文件会变红色,表示指向的文件不存在)

 useradd(或者adduser): 添加用户:

         useradd  testuser1(添加新用户testuser1,会在home目录下面创建一个testuser1文件夹,删除的时候要一并删除)

userdel   :  删除用户 

        userdel testuser1  

        然后切换到home下,rm  -rf  testuser1   删除创建的文件夹

passwd:  修改用户密码  :  首先指定要修改的用户:  passwd   testuser1   然后按照提示是输入密码即可

在etc目录下的passwd文件实际上记录的是所有的用户:more  passwd   即可查看所有用户  ,最后一列对应的是使用的shell类别(如 bash ,   csh  ,  bsh  ,ksh 等)

在etc目录下的group文件记录的是所有的用户组, more  group  即可查看所有的组

可以通过  

groupadd   testgroup  添加一个用户组

userdel:  删除用户 ,userdel  testuser1    删除用户  testuser1,然后还要删除home目录下面对于的文件夹  rm  -rf   testuser1  即可完全删除该用户及其信息

su:切换用户 (switch  user)  :

      su  testuser1切换到testuser1

 echo $$(查看shell的进程号)

我们常用一些ssh客户端在windows上远程登录到Linux上去操作,有时候会需要配置一些login scripts 或者 tunneling等设置,来方便平时操作:

login scripts: 

比如:

Expect: password:

Send: 123456

表示当收到我们期望的字符串(password:)的时候, XShell自动发送我们设置的内容(123456),经常用于自动登录使用。

Tunneling:

比如我们add了一个Tunneling(按照下面的Forwarding Rule):

Type: Local

Source Host:localhost

Listening Port: 12345(本地映射端口)

Destination Host: 192.168.1.111

Destination Port:22(目标映射端口)

通过上面的Tunneling配置,我们就做了一个端口映射,本地监听在12345端口,同时映射到192.168.1.111的22端口(用22端口常用于本地上传资料到远程服务器上面)。

假如192.168.1.111机器上面同时又有一个MySQL数据库(监听端口默认是3306),我们可以通过add一个Tunneling映射到该机器的3306端口:

Type: Local

Source Host:localhost

Listening Port: 13306(本地映射端口)

Destination Host: 192.168.1.111

Destination Port:3306(目标映射端口)

这样在本地通过访问13306端口就可以访问目标机器的MySQL数据库了。

linux 中,引号里面也可以使用 $ 符号,但是单引号和双引号是有区别的(参考:鸟哥linux私房菜):

双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示:

『var="lang is $LANG"』则『echo $var』可得『lang is en_US』

单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:

『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』

date --date='2 days ago' +%Y%m%d

现实结果是:20150617

date: 

--date: 显示后面字符串里面描述的时间。(2 days ago, 即两天前的时间)

+FORMAT: 时间显示的格式。

date1=$(date --date='2 days ago' +%Y%m%d)

echo $date1

现实结果是:20150617

上面date1=$(date --date='2 days ago' +%Y%m%d)的意思是首先将$(exp) 小括号里面的语句执行,类似javascript里面的 eval(“alert('aaa')”) 一样的意思。然后将执行的结果赋给变量date1,这样就可以通过echo $date1 看到该变量的值了(参考:鸟哥linux私房菜)。

ubuntu 启用 root 账号:

Ubuntu 12.04 root用户登录设置 
Ubuntu 12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录。以普通身份登陆Ubuntu后我们需要做一些修改,普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端窗口里面输入: sudo  -s.然后输入普通用户登陆的密码,回车即可进入 root用户权限模式。 

然后执行: vi /etc/lightdm/lightdm.conf 

增加 greeter-show-manual-login=true  allow-guest=false  . 修改完的整个配置文件是 

[SeatDefaults] 
greeter-session=unity-greeter 
user-session=Ubuntu 
greeter-show-manual-login=true #手工输入登陆系统的用户名和密码 
allow-guest=false   #不允许guest登录 

然后我们启动root帐号: 
sudo passwd root 
根据提示输入roott帐号密码。 

重启Ubuntu,登录窗口会有“登录”选项,这时候我们就可以通过root登录了。

ubuntu 切换图形界面和命令行界面:ctrl+alt + f1/f2/f7(f7是图形界面,另外两个是命令行界面) 

ubuntu 上下左右和delete键盘问题

 在ubuntu下,初始使用vi的时候有点问题,就是在编辑模式下使用方向键的时候,并不会使光标移动,而是在命令行中出现[A [B [C [D之类的字母,而且编辑错误的话,就连平时关于的退格键(Backspace键)都使用不了,只能用Delete来删除。针对这个问题,网上的答案有很多,例如是安装完整版的vim啊,编辑/etc/vim/vimrc.tiny等方法,很杂很乱,在这里我就做个详细的总结吧:

一、编辑/etc/vim/vimrc.tiny

由于/etc/vim/vimrc.tiny的拥有者是root用户,所以要在root的权限下对这个文件进行修改。很简单,这个文件里面的倒数第二句话是“set compatible”,如下所示:   

                                       常用linux命令记录

将“compatible”改成“nocompatible”非兼容模式就可以解决方向键变ABCD的问题了。接下来要解决Backspace键的问题也很简单,在刚才那句话后面再加一句:

  1. set backspace=2  
变成下图所示:

                                       常用linux命令记录

就可以解决问题了。这个时候,无论对于哪个用户,使用vi都能很方便的按照我们的习惯去编辑文件了。

相关推荐