Linux -- 学习笔记

1.qsub命令

  • 参数

    • -e 路径名
      定义要用于批处理作业的标准错误流的路径。

    • -N file_name

      定义批处理作业的名称。

      qsub-n选项应接受名称选项参数的值,该参数是portabl字符集中最多15个字母数字字符的字符串

    • -o path_name
      定义批处理作业的标准输出的路径。

    • -V

      指定将流程的所有环境变量导出到批处理作业的上下文中。

    • -l (小写L)

      指定作业所需要的资源,设定对可消耗资源的限制。如果不设置,则无限制。h_cpu = 720:00:00

2. java命令

描述

  • Java命令启动Java应用程序。它通过启动Java运行时环境(JRE)、加载指定的类和调用该类的man()方法来实现这一点。该方法必须声明为公共的和静态的,它不能返回任何值,并且它必须接受字符串数组作为参数
main(String)[ARGs]    

用法

java [options] -jar filename [args]
java [options] classname [args]

参数

  • options
    选项;由空格所分开的命令行选项,也可以是简写

  • classname
    类型名;要被启动的程序的名字

  • filename
    文件名;将要使用的JAR文件的文件名,仅在-jar选项后使用

  • args

    参数;传递给main()方法的参数,用空格分隔

3. 命令替换

  • shell脚本中最有用的特性之一就是可以从命令输出中提取信息,并将其赋给变量。把输出赋给变量之后,就可以随意在脚本中使用了。这个特性在处理脚本数据时尤为方便。
  • 有两种方法可以将命令输出赋给变量:
    • 反引号字符( ` )
    • $()格式
testing=`date`
testing=$(date)
  • 命令替换允许你将shell命令的输出赋给变量。尽管这看起来并不那么重要,但它却是脚本编程中的一个主要组成部分。要么用一对反引号把整个命令行命令围起来:

  • 下面这个例子很常见,它在脚本中通过命令替换获得当前日期并用它来生成唯一文件名。

#! /bin/bash
#copy the /usr/bin directory listing to a log file
today=$(date +%y%m%d)
ls /usr/bin -al > log.$today
  • today 变量是被赋予格式化后的 date 命令的输出。这是提取日期信息来生成日志文件名常用的一种技术。+%y%m%d 格式告诉 date 命令将日期显示为两位数的年月日的组合。运行该脚本之后,应该能在目录中看到一个新文件。
-rw-r--r-- 1 user user 769 Jan 31 10:15 log.140131

​目录中出现的日志文件采用 $today 变量的值作为文件名的一部分。日志文件的内容是/usr/bin目录内容的列表输出。如果脚本在明天运行,日志文件名会是log.140201,就这样为新的一天创建一个新文件。

4. tee

Linux 命令大全

Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

语法

$ tee [-ai][--help][--version][文件...]

参数

  • -a或--append  附加到既有文件的后面,而非覆盖它.
  • -i或--ignore-interrupts  忽略中断信号。
  • --help  在线帮助。
  • --version  显示版本信息。

实例

使用指令"tee"将用户输入的数据同时保存到文件"file1"和"file2"中,输入如下命令:

$ tee file1 file2                   #在两个文件中复制内容 

以上命令执行后,将提示用户输入需要保存到文件的数据,如下所示:

My Linux                        #提示用户输入数据  
My Linux                        #输出数据,进行输出反馈  

此时,可以分别打开文件"file1"和"file2",查看其内容是否均是"My Linux"即可判断指令"tee"是否执行成功。

Linux 命令大全

5.退出状态码

(status code,sc),Linux提供了一个专门的变量 ? 来保存上个已执行命令的退出状态码。对于需要进行检查的 命令,必须在其运行完毕后立刻查看或使用? 变量。它的值会变成由shell所执行的最后一条命令
的退出状态码。

$ date
Sat Jan 15 10:01:30 EDT 2014
$ echo $?
0

按照惯例,一个成功结束的命令的退出状态码是 0 。如果一个命令结束时有错误,退出状态码就是一个正数值。

$ asdfg
-bash: asdfg: command not found
$ echo $?
127

无效命令会返回一个退出状态码 127 。Linux错误退出状态码没有什么标准可循,但有一些可
用的参考,如表11-2所示。

image.png

退出状态码 126 表明用户没有执行命令的正确权限。

$ ./myprog.c
-bash: ./myprog.c: Permission denied
$ echo $?
126

另一个会碰到的常见错误是给某个命令提供了无效参数。

$ date %t
date: invalid date '%t'
$ echo $?
1

这会产生一般性的退出状态码 1 ,表明在命令中发生了未知错误。

6. find

find path -option [ -print ] [ -exec -ok command ] {} ;

find命令的参数;

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

#-print 将查找到的文件输出到标准输出
#-exec command {} ; —–将查到的文件执行command操作,{} 和 ;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户

例:find . -name .svn | xargs rm -rf


-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px">

-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前

数据同步写入磁盘: sync

7. 递归复制

递归复制:

cp -r sourcefolder targetfolder

8. &&

一行内运行多个指令,指令之间用&&分隔开

9. 复制粘贴

复制:ctrl + shfit + c

粘贴:ctrl + shfit + v

10. 滚动终端

一次滚动一行:ctrl + Pg Up/Pg Dn

一次滚动一页:shfit + Pg Up/Pg Dn

滚动到顶部/底部:ctrl + shfit + Pg Up/Pg Dn

11. Linux文件系统

image.png

12. 删除文件夹:

# rm不能直接删除文件夹,使用-r参数即可,-r表示递归删除
rm -r targetfolder

若想要指定删除文件,就不能使用递归删除了

#删除目录下所有的R脚本
rm targetfolder/*.R
#删除指定文件夹
rmdir targetfolder/test*

强制删除目录下所有文件和文件夹:rm -rf

rmdir命令只能删除空目录,因此需要先删除目录下的所有文件及目录,使用rmdir targetfolder/*`

再使用rmdir targetfolder就行了

13. 阅读文件

1. cat

读取文件所有内容

-n:显示行号

-b:给有文本存在的行加行号

-T:不显示制表符

不用手动退出

2. more

cat的缺点是如果文件内容比较多,信息会一闪而过

more会首先显示一页,然后用户可以通过空格键和回车键分别阅读下一页和下一行,q退出

3.head

显示前n行数据,n默认为10

$ head -n file_name

4.tail

显示后n行数据,n默认为10

$ tail -n file_name

14.排序数据

sort:按字符排序

sort -n:按数字大小排序

image.png

搜索数据

grep

-v:反向搜索,输出不匹配模式的行

-n:显示匹配行所在的行号

-c:统计匹配行的个数

-e:支持多个匹配模式

  • grep -e t -e f file

    two

    three

    four

    five

15. 创建环境变量

#创建值为env_value的环境变量env_name
$ echo $env_name
$ env_name=env_value
#$环境变量名即可引用环境变量
$ echo $env_name
env_value
#如果变量值含有空格,则赋值的时候要在值的前后加引号

注意 所有的系统环境变量名均为大写,这是惯例。自己创建的应用小写,以免与系统环境变量混淆

​ 赋值等号的前后没有空格,shell编程慎用空格,因为总是容易把空格后的内容当做前面命令的参数或者另外的命令而产生报错。

要想把创建的局部变量保存到全局变量需要把局部变量导入:

export env_name

修改子进程的全局变量并不会影响到父shell中的该变量的值,即使在子shell中使用export也无济于事。

16. 删除环境变量

unset env_name

17. 添加PATH环境变量

环境变量PATH:PATH是shell查找命令的目录列表,由冒号分隔命令一般存放于bin目录下。

内建命令:

  • 内建于bash shell,不需要外部程序文件来运行,如cd命令。因为因为既不需要通过衍生出子进程来执行,也不需要打开程序文件,内建命令的执行速度要更快,效率也更高。
  • 要注意,有些命令有多种实现。例如 echo 和 pwd 既有内建命令也有外部命令。两种实现略有不同。要查看命令的不同实现,使用 type 命令的 -a 选项。

外部命令:

  • 存在于bas shell之外的程序

当使用某个命令的时候,PATH下必须有该命令的路径,若使用某个分析软件,必须将PATH制定到软件的bin目录下,所以要添加PATH环境变量

1 临时添加:命令行
#添加系统环境变量
$ PATH=$PATH:软件路径1/bin
$ PATH=$PATH:软件路径2/bin
#保存系统环境变量
$ export PATH
2 永久添加:修改.bashrc文件
#打开.bashrc;若当前目录不是家目录要回到家目录,或者vi ~/.bashrc
$ vi .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions

PATH=$PATH:...
#在系统默认添加环境变量的那一行下继续添加系统环境变量
#有的软件命令好像也不一定非在bin目录下,要视情况而定
PATH=$PATH:软件路径1/bin
PATH=$PATH:软件路径2/bin
#不需要再输入export PATH,因为会发现下面已经存在了
#写完后按Esc,输入:wq保存并退出
:wq
#激活文件修改,不激活的话要重新登录才发挥作用
$ source .bashrc
#之后就可以使用你所添加的软件的命令啦,会发现Tab可以自动补全命令了,说明添加成功~~~

18. 永久修改或添加命令别称

#打开.bashrc;若当前目录不是家目录要回到家目录,或者vi ~/.bashrc
$ vi .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions

PATH=$PATH:...
#在export PATH下面输入你要定义的命令别称
#因为我经常用到Rscipt命令,所以我将之替换为r
alias r='Rscript'
#导入命令别称
export r
#保存并退出
#直接输入你所定义的命令别称,看是否显示帮助文档
$ r
Usage: /path/to/Rscript [--options] [-e expr [-e expr2 ...] | file] [args]

--options accepted are
  --help              Print usage and exit
  --version           Print version and exit
  --verbose           Print information on progress
  --default-packages=list
                      Where 'list' is a comma-separated set
                        of package names, or 'NULL'
or options to R, in addition to --slave --no-restore, such as
  --save              Do save workspace at the end of the session
  --no-environ        Don't read the site and user environment files
  --no-site-file      Don't read the site-wide Rprofile
  --no-init-file      Don't read the user R profile
  --restore           Do restore previously saved objects at startup
  --vanilla           Combine --no-save, --no-restore, --no-site-file
                        --no-init-file and --no-environ

'file' may contain spaces but not shell metacharacters
Expressions (one or more '-e <expr>') may be used *instead* of 'file'
See also  ?Rscript  from within R
#Looks nice!~~~

19 定义函数

在.bashrc.文件中定义函数,就可以永久使用这个函数了。

# 定义一个相当于回收站的函数re,re就是recycle的意思
function  re {
        mv $1 ~/.recycle_bin
}
# 定义一个能列出当前目录下的文件和文件夹的个数的函数la
function la {
        printf total---\>\>$((ll | sed '1d') | wc -l)\\t
        printf files---\>\>$((ll | sed '1d') | grep '^-' | wc -l)\\t
        printf folders---\>\>$((ll | sed '1d') | grep '^d' | wc -l)\\n
        ll --color=always | grep --colour=never '^-'
        ll --color=always | grep --colour=never '^d'
}

使用示例:

[wangjiahao@submit3 ~]$ la
total--->>10    files--->>1     folders--->>9
-rw-r--r--+ 1 wangjiahao bioinformatics  145 Nov  3 21:53 test1
drwxr-xr-x+ 1 wangjiahao bioinformatics 4096 Oct 29 09:14 code
drwxr-xr-x+ 1 wangjiahao bioinformatics 4096 Oct 25 20:28 EpigeneticDrivers
drwxr-xr-x+ 1 wangjiahao bioinformatics 4096 Oct 25 20:13 iGenome
drwxr-xr-x+ 1 wangjiahao bioinformatics 4096 Nov  2 23:09 LungDx
drwxr-xr-x+ 1 wangjiahao bioinformatics 4096 Oct 29 09:38 Raw_data
drwxr-xr-x+ 1 wangjiahao bioinformatics 4096 Nov  2 22:36 rDNA_Meth
drwxr-xr-x+ 1 wangjiahao bioinformatics 4096 Oct 26 18:06 software
drwxr-xr-x+ 1 wangjiahao bioinformatics 4096 Oct 31 15:35 sstudy
drwxr-xr-x+ 1 wangjiahao bioinformatics 4096 Oct 22 18:14 WPS
[wangjiahao@submit3 ~]$ cd .recycle_bin/
[wangjiahao@submit3 .recycle_bin]$ ls
[wangjiahao@submit3 .recycle_bin]$ re ~/test1
[wangjiahao@submit3 .recycle_bin]$ ls
test1
# 可以看到文件test1就被移到回收站了,这样就可以代替rm命令的不可恢复的删除功能
# 可以利用cron时间表来定期运行回收站清理脚本,不过服务器好像不清理也不会有啥事,嘎嘎~

类似这样可以自定义许多有意思的函数~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,365评论 0 5
  • 本文是对Linux shell编程的一个学习比较,共包括如下章节的内容: 概述 基本语法 结构化语句 函数 小结 ...
    我是老薛阅读 817评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,719评论 0 10
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,086评论 0 0
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,685评论 0 11