linux命令,一天敲3个

原创 2015年11月20日 22:26:25

此贴每天不断更新,linux命令每天最少敲3个,闲的蛋疼敲10个,坚持!!!


首先注意命令区分大小写,命令间的空格不要省略


.sh文件执行

/data/shell/11.sh

1

cd /data/shell

./11.sh

2.

/data/shell/11.sh

3

cd /data/shell

bash 11.sh


改变目录 cd

首先是最重要的命令cd

目录名字区分大小写

#cd /     进入到系统根目录

#cd .     进入当前目录
#cd ..    进入当前目录的父目录,返回上层目录

#cd /tmp  进入指定目录/tmp

#cd ~     进入当前用户的home目录

#cd       进入当前用户的home目录

#cd -     回到刚才所在的目录


linux中用cd /home可以进入文件夹,但当home中还有个文件夹时,比如example,用cd /example 就进不去,而用cd example就可以

/ 前面加个点号 . 就可以了,. 表示当前路径。cd ./example
直接 / 表示根目录,根目录下不存在 example 文件夹,所以就进不去了。


列出文件目录 dir

#dir       显示当前目录的内容(无颜色)

dir加上cd命令linux的文件目录你就可以随便出入了


创建目录 mkdir

最基本用法

mkdir dir1           在当前目录下创建dir子目录


删除目录/文件 rm

最基本用法

rm -rf direct        不用确认直接删除当前目录下的direct文件夹

rm file     不用确认直接删除当前目录下的file文件


