linux 常用的基本命令

$ ls # 查看文件列表

$ ls dir_name | more : 分页查看文件列表

$ ll -h dir_name # 以 KB、MB、GB格式查看文件大小

$ ll -Sh  # --sort[S] 根据文件大小排序,--time[t]修改时间  --reverse[r]逆序排序

cp : 复制文件或文件夹

$ cp -r /var/www/xkzd /home/www/xkzd
- r 表示递归复制该目录下所有的子目录和文件至目的地。此时目标文件必须为一个目录名。

$ cp -rf /var/www/xkzd /home/www/xkzd #覆盖已存在的文件

$ /bin/cp -rf /www/teacherapi/* /www/teacherapitest  # 不提示直接覆盖需要用/bin/cp 命令

$ cp -rn /var/www/xkzd /home/www/xkzd #忽略已存在的文件

cat:显示文件内容

$ cat hello.txt

hello wrold!

$ cat -n hello.txt #查看行号

$ cat -b hello.txt #查看行号(不包含空行)

$ cat -A hello.txt  # 可以查看到换行符号 --show-all 等价于 -vET

根据条件过滤文件内容后重定向(输入)到文件内

$ cat nginx_error.log | grep "2014/03/26"|grep "upstream prematurely closed connection">nginx_20140326.502.log 

echo: 输出系统变量或文件

$ echo $PATH

$ echo "hello" > /tmp/test.log  # 输出文件的过程中将内容重定向(输入)到文件内


more:分页显示

按下空格键可以显示下一屏内容;按下Enter键显示下一行内容;按下B键显示上一屏;按下Q键退出显示

# more settings.py

mkdir:创建文件夹或目录 Make directory

 格式:  mkdir  [选项]  DirName

[root@localhost /]# mkdir /home/software

vi 创建文件

[root@rh-linux /]# touch /var/www/php/test.php

[root@rh-linux /]# vi /var/www/php/test2.php #创建并编辑文件

[root@rh-linux /]# echo hello > /var/www/php/test3.php #直接把内容写入文件并创建

[root@rh-linux /]# cat /var/www/php/test4.php #创建并查看文件

mv 移动文件

[root@rh-linux ~]# mv -i /root/wordpress/ /home/software/

-i 交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。

-f 禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i选项将不再起作用。

mv 修改文件

[root@rh-linux /]# mv /var/www/html/DedeCMS-V5.7-UTF8-SP1 /var/www/html/dedecms

rm 删除文件

[root@rh-linux /]rm -f /var/log/httpd/access.log

-f 就是直接强行删除,不作任何提示的意思

删除目录使用实例:

[root@rh-linux /]rm -rf /var/log/httpd/access  # -r 递归操作

将会删除/var/log/httpd/access目录以及其下所有文件、文件夹

需要提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的

rm更多用法使用man rm就可以查看了

有时候会出现一些乱码文件,因为不知道文件名,所以就无法通过rm删除,这是可以使用节点号删除,可以通过 ls -i 或 ll -i 命令查看节点号,最后使用find命令将节点号传递给rm命令

例如:find ./ -inum 12345 -print -exec rm {} -rf ;   #注意;前面的空格不能少,少了就会报错

另外也可以使用图形界面的客户端(SSH Secure File Transfer Client)来删除。

#根据搜索条件删除

$ find /home/www/project-tbkt/zhishidian/ -maxdepth 1 -type f -name "*.jpg" | xargs rm -fr

#删除指定类型的文件

$ rm -f /home/mmsc_media/*.smil

#删除文件夹下指定扩展类型的所有文件,排除指定文件

[root@localhost log]# ls

2013-08-19.log  2013-08-20.log  2013-08-21.log  2013-08-22.log  2013-08-23.log  2013-08-24.log  2013-08-25.log  2013-08-26.log

[root@localhost log]# rm -rf `ls *.log |egrep -v 2013-08-26.log`   # 注意“`”是TAB上面那个键不是引号

[root@localhost log]# ls

2013-08-26.log

[root@localhost log]# rm -rf `ls -I 2013-08-26.log #删除文件夹内所有文件只保留一个文件

[root@localhost log]# rm -rf `ls|egrep -v '(2013-08-26.log|filename|dirname)'`  # 删除文件夹内所有文件保留部分文件

[root@localhost log]# rm -rf `find  *.log |egrep -v '(2013-08-26.log|filename|dirname)'` # 使用find命令删除


tail 从指定点开始将文件写到标准输出

[root@rh-linux /]# tail -f /www/logs/test.tbkt.cn.uwsgi.log 

tail 命令在 /usr/bin/tail 下,使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容。 

语法 tail [  -f ] [  -c Number |  -n Number |  -m Number |  -b Number |  -k Number ] [ File ] 

Number 变量用于确定计数的起点的单元类型由 -b、-c、-k、-m 以及 -n 标志确定。如果没有指定其中的任何一个标志,那么 tail 命令就会读取指定文件的最后十行,并将其写到标准输出。这与在命令行输入 -n 10 是相同的。


查看文件下下有多少文件, -R表示遍历子文件夹

[root@burning video]# ls -R /home/upload_media/zhishidian/video|wc -l


WC 统计

$ wc file1

7 14 56 file1

第一列为文件的行数,第二列为文件内让的单词数,第三列文件的字节数,最后一列为文件名。

$ wc -lcw file1

-c 字节数

-l 行数

-w 字数


ln 创建软链接(相当于windows的快捷方式)

语法:ln –s 源文件 目标文件

例如:ln -s /data/git/teacherapi.git /teacherapi.git  # 相当于在根目录创建一个teacherapi.git 链接文件

-s 是 symbolic link 的意思,如果没有-s则是创建硬链接,硬链接是一个文件设置多个名字,文件夹不能创建硬链接,但可以创建软链接




查看当前目录文件夹大小

[root@localhost home]# du -s /home

3795828 /home

[root@localhost home]# du -sh /home

3.7G    /home

[root@localhost home]# du -sh

3.1G    .

[root@localhost home]# du -sh /home/tbkt.sql 

897M    /home/tbkt.sql

[root@burning backup_video]# du -h --max-depth=1

41M     ./test

30G     ./2012

4.0K    ./new

156M    ./2013

23G     ./2011

52G     .

[root@db106 ~]# du -mmsh * | ll -Sh  # 查看当前目录的子目录文件大小,并通过管道形式按大小排序

查看系统剩余空间

[root@localhost /]# df -h 

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2             192G   20G  163G  11% /

/dev/sda1             289M   17M  258M   7% /boot

tmpfs                 1.5G     0  1.5G   0% /dev/shm

查看系统中大于500M的文件

# find / -xdev -size +500M -exec ls -lh {} ;

 

locate :搜索文件

locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。

即先运行:updatedb(无论在那个目录中均可,可以放在crontab中 )后在   /var/lib/slocate/ 下生成 slocate.db 数据库即可快速查找。在命令提示符下直接执行#updatedb 命令即可:

例如:查找相关字my_config.h

[root@db1 ~]# updatedb 

[root@db1 ~]# locate my_config.h

/usr/include/mysql/my_config.h

 

find命令

功能:在目录结构中搜索文件,并执行指定的操作。

语法:find 起始目录 寻找条件 操作.

说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。

该命令提供的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件。逻辑运算符and、or、not的含义为:

(1)and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条件都满足时,寻找条件才算满足。例如:

$ find –name ’tmp’ –xtype c -user ’inin’

该命令寻找三个给定条件都满足的所有文件。

(2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足。例如:

$ find –name ’tmp’ –o –name ’mina*’

该命令查询文件名为’tmp’或是匹配’mina*’的所有文件。

(3)not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件。例如:

$ find ! –name ’tmp’

该命令查询文件名不是’tmp’的所有文件。

以名称和文件属性查找,字串内可用通配符*、?、[ ]

$ find / -name 'python*'

说明:命令中的“/”表示所有目录,“.”表示当前目录,什么路径都不写也表示当前路径。

#指定深度指定文件名查找

$ find /home/www/project-tbkt/zhishidian/ -maxdepth 1 -type f -name "*.jpg"


查看当前路径pwd

[root@fileserver Twisted-8.2.0]# pwd

/home/soft/Twisted-8.2.0


ifconfig 查看本机IP


netstat 查看端口是否占用

[root@web2 ~]# netstat -anp| grep 3006

tcp        0      0 127.0.0.1:3006              0.0.0.0:*                   LISTEN      1492/uwsgi 


scp 服务器之间复制文件或目录

命令基本格式: scp [可选参数] file_source file_target 

从 本地 复制到 远程 

====== 

* 复制文件: 

scp local_file remote_username@remote_ip:remote_folder 

或者 

scp local_file remote_username@remote_ip:remote_file 

或者 

scp local_file remote_ip:remote_folder 

或者 

scp local_file remote_ip:remote_file 

第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名; 

第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名; 

* 例子: 

scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music 

scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music/001.mp3 

scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music/001.mp3 

scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music 


* 复制目录: 

scp -r local_folder remote_username@remote_ip:remote_folder 

或者 

scp -r local_folder remote_ip:remote_folder 

第1个指定了用户名,命令执行后需要再输入密码; 

第2个没有指定用户名,命令执行后需要输入用户名和密码; 

* 例子: 

scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/ 

scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/ 

上面 命令 将 本地 music 目录 复制 到 远程 others 目录下,即复制后有 远程 有 ../others/music/ 目录 


====== 

从 远程 复制到 本地 

====== 

从 远程 复制到 本地,只要将 从 本地 复制到 远程 的命令 的 后2个参数 调换顺序 即可; 

例如: 

scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/1.mp3 

scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/

======

指定端口复制文件

scp  -P 6022  /www/shouji.tar.gz   root@192.168.0.103:/www/


统计某文件夹下文件的个数

ls -l |grep "^-"|wc -l

统计某文件夹下目录的个数

ls -l |grep "^d"|wc -l

统计文件夹下文件的个数,包括子文件夹里的

ls -lR|grep "^-"|wc -l

统计文件夹下目录的个数,包括子文件夹里的

ls -lR|grep "^d"|wc -l

如统计/home/han目录(包含子目录)下的所有js文件则:

ls -lR /home/han|grep js|wc -l 或 ls -l "/home/han"|grep "js"|wc -l


whoami、who 查看用户

$ whoami #查看当前会话用户

root

$ who # 查看当前连接用户都有谁

root     pts/0        2014-03-24 00:12 (192.168.0.126)

wei     pts/1        2014-03-24 00:16 (192.168.0.126)


sudo -i 切换为超级管理员, exit 退出当前用户登录
su -i   # 切换为超级管理员
su -i username  # 切换普通用户

查看修改系统时间

$ date   # 查看当前时间

$ date --s "2014-03-26 19:10:00"  # 同时修改日期和时间

$ date -s 2014-03-26  # 只设置时间 这时候小时、分钟、秒默认是零

$ date -s 19:10:30 # 只设置时间

$ hwclock  # 查看硬件(主板)时间

$ hwclock --hctosys  # 硬件时间和系统时间同步

$ hwclock –systohc # 系统时钟和硬件时钟同步

$ yum install ntp  # ntp服务为自动同步时间服务,安装后使用 $ service ntpd start  启动服务即可

 

which, whereis 查看文件位置

which  查看可执行文件的位置。which是通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件.

whereis 文件或者目录名称。 

mac:~ admin$ which java

/usr/bin/java

mac:~ admin$ whereis java

/usr/bin/java


 

SSH 使用git bash登录linux服务器

$ ssh root@192.168.0.126 或 $ ssh -l username remotehost  
$ ssh root@192.168.0.126 -p6022  # 带端口访问

 

 

rpm 包安装
# rpm -ivh ***.rpm
# yum localinstall ***.rpm   # yum方式安装rpm可以同时安装依赖包(推荐使用该方式)

 

查看系统版本号
[root@db106 ~]# lsb_release -a LSB   # 注:7.0后该命令默认不可用
Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.4 (Final)
Release: 5.4
Codename: Final

[root@localhost ~]# uname -a  # 适用于所有的linux,包括Redhat、SuSE、Debian、Centos等发行版。
Linux localhost.localdomain 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# cat /etc/redhat-release  # 适用于RedHat,CentOS
CentOS Linux release 7.1.1503 (Core)


cenos7 关机命令
# shutdown -P now    # centos7之前可以使用halt关机
 

修改主机名
[root@iZ25rw6p599Z ~]# vi /etc/sysconfig/network
PEERNTP=no
NETWORKING_IPV6=no
GATEWAY=101.201.83.247
#HOSTNAME=5rw6p599
HOSTNAME=webpdf
/etc/sysconfig/network方式需要重启服务器
临时修改主机名称
[root@iZ25rw6p599Z ~]# sudo hostname webpdf
[root@iZ25rw6p599Z ~]# hostname
webpdf
如果不想重启又想及时更新名称,可以使用临时+永久方式

原文地址:https://www.cnblogs.com/weiok/p/4639216.html