诸葛亮承刘备临终所托,安国和北伐(“君才十倍曹丕,必能安国,终定大事”)。临行前诸葛亮作《出师表》“今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。”然后率军北驻汉中,屯于沔阳。
诸葛亮的最初作战构想是横跨荆、益两州,把整个曹魏当成一个大战场,两州同时出军,直捣曹魏中枢,东西两边相互牵制魏军,从而攻克曹魏政治中心长安、许昌和洛阳。蜀汉现在已经失去荆州,应不应该出秦川略关中呢?隆中对之所以出秦川,那是因为有襄樊和新城牵制魏军的东部力量,使魏军不能增援关中而起到阻援的作用,这时出秦川的蜀军围攻长安就具备了“围城阻援”的条件。
如果蜀汉在失去荆州后仍出秦川略关中,就必须以一州之力在围攻长安的同时还必须分兵阻击来自东部魏军的增援,很明显以蜀军的力量是不可能覆盖的。当蜀汉重兵出秦川后,后方空虚,魏军在前线在牵制蜀军的同时,完全还有力量袭击蜀军的后方汉巴,这就导致蜀军前不能克,后无所据的局面,长安之战就变成了第二个襄樊之战。
所以魏延提出“子午谷奇袭”略长安,如韩信故事,与诸葛亮会于潼关的战略,对于已经失去荆州的蜀汉来说是不可行的。而刘邦之所以可以出秦川略关中,那是因为北方是各自为政的诸侯国,项羽的力量在东部,虽有帝王之势,但实际上无法号令诸侯,就连他自己在东部都被齐、燕、赵势力牵制,根本无暇西顾,而单个诸侯势力又不是刘邦集团的对手,所以才被刘邦集团分别击败,可以这么说刘邦取得天下,其实质就是打赢了几个官渡之战。
曹魏是拥有九州之力的政权巩固的国家,完全可以西顾并持续增援,故兵法曰:“一曰度,二曰量,三曰数,四曰称,五曰胜。地生度,度生量,量生数,数生称,称生胜。故胜兵若以镒称铢,败兵若以铢称镒。”蜀汉为一州之力自然要量力而行。曹魏闻诸葛亮率军屯汉中,便知诸葛亮有北伐之意,魏明帝欲征汉中,孙资鉴于曹操汉中关平之战认为不妥,不如据要塞以逸待劳,魏明帝同意。
所以魏明帝在诸葛亮北伐之前就西镇长安(“至太和二年,明帝西征,人有白茂者,遂召还为尚书”)。魏延的子午谷奇袭中提到(“闻夏侯茂少,主婿也,怯而无谋”)的附马夏侯茂,其实已经被魏明帝召回许昌,现在驻长安的是魏明帝及他的中护军曹真和张郃,也就是说关中有备,魏延打算以轻兵奇袭攻其无备的战术落空。
诸葛亮首次北伐,持续的时间很短,过程也非常简单。就是以赵云和邓芝为疑军据箕谷,佯装出斜谷道攻取郿城,魏明帝遣曹真据郿城抵御赵云。诸葛亮亲自率主力出祈山,南安、天水和安定三郡皆反应,到了祁山后,分遣马谡屯街亭,高祥屯柳城。马谡违亮节度,被张郃攻破,高祥被州郡将郭淮所破。同时据箕谷的赵云因为没有戒备也被曹真攻破,由于赵云断后才保全了军资,最后诸葛亮拔西县千户回汉中。蜀军退走后,曹魏收复三郡。
诸葛亮率军出祁山“戎陈整齐,赏罚肃而号令明”,齐整的军队战斗力强,就是常说中的兵锋。当年孙策带着他父亲旧部下“军令整肃,莫敢当其锋”而平定江东,文丑因为军队松散才被曹操歼灭。兵法曰:“无邀正正之旗,无击堂堂之陈”,所以蜀军路过祁山,在没有任何交战的情况下,曹魏的三郡就自动降了,以致关中震响。另外恰巧姜维据外,魏将不开城门,使姜维前后无路可走,只好降蜀汉。
但是诸葛亮对这三郡并没有遣兵策应,可见诸葛亮当时无意占领陇右各郡。诸葛亮率军屯祁山后,遣马谡屯街亭,高祥屯柳城,同时还派了游兵到没有降的陇西郡喊话,喊完话蜀军就离开了。马谡统领王平、张休、李盛和黄袭四部屯街亭,按照王平只领兵千人来看,马谡统兵总共四千,后来拿西县千家与街亭的损失来作比较也足以证明街亭的兵力(“拔西县千家,不补街亭所丧”)。前线街亭的兵力少而且诸葛亮又无意占领各郡,那么前线的作用就不在于阻援,如果要阻援的话,只阻击祁山道是远远不够的,陇右的地方很大,魏军完全可以绕道。所以诸葛亮派兵到街亭和柳城的只是普通的警戒线,其作用是充当主力的眼睛,起到侦察或试探的作用,街亭和柳城距离祁山只有几里路程,能快速收拢到主力部队里。
曹魏知道蜀军在祁山,魏明帝遣张郃率步骑五万赴祁山抵御诸葛亮。“谡舍水上山,举措烦扰,平连规谏谡”,“谡依阻南山,不下据城。郃绝其汲道,击,大破之。”这里的意思说的很明白,前部马谡违背诸葛亮的命令不据下城南昌改上山。兵法曰:“故用兵之法,高陵勿向”,马谡自以为上山是优势,但是兵法还说“凡处军相敌,绝山依谷,视生处高,战隆无登,此处山之军也”,据山的前提必须依谷,必须保证有水源。
张郃率兵来到街亭后,没有马上进攻,兵法说“十则围之”。张郃团团围山,断绝水源,很快山上的蜀兵因为缺水而慌乱,张郃这才率兵攻打蜀军,避开了蜀军初始的锋芒,从而减少自己的伤亡。如果蜀军过万,张郃的五万是敌挡不住乘高而下的蜀军,这和在封闭的城内被五万包围的情况是不同的,因为城口小,城内的军队力量不能得到施展,而现在蜀军是在野外,而且是在占有地理优势的山上,万人是很容易破围到山下取水,而不至于被围死在山上缺水,兵法曰:“五则攻之”,其实这时双方就变成会战,而不是围与被围。“众尽星散,惟平所领千人,鸣鼓自持,魏将张郃疑其伏兵,不往逼也。於是平徐徐收合诸营遗迸,率将士而还。”没有听马谡命令的王平在山下击鼓,张郃擅长料势,不会冒进,听到击鼓声疑为伏兵而撤军,因为诸葛亮主军就在附近几里处,随时可以救街亭。
张郃退走后,王平收拢溃散的各营士兵回祁山,袁子说:“亮之在街亭也,前军大破,亮屯去数里,不救。”正好说明了诸葛亮所派的前线部队并不是要完成什么任务,而是试探魏军的实力。如果要完成什么重要任务,通常先遣部队不利,后备部队必须补上。箕谷赵云,“云、芝兵弱敌强,失利於箕谷,然敛众固守,不至大败”,赵云虽挽救了箕谷的军队而没有大败,但是赵云还是犯了被魏军攻其不备的失误。袁子说:“亮之行军,安静而坚重;安静则易动,坚重则可以进退。”街亭和箕谷的部队收拢后,诸葛亮率军回汉中,顺便拔西县千户,其实天水有不少居民原先住在汉中或武都,只是早前被曹操徒走。
诸葛亮率军回汉中后开检讨会,军人是以服从命令为天职,马谡及其属将通通受到严惩,只有王平受赏升职,王平原先是魏军,在汉中之战时降了蜀汉。高祥在柳城被郭淮破,属于正常被破撤军回祁山,无功无过。箕谷赵云必须承担不戒备之失而被降职。但是诸葛亮又细问箕谷情况,说箕谷既然是被魏军攻其不备,为什么没有出现像街亭那样的溃乱,邓芝说赵云作战勇敢亲自断后,所以军队没有溃散而且还保全了军资。赵云属于经验丰富的老将,勇敢而能应变,稳住军队和保全军资,这属于功,所以诸葛亮要赏赐赵云,但是赵云认为无功而拒绝领赏。诸葛亮为这次的行动承担总责任,自降职。通过这次军事试探,蜀军比起征战已久的魏军来说,单兵作战能力不强,整体素质也不够,所以兵不在多,而在于精,于是诸葛亮精兵减将,治戎讲武,强化军队的素质。
同年底,诸葛亮率军出陈仓,其军事目的很简单,就是配合东吴的诈降计。诈降计的策划人是东吴鄱阳太守周鲂,周鲂首先表明自己降魏的原因,然后告诉曹魏说吴主欲分遣诸将北伐。吴主兴大众,举国悉出,江边空旷,而鄱阳之民,实多愚劲,正好是策应的时侯。然后把吴军的部署告诉了曹魏,说全琮和朱桓攻合肥;诸葛瑾、步骘和朱然攻襄阳;陆议和潘璋讨梅敷;同时还命诸葛亮进指关西牵制等等。
曹魏相信了,所以部署反攻东吴的各路兵马,“太和二年,帝使逵督前将军满宠、东莞太守胡质等四军,从西阳直向东关,曹休从皖,司马宣王从江陵”,“司马宣王治水军於荆州,欲顺沔入江伐吴,诏郃督关中诸军往受节度。至荆州,会冬水浅,大船不得行,乃还屯方城。”也就是说张郃被司马懿召去进攻江陵,只是因为冬天水太浅,大船不能行才没有到达江陵。九月,曹休率军到达皖,贾逵到达关东,关东没有吴军,贾逵扑了个空。其实在关东的吴军早就撤军,全部移至皖城伏击曹休。贾逵心想吴军必在皖城,于是水陆并进,西行二百里,此时曹休已经孤军深入被吴军所困,贾逵见机多设旗鼓为疑兵,吴军闻魏国救兵到马上退走,于是贾逵救出了被困的曹休。
关西这边,诸葛亮也回信诸葛谨:“今使前军斫治此道,以向陈仓,足以扳连贼势,使不得分兵东行者也。”诸葛亮冬天率军出陈仓,与吴国的皖城之战相差三个月。吴蜀相隔数千里,是很难完全配合,五伐的时侯诸葛亮于春出征,东吴五月才出,六月退军。到了蒋琬时期,吴蜀之间的配合就更慢了,以致东吴上下认为蜀汉欲背盟,后来还是孙权明事理“蜀在万里,何知缓急而便出兵乎?”诸葛亮率军出陈仓,只备了二十天粮,攻城时用了大量器材制造声势,并且除了攻击陈仓还攻击了郿城(《通典》:“建兴中,诸葛亮攻陈仓及郿,皆不克”),据说还在附近构筑了军事工事,显然诸葛亮不仅仅是为了牵制和疲惫魏军,顺便还做了其它的事情,陈仓及郿城对诸葛亮来说等同于当初陇右的三郡,意不在取。
魏明帝闻诸葛亮到陈仓,“帝自幸河南城,置酒送郃,遣南北军士三万及分遣武卫、虎贲使卫郃”,魏明帝亲自到荆州,分三万兵诣张郃,同时很重视张郃的安全,派了各种勇士保护张郃。张郃晨夜进至南郑,也就是说张郃从荆州溯汉水到达汉中南郑。这时诸葛亮退军,魏将王双来追击,被诸葛亮歼灭,张郃率军返回京都。所以诸葛亮进指关西,虽说张郃当时没有攻打江陵而留在荆州,但总体上还是达到牵制魏军的作用,至少使魏军东西奔赴起到疲惫魏军的作用。
其实东吴的诈降计只能用一次,再用就没有效了,后来东吴又进行了三次类似的诈降计,魏军再也没有上当。明年春,诸葛亮以陈式为先遣部队攻武都和阴平,武都和阴平在汉中边境,是蜀汉的屏障要塞。郭淮率兵救援,诸葛亮出建威,郭淮担心被截断后路退走。诸葛亮取得武都和阴平后,徒府至南山,督造了两座防御城池汉城和乐城。
这两座城池建成,蜀汉才有了保国的要塞。魏吴东部有长江天险,中部有襄樊和江陵,这些都是构成魏、吴保国的要塞。蜀汉东部有永安,三十多年后罗宪二千兵在此抵御吴将陆抗三万兵。南部有新建造的巴郡大城。北部有四个防御要塞,汉城、乐城、阳平关、阴平桥头,这些关口可以抵御来自北方各条要道的侵袭。阳平关口,当年曹操攻张鲁的就是这个关隘,曹操以为这里空虚,来到后才知是“横山筑城十馀里”,张卫临时有戒备而攻不下。后来曹爽率兵六万从长安走骆谷道到汉中,王平汉中兵不满三万,由于不知道曹爽会攻哪个关口,诸将认为应先守汉城和乐城,对于阳平关口,后备军很快会到。王平则认为必须分兵把守各关口,他自己率兵在后做预备军,哪个关口告急就支援哪个。曹爽攻不下,兵疲退军,增援汉中的费祎率兵截击曹爽,曹爽经苦战才得以逃过,但牛马军资全被蜀军略尽。
三十多年后,蜀汉的防御关口是怎么被破呢?姜维因怕被黄皓谗言而不敢回成都,以屯田为由留在沓上,闻钟会在关中集结重兵,上表刘禅遣张翼、廖化护阳平关口和阴平桥头,防患于未然。黄皓信巫鬼谓敌不自致,所以郡臣不知此事。魏军十六万到了蜀汉门口,钟会率十万攻乐城、汉城和阳平关;邓艾三万牵制沓中的姜维,边将诸葛绪三万趋向阴平桥头,欲绝姜维退路。
姜维下令各关口坚守不出,这时廖化、张翼和董厥率军前来助姜维,魏军攻一个月不下。这时助傅佥守阳关口的副将蒋舒反叛,假意并执意要出城作战,魏军乘关口不备袭城,傅佥被杀,关口被破,魏军涌进。姜维闻关口被破,经一点波折退至阴平欲赴关口,但关口已经无法堵住,只好率军退至白水,遇到廖化、张翼等董厥等,于是合兵退守成都的第二道屏障大巴山的剑阁,钟会被姜维牵制难以攻破,双方相持又一个月。这时在阴平的邓艾没有听钟会的命令合兵于剑阁,而是行无人之地,凿山通道,道路极为惊险,共行了700余里到了江油,邓艾军队本来已经缺粮且力尽,但是守江油的蜀将马邈降魏,使邓艾军得到休整。后诸葛瞻父子被邓艾击败于绵竹,英勇牺牲,刘禅投降。蜀汉要塞之所以被破,是因为有内部反叛,内部混乱是因为政治荒废,政治衰弱再坚固的关口也是没有用的。
诸葛亮也面对曹魏的大举进攻。曹真鉴于蜀军数犯边境,认为不宜被动防御,宜积极反攻,如果魏军数路并进,必能攻克蜀汉。魏明帝同意,于是曹真、张颌率诸军走斜谷道、子午谷,司马懿由荆州溯汉水,偏将郭淮等从陇西或祁山道等数路进攻蜀汉,欲会合于汉中各要塞,形同于钟会与邓艾数路伐蜀。诸葛亮把魏军的进攻当成灭魏军的好机会,直接把消极的防御改为积极的进攻,没有据守要塞,而是先命魏延西上等待来自陇西或祁山的偏军或部分中军,所以没等魏军到达阴平,魏延在南安阳溪就大破郭淮和费瑶等偏军。诸葛亮则率军在平坦的成固和赤坂,等待魏军的数道会合,同时也命李严屯兵二万于汉中作后备。魏军由于下大雨,道路崩坏,军资器械严重受损,士兵疲惫,行军一个月才走了一半的路程,曹魏廷内纷纷请奏召回军队,于是魏军徒劳无功,而诸葛亮也没有交战,曹真回去后不久病亡。曹魏伐蜀,可以说没有察天时,其实发兵前要做到未雨绸缪,查看天时是否有利于行军。