删除是危险系数很高的操作,一旦误删可能会造成难以估计的损失。在 Linux 系统中这种危险尤为明显,一条简单的语句:rm –rf /* 就会把整个系统全部删除,而 Linux 并不会因为这条语句的不合理而拒绝执行。

可以重新封装rm命令,实现回收站功能


回收站功能在 Linux 中的实现

linux 删除当前目录下的某一类型文件

利用命令:
find . -name "*.c" | xargs rm -rf

显示当前所在目录 pwd

pwd       显示当前所在目录的路径


复制文件命令 cp

最基本方法

cp opencv2_4_9.sh /home/hj/caffe  将当前目录下的opencv2_4_9.sh拷贝到/home/hj/caffe目录下


远程复制scp

cp就是secure copy,一个在linux下用来进行远程拷贝文件的命令。


有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可达到目的。


一、将本机文件复制到远程服务器上


#scp /home/administrator/news.txt root@192.168.6.129:/etc/squid


/home/administrator/      本地文件的绝对路径


news.txt                          要复制到服务器上的本地文件


root                                 通过root用户登录到远程服务器(也可以使用其他拥有同等权限的用户)


192.168.6.129                远程服务器的ip地址(也可以使用域名或机器名)


/etc/squid                       将本地文件复制到位于远程服务器上的路径


二、将远程服务器上的文件复制到本机


#scp remote@www.abc.com:/usr/local/sin.sh /home/administrator


remote                       通过remote用户登录到远程服务器(也可以使用其他拥有同等权限的用户)


www.abc.com              远程服务器的域名(当然也可以使用该服务器ip地址)


/usr/local/sin.sh           欲复制到本机的位于远程服务器上的文件


/home/administrator  将远程文件复制到本地的绝对路径


注意两点:


1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:


#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator


2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。



移动文件/目录 mv

最基本用法

hj@ubuntu:~$ mv opencv2_4_9.sh /home/hj/Pictures  将当前目录下的opencv2_4_9.sh移动到/home/hj/Pictures目录下

可以看看是否成功

hj@ubuntu:~$ cd Pictures
hj@ubuntu:~/Pictures$ dir
opencv2_4_9.sh


移动文件夹的用法和上面一样


查看文件大小

Linux中查看各文件夹大小命令du -h --max-depth=1

linux下使用 du查看某个文件或目录占用磁盘空间的大小

du -ah --max-depth=1     这个是我想要的结果  a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度。

du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:du -sh

du -sh



管理历史命令 history

用history查看当前用户的命令历史记录

history -c清除当前用户的命令历史记录


退出root权限

exit


退出python命令行

使用 quit(), exit(), 或者Ctrl-D退出命令行



sudo chmod 777 filename

改变文件权限


+ 为文件或目录增加权限
- 删除文件或目录的权限
= 设置指定的权限


u stands for user.
g stands for group.
o stands for others.
a stands for all.


0 没有任何权限 ---
1 执行权限 --x
2 写入权限 -w-
3 执行权限和写入权限:1 (执行) + 2 (写入) = 3 -wx
4 读取权限 r--
5 读取和执行权限:4 (读取) + 1 (执行) = 5 r-x       
6 读取和写入权限:4 (读取) + 2 (写入) = 6 rw-
7 所有权限: 4 (读取) + 2 (写入) + 1 (执行) = 7 rwx


Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

Solution:
sudo rm /var/cache/apt/archives/lock
sudo rm var/lib/dpkg/lock



cat命令

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。


1.命令格式:

cat [选项] [文件]...

2.命令功能:

cat主要有三大功能:

1.一次显示整个文件:cat filename

2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.

3.将几个文件合并为一个文件:cat file1 file2 > file

3.命令参数:

-A, --show-all           等价于 -vET

-b, --number-nonblank    对非空输出行编号

-e                       等价于 -vE

-E, --show-ends          在每行结束处显示 $

-n, --number     对输出的所有行编号,由1开始对所有输出的行数编号

-s, --squeeze-blank  有连续两行以上的空白行,就代换为一行的空白行 

-t                       与 -vT 等价

-T, --show-tabs          将跳格字符显示为 ^I

-u                       (被忽略)

-v, --show-nonprinting   使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

4.使用实例:

实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里

命令:

cat -n log2012.log log2013.log 

输出:

[root@localhost test]# cat log2012.log 

2012-01

2012-02

======[root@localhost test]# cat log2013.log 

2013-01

2013-02

2013-03

======[root@localhost test]# cat -n log2012.log log2013.log 

     1  2012-01

     2  2012-02

     3

     4

     5  ======

     6  2013-01

     7  2013-02

     8

     9

    10  2013-03

    11  ======[root@localhost test]#

说明:

实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。 

命令:

cat -b log2012.log log2013.log log.log

输出:

[root@localhost test]# cat -b log2012.log log2013.log log.log

     1  2012-01

     2  2012-02

     3  ======

     4  2013-01

     5  2013-02

     6  2013-03

     7  ======[root@localhost test]#

实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里 

命令:

输出:

[root@localhost test]# cat log.log 

[root@localhost test]# cat -n log2012.log > log.log

[root@localhost test]# cat -n log.log 

     1  2012-01

     2  2012-02

     3

     4

     5  ======

[root@localhost test]#

实例四:使用here doc来生成文件

输出:

[root@localhost test]# cat >log.txt <<EOF

Hello

World

Linux

> PWD=$(pwd)

EOF

[root@localhost test]# ls -l log.txt 

-rw-r--r-- 1 root root 37 10-28 17:07 log.txt

[root@localhost test]# cat log.txt 

Hello

World

Linux

PWD=/opt/soft/test

[root@localhost test]#

说明:

注意粗体部分,here doc可以进行字符串替换。

备注

tac (反向列示)

命令:

tac log.txt

输出:

[root@localhost test]# tac log.txt 

PWD=/opt/soft/test

Linux

World

Hello

说明:

tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!


grep命令

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
1.命令格式:
grep [option] pattern file
2.命令功能:
用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。
3.命令参数:
-a   --text   #不要忽略二进制的数据。   
-A<显示行数>   --after-context=<显示行数>   #除了显示符合范本样式的那一列之外,并显示该行之后的内容。   
-b   --byte-offset   #在显示符合样式的那一行之前,标示出该行第一个字符的编号。   
-B<显示行数>   --before-context=<显示行数>   #除了显示符合样式的那一行之外,并显示该行之前的内容。   
-c    --count   #计算符合样式的列数。   
-C<显示行数>    --context=<显示行数>或-<显示行数>   #除了显示符合样式的那一行之外,并显示该行之前后的内容。   
-d <动作>      --directories=<动作>   #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。   
-e<范本样式>  --regexp=<范本样式>   #指定字符串做为查找文件内容的样式。   
-E      --extended-regexp   #将样式为延伸的普通表示法来使用。   
-f<规则文件>  --file=<规则文件>   #指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。   
-F   --fixed-regexp   #将样式视为固定字符串的列表。   
-G   --basic-regexp   #将样式视为普通的表示法来使用。   
-h   --no-filename   #在显示符合样式的那一行之前,不标示该行所属的文件名称。   
-H   --with-filename   #在显示符合样式的那一行之前,表示该行所属的文件名称。   
-i    --ignore-case   #忽略字符大小写的差别。   
-l    --file-with-matches   #列出文件内容符合指定的样式的文件名称。   
-L   --files-without-match   #列出文件内容不符合指定的样式的文件名称。   
-n   --line-number   #在显示符合样式的那一行之前,标示出该行的列数编号。   
-q   --quiet或--silent   #不显示任何信息。   
-r   --recursive   #此参数的效果和指定“-d recurse”参数相同。   
-s   --no-messages   #不显示错误信息。   
-v   --revert-match   #显示不包含匹配文本的所有行。   
-V   --version   #显示版本信息。   
-w   --word-regexp   #只显示全字符合的列。   
-x    --line-regexp   #只显示全列符合的列。   
-y   #此参数的效果和指定“-i”参数相同。
  
4.规则表达式:
grep的规则表达式:
^  #锚定行的开始 如:'^grep'匹配所有以grep开头的行。    
$  #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。    
.  #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。    
*  #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。    
.*   #一起用代表任意字符。   
[]   #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    
[^]  #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。    
\(..\)  #标记匹配字符,如'\(love\)',love被标记为1。    
\<      #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    
\>      #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    
x\{m\}  #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。    
x\{m,\}  #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。    
x\{m,n\}  #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。   
\w    #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。   
\W    #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。   
\b    #单词锁定符,如: '\bgrep\b'只匹配grep。  
POSIX字符:
为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。
[:alnum:]    #文字数字字符   
[:alpha:]    #文字字符   
[:digit:]    #数字字符   
[:graph:]    #非空字符(非空格、控制字符)   
[:lower:]    #小写字符   
[:cntrl:]    #控制字符   
[:print:]    #非空字符(包括空格)   
[:punct:]    #标点符号   
[:space:]    #所有空白字符(新行,空格,制表符)   
[:upper:]    #大写字符   
[:xdigit:]   #十六进制数字(0-9,a-f,A-F)


grep命令


查找命令总结

Linux下各种查找命令(find, grep, which, whereis, locate)

find寻找文件 

    命令:find 
    格式:find pathname [option] expression 
    功能:在所给的路经名下寻找符合表达式相匹配的文件。 
    选项:-name     表示文件名 
          -user     用户名,选取该用户所属的文件 
          -size     按大小查找,以block为单位,一个block是512B 
          -mtime n  按最后一次修改时间查找,选取n天内被修改的文件 
  -perm     按权限查找 
          -type     按文件类型查找 
  -atime    按最后一次访问时间查找 


    例如:% find ./ -name '*abc*' -print 


查找文件夹


find / -name mysql -type d


Linux文件查找命令find,xargs详述



搜索文件中匹配符 
    命令:grep 
    格式:grep [option] pattern filenames 
    功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。 
    选项:-i    匹配时忽略大小写 
  -v 找出模式失配的行 


    例如:% grep -i 'java*' ./test/run.sh


nohup命令

nohup命令及其输出文件 
     nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。 
一般都是在linux下nohup格式:
nohup command 
或者 
nohup command & 
这之间的差别是带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上); 
它把标准输出(STDOUT)和标准错误(STDERR)结果输出到nohup.txt文件这个看似很方便,但是当输出很大的时候,nohup.txt文件会非常大,或者多个后台命令的时候大家都会输出到nohup.txt文件,不利于查找结果和调试程序。 
所以能够重定向输出会非常方便。下面要介绍标准输出,标准输入 和标准错误了。 
其实我们一直都在用,只是没有注意到,    
比如 
>./command.sh > output 
#这其中的>就是标准输出符号,其实是 1>output 的缩写 
>./command.sh 2> output 
#这里的2>就是将标准错误输出到output文件里。 
而0< 则是标准输入了。 
下面步入正题,重定向后台命令 
>nohup ./command.sh > output 2>&1 & 
解释:前面的nohup 和后面的&我想大家都能明白了把。 
 
主要是中间的 2>&1的意思 
这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,  
所以结果是标准错误和标准输出都导入文件output里面了。 
至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。 
这就会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的. 
 
这就是为什么有人会写成: 
nohup ./command.sh >output 2>output出错的原因了 
########################## 
最后谈一下/dev/null文件的作用 
这是一个无底洞,任何东西都可以定向到这里,但是却无法打开。 
所以一般很大的stdou和stderr当你不关心的时候可以利用stdout和stderr定向到这里>./command.sh >/dev/null 2>&1

nohup 修改输出文件名

nohup 运行的时候,一般都会把输出导到nohup.out 文件(无论前台还是后天运行nohup),有的时候想导到指定的文件(尤其是同一个目录下 会启动多个nohup的时候),怎么做呢?

做法是给nohup 指定文件重定向:
nohup cmd_to_run 2>file_2 1>file_1
这样,cmd_to_run 运行产生的本来往标准输出的内容将会被保存在文件file_1, 而本来往标准错误输出的内容则会被保存在文件file_2中。


Linux终端关闭后台进程也结束原因分析和nohup的使用

LINUX nohup命令输入输出深浅进出


df


du

Linux磁盘空间查看及空间满的处理



xargs



cut

linux之cut用法


sed

linux之sed用法


awk

linux之awk用法



解压缩

rar

# rar a yajiu.rar yajiu.jpg yajiu.png
这条命令是将yajiu.jpg和yajiu.png压缩成一个rar包
# rar a yajiu.rar *.jpg
这条命令是将所有.jpg的文件压缩成一个rar包
# rar a yajiu.rar yajiu
这条命令是将文件夹yajiu压缩成一个rar包
# unrar e yajiu.rar
这条命令是将yajiu.rar中的所有文件解压出来

例1:添加文件或目录到压缩档案中,使用a命令。例如把文件files1添加到abc.rar中,使用a或m命令,a命令把file1文件添加到abc.rar档案中保持原有的file1文件不变,m命令移动file1文件到file1.rar档案中(压缩完成后会删除原有的file1文件,注意:m命令只针对文件进行操作)
$rar a abc.rar file1


说明:如果此时abc.rar档案不存在,会自行创建abc.rar文档案,如果abc.rar档案已经存在,则将file1文件压缩进abc.rar档案中,若abc.rar档案中已存在一个file1文件,则会更新file1文件。并且原有的file1文件依然存在于当前目录下,若要将file1文件移动到file1.rar中请使用m命令,对于目录同样可以进行此操作。
注意:如果只输入"rar a file1.rar"命令,而没有接文件名或目录名的话,会将当前目录下所有的文件和文件夹压缩进file1.rar文档中。这点要注意一下。


例2:解压缩abc.rar档案中的内容,可以使用e或x命令,假设abc.rar目录中有一个名为file1的文件和一个名为test的目录,test目录中有一个名为file2的文件,
$rar e abc.rar


说明:使用e命令,会将abc.rar中的file1文件连同test目录下的file2文件解压到当前目录。如果想保持abc.rar目录中的目录结构请使用x命令。
$rar x abc.rar


说明:此时会将file1文件和test目录解压到当前文件夹。


zip

# zip yajiu.zip yajiu.jpg yajiu.png
这条命令是将yajiu.jpg和yajiu.png压缩成一个zip包
# zip yajiu.zip *.jpg
这条命令是将所有.jpg的文件压缩成一个zip包
# zip -r yajiu.zip yajiu
这条命令是将文件夹yajiu压缩成一个zip包
# unzip yajiu.zip
这条命令是将yajiu.zip中的所有文件解压出来



7zip

支持 7Z,ZIP,Zip64,CAB,RAR,ARJ,GZIP,BZIP2,TAR,CPIO,RPM,ISO,DEB 压缩文件格式


安装: sudo apt-get install p7zip p7zip-full p7zip-rar


# 7z a yajiu.7z yajiu.jpg yajiu.png
这条命令是将yajiu.jpg和yajiu.png压缩成一个7z包
# 7z a yajiu.7z *.jpg
这条命令是将所有.jpg的文件压缩成一个7z包
# 7z a yajiu.7z yajiu
这条命令是将文件夹yajiu压缩成一个7z包
# 7z e yajiu.7z
这条命令是将yajiu.7z中的所有文件解压出来,e是解压到当前路径
# 7z x yajiu.7z
这条命令是将yajiu.7z中的所有文件解压出来,x是解压到压缩包命名的目录下


ln 命令

ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
1.命令格式:
 ln [参数][源文件或目录][目标文件或目录]
2.命令功能:
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
  这里有两点要注意:
第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
第二,ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
3.命令参数:
必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
-V “-V<备份方式>”或“--version-control=<备份方式>”
--help 显示帮助信息
--version 显示版本信息


http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html


tail命令

linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。


一、tail命令语法


tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
参数解释:
-f 该参数用于监视File文件增长。
-c Number 从 Number 字节位置读取指定文件
-n Number 从 Number 行位置读取指定文件。
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
-b Number 从 Number 表示的512字节块位置读取指定文件。
-k Number 从 Number 表示的1KB块位置读取指定文件。
File 指定操作的目标文件名称
上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部開始计算。
tail可运行文件一般在/usr/bin/以下。


二、tail命令使用方法演示例子


1、tail -f filename
说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。


2、tail -n 20 filename
说明:显示filename最后20行。


3、tail -r -n 10 filename
说明:逆序显示filename最后10行。


补充:
跟tail功能相似的命令还有:
cat 从第一行開始显示档案内容。
tac 从最后一行開始显示档案内容。
more 分页显示档案内容。
less 与 more 相似,但支持向前翻页
head 仅仅显示前面几行


head命令

用法参考tail命令


useradd

linux 添加用户、权限



convert

convert命令可以用来转换图像的格式,支持JPG, BMP, PCX, GIF, PNG, TIFF, XPM和XWD等类型,下面举几个例子: 
  convert  xxx.jpg  xxx.png   将jpeg转成png文件 
  convert  xxx.gif   xxx.bmp  将gif转换成bmp图像 
  convert  xxx.tiff    xxx.pcx   将tiff转换成pcx图像 


可以用convert命令转换图片尺寸

convert -resize 160x80! inputFileName outputFileName

在尺寸后面加上"!"(感叹号)就可以了,表示强制转换,160x768中的x是小写字母x


convert -sample 50%x50%  xxx.jpg  xxx1.jpg   将图像的缩减为原来的50%*50% 
旋转图像: 
convert -rotate 270 sky.jpg sky-final.jpg      将图像顺时针旋转270度 
使用-draw选项还可以在图像里面添加文字: 
convert -fill black -pointsize 60 -font helvetica -draw 'text 10,80 "Hello, World!" ‘  hello.jpg  helloworld.jpg 
在图像的10,80 位置采用60磅的全黑Helvetica字体写上 Hello, World!


如下脚本可以把目录下的图片批量resize

for name in /path/to/imagenet/val/*.JPEG; do 
     convert -resize 256x256\! $name $name 
done 

for img in `ls imgs/*.jpg`; do convert -resize 500x500 $img $img; done

通过命令行处理图形



whiile循环

while true
do
   bypy.py syncdown
done



查杀进程

1.查进程
    ps命令查找与进程相关的PID号:
    ps a 显示现行终端机下的所有程序,包括其他用户的程序。
    ps -A 显示所有程序。
    ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
    ps -e 此参数的效果和指定"A"参数相同。
    ps e 列出程序时,显示每个程序所使用的环境变量。
    ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
    ps -H 显示树状结构,表示程序间的相互关系。
    ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
    ps s 采用程序信号的格式显示程序状况。
    ps S 列出程序时,包括已中断的子程序资料。
    ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
    ps u 以用户为主的格式来显示程序状况。
    ps x 显示所有程序,不以终端机来区分。
   
    最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
    ps aux | grep program_filter_word,ps -ef |grep tomcat


ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。
   
2.杀进程
   使用kill命令结束进程:kill xxx
   常用:kill -9 324
   Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME


WC

wc -c filename:显示一个文件的字节数
wc -m filename:显示一个文件的字符数
wc -l filename:显示一个文件的行数
wc -L filename:显示一个文件中的最长行的长度
wc -w filename:显示一个文件的字数




watch

作用:周期性执行某一命令,并将输出显示

watch的基本用法是:

watch [options]  command

最常用的参数是 -n, 后面指定是每多少秒来执行一次命令。

监视显存:我们设置为每 10s 显示一次显存的情况:

watch -n 10 nvidia-smi



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

统计某文件夹下文件的个数
ls -l |grep "^-"|wc -l


统计某文件夹下目录的个数
ls -l |grep "^d"|wc -l


统计文件夹下文件的个数,包括子文件夹里的
ls -lR|grep "^-"|wc -l


如统计/home/han目录(包含子目录)下的所有js文件则:
ls -lR /home/han|grep js|wc -l 或 ls -l "/home/han"|grep "js"|wc -l


统计文件夹下目录的个数,包括子文件夹里的
ls -lR|grep "^d"|wc -l
说明:
ls -lR
长列表输出该目录下文件信息(R代表子目录注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)


grep "^-"
这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d


wc -l
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
 
 
======================================
如果只查看文件夹
ls -d  只能显示一个.
find -type d    可以看到子文件夹
ls -lF |grep /    或 ls -l |grep '^d'  只看当前目录下的文件夹,不包括往下的文件夹


linux命令



vi 文本编辑器

(1)vi test.c  创建(如果存在就默认打开)test.c文件,并进入文本编辑器
(2):q   没有修改直接退出
(3)i    进入vi以后,键入i进入插入模式就可以输入文件
(4):wq 退出并保存修改
(5):q!   退出不保存修改
(6)dd   删除当前行
(7)yy   拷贝当前行
(8)p    粘贴
(9):w   保存修改(不退出vi)
(0)a    进入vi以后,键入a进入追加模式就可以输入文件

 


VI常用命令
_______________________________________________________
一般模式                           光标移动
__________________________________________________________
h 或 向左方向键                    光标向左移动一个字符
j 或 向下方向键                    光标向下移动一个字符
k 或 向上方向键                    光标向上移动一个字符
l 或 向右方向键                    光标向右移动一个字符
Ctrl + f                           屏幕向前翻动一页(常用)
Ctrl + b                           屏幕向后翻动一页(常用)
Ctrl + d                           屏幕向前翻动半页
Ctrl + u                           屏幕向后翻动半页
+                                  光标移动到非空格符的下一列
-                                  光标移动到非空格符的上一列
n<space>                           接下数字后再按空格键,光标会向右移动这一行的
                                   n个字符,例如20<space>,则光标会向右移动20个字符
0                                  (这是数字0) 移动到这一行的第一个字符处(常用)
$                                  移动到这一行的最后一个字符处(常用)
H                                  光标移动到这个屏幕最上方的那一行
M                                  光标移动到这个屏幕中央的那一行
L                                  光标移动到这个屏幕最下方的那一行
G                                  移动到这个文件的最后一行(常用)
nG                                 移动到这个文件的第n行.例如20G,则会移动到这个文件的
                                   第20行(可配合:set nu)
n<Enter>                           光标向下移动n行(常用)
________________________________________________________________
一般模式                           查找替换
________________________________________________________________
/word                              在光标之前查找一个名为word的字符串
?word                              在光标之前查找一个名为的word字符串
:n1,n2s/word1/word2/g 在第n1与n2行之间查找word1这个字符串,并将该字符串替换
                                   为word2(常用)
:1,$s/word1/word2/g                从第一行到最后一行查找word1字符串,并将该字符串替换
                                   为word2(常用)
:1,$s/word1/word2/ge               从第一行到最后一行查找word1字符串,并将该字符串替换
                                   为word2,且在替换前显示提示符让用户确认(confirm)(常用)
__________________________________________________________________
一般模式                           删除 复制与粘贴
__________________________________________________________________
x,X                                x为向后删除一个字符,X为向前删除一个字符(常用)
nx                                 向后删除n个字符
dd                                 删除光标所在的那一整行(常用)
ndd                                删除光标所在行的向下n行,例如,20dd则是删除20行(常用)
d1G                                删除光标所在行到第一行的所有数据
dG                                 删除光标所在行到最后一行的所有数据
yy                                 复制光标所在行(常用)
nyy                                复制光标所在行的向下n行,例如,20yy则是复制20行(常用)
y1G                                复制光标所在行到第一行的所有数据
yG                                 复制光标所在行到最后一行的所有数据
p,P                                p为复制的数据粘贴在光标下一行,P则为粘贴在光标上一行(常用)
J                                  将光标所在行与下一行的数据结合成一行
u                                  恢复前一个动作(常用)
____________________________________________________________________
编辑模式                          
___________________________________________________________________
i,I                                插入:在当前光标所在处插入输入的文字,已存在的字符会向后
                                   退(常用)
a,A                                添加:由当前光标所在处的下一个字符开始输入,已存在的字符
                                   会向后退(常用)
o,O                                插入新的一行:从光标所在处的下一行行首开始输入字符(常用)
r,R                                替换:r会替换光标所指的那一个字符:R会一直替换光标所指的
                                   文字,直到按下Esc为止(常用)
Esc                                退出编辑模式,回到一般模式(常用)
___________________________________________________________________
命令行模式                          
___________________________________________________________________
:w                                 将编辑的数据写入硬盘文件中(常用)
:w!                                若文件属性为只读,强制写入该文件
:q                                 退出vi(常用)
:q!                                若曾修改过文件,又不想保存,使用!为强制退出不保存文件
:wq                                保存后退出,若为:wq!,则为强制保存后退出(常用)
:w [filename]                      将编辑数据保存为另一个文件(类似另存新文档)
:r [filename]                      在编辑的数据中,读入另一个论据的数据,亦即将filename这
                                   个文件内容加到光标所在行的后面
:set nu                            显示行号,设定之后,会在每一行的前面显示该行的行号
:set nonu                          与set nu相反,为取消行号
n1,n2 w [filename]                 将n1到n2的内容保存为filename 这个文件



用vi命令打开文件时,如何直接跳到最后一行?


用vi命令打开文件直接跳到最后一行的方法如下:
  :$ 跳到文件最后一行
:0或:1 跳到文件第一行
  或 另外一组命令:
  gg 跳到文件第一行
Shift + g 跳到文件最后一行


linux下vim命令详解




gcc编译器

(1)       gcc test.c 编译test.c,并生成默认a.out的可执行文件
(2)       ./a.out 执行程序a.out
(3)       gcc –c test.c 将test.c编译成目标文件test.o
(4)       gcc –o test test.o 将目标文件生成可执行文件test
(5)       gcc test.c –o test 编译test.c,并直接生成test可执行文件



makefile

Linux 如何写makefile文件





scipy安装


fedora&centos
sudo yum install numpy scipy python-matplotlib ipython python-pandas sympy python-nose


debian&ubuntu


sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

matplotlib安装


  • Debian / Ubuntu : sudoapt-getinstallpython-matplotlib
  • Fedora / Redhat : sudoyuminstallpython-matplotlib



sklearn安装

if you have Python 2 you can install all these requirements by issuing:


sudo apt-get install build-essential python-dev python-setuptools \
                     python-numpy python-scipy \
                     libatlas-dev libatlas3gf-base
If you have Python 3:


sudo apt-get install build-essential python3-dev python3-setuptools \
                     python3-numpy python3-scipy \
                     libatlas-dev libatlas3gf-base
On recent Debian and Ubuntu (e.g. Ubuntu 13.04 or later) make sure that ATLAS is used to provide the implementation of the BLAS and LAPACK linear algebra routines:


sudo update-alternatives --set libblas.so.3 \
    /usr/lib/atlas-base/atlas/libblas.so.3
sudo update-alternatives --set liblapack.so.3 \
    /usr/lib/atlas-base/atlas/liblapack.so.3
Note   In order to build the documentation and run the example code contains in this documentation you will need matplotlib:


sudo apt-get install python-matplotlib


2.pip install --user --install-option="--prefix=" -U scikit-learn
或者 sudo apt-get install python-sklearn



Linux文件系统分析


设置Linux环境变量的方法和区别_Ubuntu


/etc/profile:此文件为系统的为每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d 目录的配置文件中搜集shell的设置.
/etc/bashrc :为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile :每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc :该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout :当每次退出系统(退出bash shell)时,执行该文件. 


bash_profile 、.bashrc 、和.bash_logout
上面这三个文件是bash shell的用户环境配置文件,位于用户的主目录下。
.bash_profile是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有 命令都会被bash执行。.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)两个文件是.bash_profile的同义词,目的是为了兼容其它Shell。 在Debian中使用.profile文件代 替.bash_profile文件。
.bashrc 文件会在bash shell调用另一个bash shell时读取,也就是在shell中再键入bash命令启动一个新shell时就会去读该文件。这样可有效分离登录和子shell所需的环境。但一般 来说都会在.bash_profile里调用.bashrc脚本以便统一配置用户环境。
.bash_logout 在退出shell时被读取。所以我们可把一些清理工作的命令放到这文件中。


登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个(根据不同的linux操作系统的不同,命名不一样),执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。
如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件


管道

管道实际上是一种固定大小的缓冲区,管道对于管道两端的进程而言,就是一个文
件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在于内存中。它类似于通信中半双工信道的进程通信机制,一个管道可以实现双向 的数据传输,而同一个时刻只能最多有一个方向的传输,不能两个方向同时进行。管道的容 量大小通常为内存上的一页,它的大小并不是受磁盘容量大小的限制。当管道满时,进程在 写管道会被阻塞,而当管道空时,进程读管道会被阻塞。


硬链接/软链接

( 1 )软连接可以跨文件系统,硬连接不可以
( 2 )硬连接不管有多少个,都指向的是同一个 I 节点,会把结点连接数增加,只要结点的连接数不是 0 ,文件就一直存在不管你删除的是源文件还是连接的文件。只要有一个存在文件就存在。 当你修改源文件或者连接文件任何一个的时候,其他的文件都会做同步的修改。软链接不直接使用 i 节点号作为文件指针 , 而是使用文件路径名作为指针。所以删除连接文件对源文件无影响,但是删除源文件,连接文件就会找不到要指向的文件。软链接有自己的 i 节点 , 并在磁盘上有一小片空间存放路径名。
( 3 )软连接可以对一个不存在的文件名进行连接 。
( 4 )软连接可以对目录进行连接。

Linux软连接和硬链接


安装zlib

在ubuntu软件源里zlib和zlib-devel叫做zlib1g zlib1g.dev
        $ sudo apt-get install zlib1g
        $ sudo apt-get install zlib1g.dev
       直接输入上述命令后还是不能安装。这就要求我们先装ruby.
       在ubuntu里,zlib叫zlib1g,相应的zlib-devel叫zlib1g.dev。默认的安装源里没有zlib1g.dev。要在packages.ubuntu.com上找。
       $sudo apt-get install ruby
       然后再装zlib1g-dev就可以了
       $sudo apt-get install zlib1g-dev

安装libiconv

编译 libiconv出错了



dcmtk安装

fedora上的dcmtk3.6.1编译




挂载硬盘没有执行脚本的权限




cmake使用教程


CMake入门教程

cmake处理多源文件目录的方法




gdb使用教程

如何使用gdb调试C程序 

常用gdb调试技巧整理

使用gdb调试程序完全教程


linux链接库

Linux链接库使用


shell脚本

shell编程初步学习

shell中for循环总结

shell算数运算

Syntax error: Bad for loop variable解决办法


深入探讨:linux中遍历文件夹下的所有文件


http://blog.csdn.net/gatieme/article/category/3054607


Ubuntu的apt-get代理设置



版权声明:

虚拟机中安装linux系统步骤

1.在windows系统下先安装好虚拟机软件,然后下载一个linux系统的镜像文件,常用的linux系统centos 下载地址:http://www.linuxdown.net/CentOS/2014...

linux命令之cd,ls,vi进入及退出文件

一、cd用来进入指定的某个目录。说cd这个命令是Linux上使用率最高的两个命令之一不为过吧(另一个当然是ls了),前两天看到了一个cd命令的小技巧是我一直都不知道的,呵呵,这里顺便记下来。 ...
  • jiahehao
  • jiahehao
  • 2007年11月07日 10:01
  • 26209

linux 清空文件的3个命令

  • 2015年10月08日 22:47
  • 60B
  • 下载

3个常用基于Linux系统命令行WEB网站浏览工具(w3m/Links/Lynx)

一般我们常用的浏览器肯定是基于可视化界面的图文结合的浏览界面效果,比如FireFox、Chrome、Opera等等,但是有些时候折腾和项目 的需要,在Linux环境中需要查看某个页面的文字字符,我们需...

Linux中用stat命令查看文件时3个时间点解析

stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。 语法 stat(选项)(参数) 参数 文件:指定要显示信息的普通文件或者文件系统对应的...

修改Linux时间一般涉及到3个命令: date, clock, hwclock

原贴:http://203.208.37.104/search?q=cache:p1vAAHvs9ikJ:www.goldthe.com/blog/%3Faction%3Dshowlog%26gid%...

[一天几个linux命令] jobs bg fg

简介jobs 显示后台运行的程序参数 -l:显示后台运行的程序的详细状态 -p:仅显示任务对应的进程号 -n:显示任务状态的变化 -r:仅输出运行状态(running)的任务 ...

[一天几个linux命令] 有效与初始用户组:group, newgrp

前言 认识了账号相关的两个文件/etc/passwd与/etc/shadow之后,你或许还是会觉得奇怪,那么用户组的配置文件在哪里?还有/etc/passwd的第四列不是所谓的GID吗?那又是会么?...

一天一个linux命令(1):top

linux top命令

[一天几个linux命令] 文件种类与扩展名

文件种类我们在基础篇一直强调一个概念,那就是:任何设备在Linux下面都是文件,不仅如此,边数据通信的接口也有专门的文件负责。所以,你会了解到,Linux的文件种类真的很多,除了前面提到的一般文件(-...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux命令,一天敲3个
举报原因:
原因补充:

(最多只允许输入30个字)